From 9530658c1598e75507f5e366963545b7d5cb6be5 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Tue, 29 Jul 2025 22:16:23 -0400 Subject: [PATCH 01/11] Initial AKit impl Subsystems working: End Effector Drive Vision Elevator Subsystems not working: Algae Remover (add to RobotContainer) Climber NOTE: Vision has jittering problem. --- .github/workflows/build.yml | 18 + .gitignore | 165 +- .vscode/extensions.json | 5 + .../.vscode => .vscode}/launch.json | 8 +- .../.vscode => .vscode}/settings.json | 19 +- .../wpilib_preferences.json | 2 +- 2025-Robot-Code/.gitignore | 187 -- 2025-Robot-Code/build.gradle | 104 -- .../src/main/deploy/andymarklayout.json | 224 --- 2025-Robot-Code/src/main/deploy/hud/LICENSE | 23 - 2025-Robot-Code/src/main/deploy/hud/NT4.js | 555 ------ 2025-Robot-Code/src/main/deploy/hud/index.css | 70 - .../src/main/deploy/hud/index.html | 21 - 2025-Robot-Code/src/main/deploy/hud/index.js | 97 - .../src/main/deploy/hud/msgpack.js | 518 ------ .../pathplanner/autos/Faster Opps Cage.auto | 103 - .../autos/Middle 1pc + 3 Barge.auto | 142 -- .../pathplanner/autos/Opps Cage 3.5pc.auto | 183 -- .../pathplanner/autos/Own Cage 3.5pc.auto | 105 -- .../deploy/pathplanner/autos/Tush Push.auto | 81 - .../src/main/deploy/pathplanner/navgrid.json | 1 - .../main/deploy/pathplanner/paths/AL 2.path | 66 - .../pathplanner/paths/AL to Algae A.path | 93 - .../main/deploy/pathplanner/paths/AR 2.path | 54 - .../pathplanner/paths/Algae A to Barge A.path | 82 - .../pathplanner/paths/Algae B to Barge A.path | 93 - .../paths/Algae E to Barge(not scoring).path | 82 - .../pathplanner/paths/Algae F to Barge F.path | 93 - .../main/deploy/pathplanner/paths/BL 3.path | 66 - .../pathplanner/paths/BL to Coral1 C.path | 82 - .../pathplanner/paths/BL to Coral1.path | 107 -- .../main/deploy/pathplanner/paths/BR 3.path | 68 - .../pathplanner/paths/Barge A to Algae B.path | 104 -- .../pathplanner/paths/Barge A to Algae F.path | 109 -- .../pathplanner/paths/CL to Coral1.path | 91 - .../pathplanner/paths/CR to Coral1.path | 91 - .../pathplanner/paths/Coral1 C to DR.path | 112 -- .../pathplanner/paths/Coral1 to CL.path | 77 - .../pathplanner/paths/Coral1 to CR.path | 107 -- .../pathplanner/paths/Coral1 to DR.path | 91 - .../pathplanner/paths/Coral2 to DL Path.path | 77 - .../pathplanner/paths/Coral2 to EL Path.path | 91 - .../pathplanner/paths/Coral2 to ER Path.path | 91 - .../pathplanner/paths/DR to Coral1.path | 66 - .../main/deploy/pathplanner/paths/EL 1.path | 75 - .../pathplanner/paths/EL to Coral2 Path.path | 91 - .../pathplanner/paths/ER to Algae E.path | 93 - .../pathplanner/paths/ER to Coral2 Path.path | 91 - .../main/deploy/pathplanner/paths/FL 1.path | 75 - .../pathplanner/paths/FL to Coral2 Path.path | 91 - .../main/deploy/pathplanner/paths/FR 1.path | 80 - .../pathplanner/paths/FR to Coral2 Path.path | 91 - .../pathplanner/paths/Fast Opps to BL.path | 77 - .../pathplanner/paths/Push Opp Cage.path | 54 - .../pathplanner/paths/Push Own Cage.path | 54 - .../pathplanner/paths/Return Opp Cage.path | 54 - .../pathplanner/paths/Return Own Cage.path | 54 - .../deploy/pathplanner/paths/Return Reef.path | 75 - .../paths/Reversing Path for AL 2.path | 61 - .../paths/Reversing Path for EL 1.path | 61 - .../paths/Reversing Path for Taxi.path | 61 - .../deploy/pathplanner/paths/Score Reef.path | 75 - .../main/deploy/pathplanner/paths/Taxi.path | 75 - .../deploy/pathplanner/paths/Test Path 1.path | 70 - .../deploy/pathplanner/paths/Test Path 2.path | 54 - .../src/main/deploy/pathplanner/settings.json | 44 - .../src/main/deploy/weldedlayout.json | 242 --- .../src/main/java/frc/robot/AutoPicker.java | 91 - .../src/main/java/frc/robot/Constants.java | 154 -- .../main/java/frc/robot/FieldConstants.java | 222 --- .../src/main/java/frc/robot/Main.java | 15 - .../src/main/java/frc/robot/Robot.java | 102 - .../main/java/frc/robot/RobotContainer.java | 310 --- .../src/main/java/frc/robot/Telemetry.java | 124 -- .../src/main/java/frc/robot/VisionHelper.java | 30 - .../main/java/frc/robot/commands/Autos.java | 21 - .../frc/robot/commands/DriveCommands.java | 139 -- .../java/frc/robot/commands/MobilityAuto.java | 60 - .../frc/robot/generated/TunerConstants.java | 286 --- .../frc/robot/subsystems/AlgaeRemover.java | 83 - .../java/frc/robot/subsystems/Climber.java | 52 - .../subsystems/CommandSwerveDrivetrain.java | 383 ---- .../java/frc/robot/subsystems/Elevator.java | 80 - .../frc/robot/subsystems/EndEffector.java | 249 --- .../java/frc/robot/subsystems/Vision.java | 133 -- .../src/main/java/frc/robot/util/Elastic.java | 390 ---- 2025-Robot-Code/tuner-project.json | 1 - 2025-Robot-Code/tuner-swerve-project.json | 1 - .../vendordeps/PathplannerLib-2025.2.6.json | 38 - .../vendordeps/Phoenix6-frc2025-latest.json | 449 ----- 2025-Robot-Code/vendordeps/photonlib.json | 71 - AdvantageKit-License.md | 26 + AdvantageScope Swerve Calibration.json | 463 +++++ .../WPILib-License.md => WPILib-License.md | 19 +- build.gradle | 219 +++ deploy/pathplanner/navgrid.json | 1 - .../wrapper/gradle-wrapper.jar | Bin .../wrapper/gradle-wrapper.properties | 0 2025-Robot-Code/gradlew => gradlew | 7 +- 2025-Robot-Code/gradlew.bat => gradlew.bat | 24 +- .../settings.gradle => settings.gradle | 0 src/main/deploy/pathplanner/navgrid.json | 1656 +++++++++++++++++ src/main/deploy/pathplanner/settings.json | 32 + src/main/java/frc/robot/Constants.java | 36 + src/main/java/frc/robot/FieldConstants.java | 233 +++ src/main/java/frc/robot/Main.java | 28 + src/main/java/frc/robot/Robot.java | 185 ++ src/main/java/frc/robot/RobotContainer.java | 207 +++ src/main/java/frc/robot/RobotSimState.java | 11 + .../java/frc/robot/autopilot/Quadrant.java | 117 ++ .../frc/robot/commands/DriveCommands.java | 444 +++++ .../frc/robot/generated/TunerConstants.java | 306 +++ .../frc/robot/subsystems/Superstructure.java | 31 + .../robot/subsystems/algae_arm/AlgaeArm.java | 34 + .../algae_arm/AlgaeArmConstants.java | 57 + .../subsystems/algae_arm/AlgaeArmIOSim.java | 55 + .../frc/robot/subsystems/drive/Drive.java | 363 ++++ .../frc/robot/subsystems/drive/GyroIO.java | 24 + .../robot/subsystems/drive/GyroIOPigeon2.java | 61 + .../frc/robot/subsystems/drive/Module.java | 141 ++ .../frc/robot/subsystems/drive/ModuleIO.java | 49 + .../robot/subsystems/drive/ModuleIOSim.java | 136 ++ .../subsystems/drive/ModuleIOTalonFX.java | 263 +++ .../drive/PhoenixOdometryThread.java | 168 ++ .../robot/subsystems/elevator/Elevator.java | 98 + .../elevator/ElevatorConstants.java | 70 + .../robot/subsystems/elevator/ElevatorIO.java | 37 + .../subsystems/elevator/ElevatorIOSim.java | 48 + .../elevator/ElevatorIOTalonFX.java | 165 ++ .../subsystems/elevator/ElevatorUtils.java | 23 + .../subsystems/end_effector/BeamBreakIO.java | 16 + .../end_effector/BeamBreakIODIO.java | 22 + .../end_effector/BeamBreakIOSupplierSim.java | 16 + .../subsystems/end_effector/EndEffector.java | 174 ++ .../end_effector/EndEffectorConstants.java | 18 + .../frc/robot/subsystems/vision/Vision.java | 186 ++ .../subsystems/vision/VisionConstants.java | 66 + .../frc/robot/subsystems/vision/VisionIO.java | 43 + .../vision/VisionIOPhotonVision.java | 125 ++ .../vision/VisionIOPhotonVisionSim.java | 54 + .../java/frc/robot/util/AllianceFlipUtil.java | 10 +- .../java/frc/robot/util/LocalADStarAK.java | 160 ++ .../java/frc/robot/util/PositionUtils.java | 14 + .../frc/robot/util/io/talon/TalonFXIO.java | 34 + .../robot/util/io/talon/TalonFXIOImpl.java | 103 + .../robot/util/io/talon/TalonFXIOInputs.java | 25 + .../robot/util/io/talon/TalonFXIOSimImpl.java | 71 + .../frc/robot/util/phoenix/PhoenixUtil.java | 33 + tuner-swerve-project.json | 244 +++ vendordeps/AdvantageKit.json | 35 + vendordeps/PathplannerLib-2025.2.7.json | 38 + vendordeps/Phoenix6-frc2025-latest.json | 479 +++++ .../WPILibNewCommands.json | 0 vendordeps/photonlib.json | 71 + 154 files changed, 8049 insertions(+), 9731 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .vscode/extensions.json rename {2025-Robot-Code/.vscode => .vscode}/launch.json (51%) rename {2025-Robot-Code/.vscode => .vscode}/settings.json (77%) rename {2025-Robot-Code/.wpilib => .wpilib}/wpilib_preferences.json (98%) delete mode 100644 2025-Robot-Code/.gitignore delete mode 100644 2025-Robot-Code/build.gradle delete mode 100644 2025-Robot-Code/src/main/deploy/andymarklayout.json delete mode 100644 2025-Robot-Code/src/main/deploy/hud/LICENSE delete mode 100644 2025-Robot-Code/src/main/deploy/hud/NT4.js delete mode 100644 2025-Robot-Code/src/main/deploy/hud/index.css delete mode 100644 2025-Robot-Code/src/main/deploy/hud/index.html delete mode 100644 2025-Robot-Code/src/main/deploy/hud/index.js delete mode 100644 2025-Robot-Code/src/main/deploy/hud/msgpack.js delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/autos/Faster Opps Cage.auto delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/autos/Middle 1pc + 3 Barge.auto delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/autos/Opps Cage 3.5pc.auto delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/autos/Own Cage 3.5pc.auto delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/autos/Tush Push.auto delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/navgrid.json delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/AL 2.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/AL to Algae A.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/AR 2.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae A to Barge A.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae B to Barge A.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae E to Barge(not scoring).path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae F to Barge F.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/BL 3.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/BL to Coral1 C.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/BL to Coral1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/BR 3.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Barge A to Algae B.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Barge A to Algae F.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/CL to Coral1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/CR to Coral1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 C to DR.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to CL.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to CR.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to DR.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to DL Path.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to EL Path.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to ER Path.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/DR to Coral1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/EL 1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/EL to Coral2 Path.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/ER to Algae E.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/ER to Coral2 Path.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/FL 1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/FL to Coral2 Path.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/FR 1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/FR to Coral2 Path.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Fast Opps to BL.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Push Opp Cage.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Push Own Cage.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Opp Cage.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Own Cage.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Reef.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for AL 2.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for EL 1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for Taxi.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Score Reef.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Taxi.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Test Path 1.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/paths/Test Path 2.path delete mode 100644 2025-Robot-Code/src/main/deploy/pathplanner/settings.json delete mode 100644 2025-Robot-Code/src/main/deploy/weldedlayout.json delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/AutoPicker.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/Constants.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/FieldConstants.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/Main.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/Robot.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/RobotContainer.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/Telemetry.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/VisionHelper.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/commands/Autos.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/commands/DriveCommands.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/commands/MobilityAuto.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/generated/TunerConstants.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/subsystems/AlgaeRemover.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/subsystems/Climber.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/subsystems/CommandSwerveDrivetrain.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/subsystems/Elevator.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/subsystems/EndEffector.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/subsystems/Vision.java delete mode 100644 2025-Robot-Code/src/main/java/frc/robot/util/Elastic.java delete mode 100644 2025-Robot-Code/tuner-project.json delete mode 100644 2025-Robot-Code/tuner-swerve-project.json delete mode 100644 2025-Robot-Code/vendordeps/PathplannerLib-2025.2.6.json delete mode 100644 2025-Robot-Code/vendordeps/Phoenix6-frc2025-latest.json delete mode 100644 2025-Robot-Code/vendordeps/photonlib.json create mode 100644 AdvantageKit-License.md create mode 100644 AdvantageScope Swerve Calibration.json rename 2025-Robot-Code/WPILib-License.md => WPILib-License.md (60%) create mode 100644 build.gradle delete mode 100644 deploy/pathplanner/navgrid.json rename {2025-Robot-Code/gradle => gradle}/wrapper/gradle-wrapper.jar (100%) rename {2025-Robot-Code/gradle => gradle}/wrapper/gradle-wrapper.properties (100%) rename 2025-Robot-Code/gradlew => gradlew (96%) rename 2025-Robot-Code/gradlew.bat => gradlew.bat (91%) rename 2025-Robot-Code/settings.gradle => settings.gradle (100%) create mode 100644 src/main/deploy/pathplanner/navgrid.json create mode 100644 src/main/deploy/pathplanner/settings.json create mode 100644 src/main/java/frc/robot/Constants.java create mode 100644 src/main/java/frc/robot/FieldConstants.java create mode 100644 src/main/java/frc/robot/Main.java create mode 100644 src/main/java/frc/robot/Robot.java create mode 100644 src/main/java/frc/robot/RobotContainer.java create mode 100644 src/main/java/frc/robot/RobotSimState.java create mode 100644 src/main/java/frc/robot/autopilot/Quadrant.java create mode 100644 src/main/java/frc/robot/commands/DriveCommands.java create mode 100644 src/main/java/frc/robot/generated/TunerConstants.java create mode 100644 src/main/java/frc/robot/subsystems/Superstructure.java create mode 100644 src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java create mode 100644 src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java create mode 100644 src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java create mode 100644 src/main/java/frc/robot/subsystems/drive/Drive.java create mode 100644 src/main/java/frc/robot/subsystems/drive/GyroIO.java create mode 100644 src/main/java/frc/robot/subsystems/drive/GyroIOPigeon2.java create mode 100644 src/main/java/frc/robot/subsystems/drive/Module.java create mode 100644 src/main/java/frc/robot/subsystems/drive/ModuleIO.java create mode 100644 src/main/java/frc/robot/subsystems/drive/ModuleIOSim.java create mode 100644 src/main/java/frc/robot/subsystems/drive/ModuleIOTalonFX.java create mode 100644 src/main/java/frc/robot/subsystems/drive/PhoenixOdometryThread.java create mode 100644 src/main/java/frc/robot/subsystems/elevator/Elevator.java create mode 100644 src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java create mode 100644 src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java create mode 100644 src/main/java/frc/robot/subsystems/elevator/ElevatorIOSim.java create mode 100644 src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java create mode 100644 src/main/java/frc/robot/subsystems/elevator/ElevatorUtils.java create mode 100644 src/main/java/frc/robot/subsystems/end_effector/BeamBreakIO.java create mode 100644 src/main/java/frc/robot/subsystems/end_effector/BeamBreakIODIO.java create mode 100644 src/main/java/frc/robot/subsystems/end_effector/BeamBreakIOSupplierSim.java create mode 100644 src/main/java/frc/robot/subsystems/end_effector/EndEffector.java create mode 100644 src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java create mode 100644 src/main/java/frc/robot/subsystems/vision/Vision.java create mode 100644 src/main/java/frc/robot/subsystems/vision/VisionConstants.java create mode 100644 src/main/java/frc/robot/subsystems/vision/VisionIO.java create mode 100644 src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java create mode 100644 src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java rename {2025-Robot-Code/src => src}/main/java/frc/robot/util/AllianceFlipUtil.java (94%) create mode 100644 src/main/java/frc/robot/util/LocalADStarAK.java create mode 100644 src/main/java/frc/robot/util/PositionUtils.java create mode 100644 src/main/java/frc/robot/util/io/talon/TalonFXIO.java create mode 100644 src/main/java/frc/robot/util/io/talon/TalonFXIOImpl.java create mode 100644 src/main/java/frc/robot/util/io/talon/TalonFXIOInputs.java create mode 100644 src/main/java/frc/robot/util/io/talon/TalonFXIOSimImpl.java create mode 100644 src/main/java/frc/robot/util/phoenix/PhoenixUtil.java create mode 100644 tuner-swerve-project.json create mode 100644 vendordeps/AdvantageKit.json create mode 100644 vendordeps/PathplannerLib-2025.2.7.json create mode 100644 vendordeps/Phoenix6-frc2025-latest.json rename {2025-Robot-Code/vendordeps => vendordeps}/WPILibNewCommands.json (100%) create mode 100644 vendordeps/photonlib.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..02b78d3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,18 @@ +name: Build + +on: + push: + pull_request: + +jobs: + build: + name: Build + runs-on: ubuntu-latest + container: wpilib/roborio-cross-ubuntu:2024-22.04 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Grant execute permission + run: chmod +x gradlew + - name: Build robot code + run: ./gradlew build diff --git a/.gitignore b/.gitignore index 524f096..d012c1d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,41 @@ +# This gitignore has been specially created by the WPILib team. +# If you remove items from this file, intellisense might break. + +### C++ ### +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +### Java ### # Compiled class file *.class @@ -21,4 +59,129 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -replay_pid* + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +### Gradle ### +.gradle +/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +# # VS Code Specific Java Settings +# DO NOT REMOVE .classpath and .project +.classpath +.project +.settings/ +bin/ + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ +out/ + +# Fleet +.fleet + +# Simulation GUI and other tools window save file +networktables.json +simgui*.json +*-window.json + +# Simulation data log directory +logs/ + +# Folder that has CTRE Phoenix Sim device config storage +ctre_sim/ + +# clangd +/.cache +compile_commands.json + +# Version file +src/main/java/frc/robot/BuildConstants.java \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..567056a --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "richardwillis.vscode-spotless-gradle" + ] +} diff --git a/2025-Robot-Code/.vscode/launch.json b/.vscode/launch.json similarity index 51% rename from 2025-Robot-Code/.vscode/launch.json rename to .vscode/launch.json index c9c9713..b8c1920 100644 --- a/2025-Robot-Code/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,21 +1,17 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { "type": "wpilib", "name": "WPILib Desktop Debug", "request": "launch", - "desktop": true, + "desktop": true }, { "type": "wpilib", "name": "WPILib roboRIO Debug", "request": "launch", - "desktop": false, + "desktop": false } ] } diff --git a/2025-Robot-Code/.vscode/settings.json b/.vscode/settings.json similarity index 77% rename from 2025-Robot-Code/.vscode/settings.json rename to .vscode/settings.json index 958a17b..1415ba6 100644 --- a/2025-Robot-Code/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,14 +18,19 @@ { "name": "WPIlibUnitTests", "workingDirectory": "${workspaceFolder}/build/jni/release", - "vmargs": [ "-Djava.library.path=${workspaceFolder}/build/jni/release" ], + "vmargs": [ + "-Djava.library.path=${workspaceFolder}/build/jni/release" + ], "env": { - "LD_LIBRARY_PATH": "${workspaceFolder}/build/jni/release" , + "LD_LIBRARY_PATH": "${workspaceFolder}/build/jni/release", "DYLD_LIBRARY_PATH": "${workspaceFolder}/build/jni/release" } }, + null ], "java.test.defaultConfig": "WPIlibUnitTests", + "spotlessGradle.format.enable": true, + "spotlessGradle.diagnostics.enable": false, "java.import.gradle.annotationProcessing.enabled": false, "java.completion.favoriteStaticMembers": [ "org.junit.Assert.*", @@ -55,7 +60,13 @@ "javax.smartcardio.*", "edu.wpi.first.math.proto.*", "edu.wpi.first.math.**.proto.*", - "edu.wpi.first.math.**.struct.*", + "edu.wpi.first.math.**.struct.*" ], - "wpilib.autoStartRioLog": false + "editor.defaultFormatter": "richardwillis.vscode-spotless-gradle", + "[json]": { + "editor.defaultFormatter": "richardwillis.vscode-spotless-gradle" + }, + "[java]": { + "editor.defaultFormatter": "redhat.java" + } } diff --git a/2025-Robot-Code/.wpilib/wpilib_preferences.json b/.wpilib/wpilib_preferences.json similarity index 98% rename from 2025-Robot-Code/.wpilib/wpilib_preferences.json rename to .wpilib/wpilib_preferences.json index 50bf714..dfb50c5 100644 --- a/2025-Robot-Code/.wpilib/wpilib_preferences.json +++ b/.wpilib/wpilib_preferences.json @@ -3,4 +3,4 @@ "currentLanguage": "java", "projectYear": "2025", "teamNumber": 6324 -} \ No newline at end of file +} diff --git a/2025-Robot-Code/.gitignore b/2025-Robot-Code/.gitignore deleted file mode 100644 index 34cbaac..0000000 --- a/2025-Robot-Code/.gitignore +++ /dev/null @@ -1,187 +0,0 @@ -# This gitignore has been specially created by the WPILib team. -# If you remove items from this file, intellisense might break. - -### C++ ### -# Prerequisites -*.d - -# Compiled Object files -*.slo -*.lo -*.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app - -### Java ### -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -### Linux ### -*~ - -# temporary files which can be created if a process still has a handle open of a deleted file -.fuse_hidden* - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* - -# .nfs files are created when an open file is removed but is still being accessed -.nfs* - -### macOS ### -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### VisualStudioCode ### -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -### Windows ### -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -### Gradle ### -.gradle -/build/ - -# Ignore Gradle GUI config -gradle-app.setting - -# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) -!gradle-wrapper.jar - -# Cache of project -.gradletasknamecache - -# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 -# gradle/wrapper/gradle-wrapper.properties - -# # VS Code Specific Java Settings -# DO NOT REMOVE .classpath and .project -.classpath -.project -.settings/ -bin/ - -# IntelliJ -*.iml -*.ipr -*.iws -.idea/ -out/ - -# Fleet -.fleet - -# Simulation GUI and other tools window save file -networktables.json -simgui.json -*-window.json - -# Simulation data log directory -logs/ - -# Folder that has CTRE Phoenix Sim device config storage -ctre_sim/ - -# clangd -/.cache -compile_commands.json - -# Eclipse generated file for annotation processors -.factorypath diff --git a/2025-Robot-Code/build.gradle b/2025-Robot-Code/build.gradle deleted file mode 100644 index 141b1b7..0000000 --- a/2025-Robot-Code/build.gradle +++ /dev/null @@ -1,104 +0,0 @@ -plugins { - id "java" - id "edu.wpi.first.GradleRIO" version "2025.3.1" -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -def ROBOT_MAIN_CLASS = "frc.robot.Main" - -// Define my targets (RoboRIO) and artifacts (deployable files) -// This is added by GradleRIO's backing project DeployUtils. -deploy { - targets { - roborio(getTargetTypeClass('RoboRIO')) { - // Team number is loaded either from the .wpilib/wpilib_preferences.json - // or from command line. If not found an exception will be thrown. - // You can use getTeamOrDefault(team) instead of getTeamNumber if you - // want to store a team number in this file. - team = project.frc.getTeamNumber() - debug = project.frc.getDebugOrDefault(false) - - artifacts { - // First part is artifact name, 2nd is artifact type - // getTargetTypeClass is a shortcut to get the class type using a string - - frcJava(getArtifactTypeClass('FRCJavaArtifact')) { - } - - // Static files artifact - frcStaticFileDeploy(getArtifactTypeClass('FileTreeArtifact')) { - files = project.fileTree('src/main/deploy') - directory = '/home/lvuser/deploy' - deleteOldFiles = false // Change to true to delete files on roboRIO that no - // longer exist in deploy directory of this project - } - } - } - } -} - -def deployArtifact = deploy.targets.roborio.artifacts.frcJava - -// Set to true to use debug for JNI. -wpi.java.debugJni = false - -// Set this to true to enable desktop support. -def includeDesktopSupport = true - -// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries. -// Also defines JUnit 5. -dependencies { - annotationProcessor wpi.java.deps.wpilibAnnotations() - implementation wpi.java.deps.wpilib() - implementation wpi.java.vendor.java() - - roborioDebug wpi.java.deps.wpilibJniDebug(wpi.platforms.roborio) - roborioDebug wpi.java.vendor.jniDebug(wpi.platforms.roborio) - - roborioRelease wpi.java.deps.wpilibJniRelease(wpi.platforms.roborio) - roborioRelease wpi.java.vendor.jniRelease(wpi.platforms.roborio) - - nativeDebug wpi.java.deps.wpilibJniDebug(wpi.platforms.desktop) - nativeDebug wpi.java.vendor.jniDebug(wpi.platforms.desktop) - simulationDebug wpi.sim.enableDebug() - - nativeRelease wpi.java.deps.wpilibJniRelease(wpi.platforms.desktop) - nativeRelease wpi.java.vendor.jniRelease(wpi.platforms.desktop) - simulationRelease wpi.sim.enableRelease() - - testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' -} - -test { - useJUnitPlatform() - systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' -} - -// Simulation configuration (e.g. environment variables). -wpi.sim.addGui().defaultEnabled = true -wpi.sim.addDriverstation() - -// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar') -// in order to make them all available at runtime. Also adding the manifest so WPILib -// knows where to look for our Robot Class. -jar { - from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } - from sourceSets.main.allSource - manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS) - duplicatesStrategy = DuplicatesStrategy.INCLUDE -} - -// Configure jar and deploy tasks -deployArtifact.jarTask = jar -wpi.java.configureExecutableTasks(jar) -wpi.java.configureTestTasks(test) - -// Configure string concat to always inline compile -tasks.withType(JavaCompile) { - options.compilerArgs.add '-XDstringConcat=inline' -} diff --git a/2025-Robot-Code/src/main/deploy/andymarklayout.json b/2025-Robot-Code/src/main/deploy/andymarklayout.json deleted file mode 100644 index b12a155..0000000 --- a/2025-Robot-Code/src/main/deploy/andymarklayout.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "tags": [ - { - "ID": 6, - "pose": { - "translation": { - "x": 13.474446, - "y": 3.3012379999999997, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": -0.8660254037844387, - "X": -0.0, - "Y": 0.0, - "Z": 0.49999999999999994 - } - } - } - }, - { - "ID": 7, - "pose": { - "translation": { - "x": 13.890498, - "y": 4.0208200000000005, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 1.0, - "X": 0.0, - "Y": 0.0, - "Z": 0.0 - } - } - } - }, - { - "ID": 8, - "pose": { - "translation": { - "x": 13.474446, - "y": 4.740402, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 0.8660254037844387, - "X": 0.0, - "Y": 0.0, - "Z": 0.49999999999999994 - } - } - } - }, - { - "ID": 9, - "pose": { - "translation": { - "x": 12.643358, - "y": 4.740402, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 0.5000000000000001, - "X": 0.0, - "Y": 0.0, - "Z": 0.8660254037844386 - } - } - } - }, - { - "ID": 10, - "pose": { - "translation": { - "x": 12.227305999999999, - "y": 4.0208200000000005, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 6.123233995736766e-17, - "X": 0.0, - "Y": 0.0, - "Z": 1.0 - } - } - } - }, - { - "ID": 11, - "pose": { - "translation": { - "x": 12.643358, - "y": 3.3012379999999997, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": -0.4999999999999998, - "X": -0.0, - "Y": 0.0, - "Z": 0.8660254037844387 - } - } - } - }, - { - "ID": 17, - "pose": { - "translation": { - "x": 4.073905999999999, - "y": 3.3012379999999997, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": -0.4999999999999998, - "X": -0.0, - "Y": 0.0, - "Z": 0.8660254037844387 - } - } - } - }, - { - "ID": 18, - "pose": { - "translation": { - "x": 3.6576, - "y": 4.0208200000000005, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 6.123233995736766e-17, - "X": 0.0, - "Y": 0.0, - "Z": 1.0 - } - } - } - }, - { - "ID": 19, - "pose": { - "translation": { - "x": 4.073905999999999, - "y": 4.740402, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 0.5000000000000001, - "X": 0.0, - "Y": 0.0, - "Z": 0.8660254037844386 - } - } - } - }, - { - "ID": 20, - "pose": { - "translation": { - "x": 4.904739999999999, - "y": 4.740402, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 0.8660254037844387, - "X": 0.0, - "Y": 0.0, - "Z": 0.49999999999999994 - } - } - } - }, - { - "ID": 21, - "pose": { - "translation": { - "x": 5.321046, - "y": 4.0208200000000005, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 1.0, - "X": 0.0, - "Y": 0.0, - "Z": 0.0 - } - } - } - }, - { - "ID": 22, - "pose": { - "translation": { - "x": 4.904739999999999, - "y": 3.3012379999999997, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": -0.8660254037844387, - "X": -0.0, - "Y": 0.0, - "Z": 0.49999999999999994 - } - } - } - } - ], - "field": { - "length": 17.548, - "width": 8.042 - } -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/hud/LICENSE b/2025-Robot-Code/src/main/deploy/hud/LICENSE deleted file mode 100644 index 9365a1d..0000000 --- a/2025-Robot-Code/src/main/deploy/hud/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -NT4.js and msgpack.js are covered by the following license: - -MIT License - -Copyright (c) 2025 FRC 6328 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/hud/NT4.js b/2025-Robot-Code/src/main/deploy/hud/NT4.js deleted file mode 100644 index 73d0dcc..0000000 --- a/2025-Robot-Code/src/main/deploy/hud/NT4.js +++ /dev/null @@ -1,555 +0,0 @@ -// Copyright (c) 2025 FRC 6328 -// http://github.com/Mechanical-Advantage -// -// Use of this source code is governed by an MIT-style -// license that can be found in the LICENSE file at -// the root directory of this project. - -import { serialize, deserialize } from "./msgpack.js"; -const typestrIdxLookup = { - boolean: 0, - double: 1, - int: 2, - float: 3, - string: 4, - json: 4, - raw: 5, - rpc: 5, - msgpack: 5, - protobuf: 5, - "boolean[]": 16, - "double[]": 17, - "int[]": 18, - "float[]": 19, - "string[]": 20, -}; -class NT4_Subscription { - uid = -1; - topics = new Set(); - options = new NT4_SubscriptionOptions(); - toSubscribeObj() { - return { - topics: Array.from(this.topics), - subuid: this.uid, - options: this.options.toObj(), - }; - } - toUnsubscribeObj() { - return { - subuid: this.uid, - }; - } -} -class NT4_SubscriptionOptions { - periodic = 0.1; - all = false; - topicsOnly = false; - prefix = false; - toObj() { - return { - periodic: this.periodic, - all: this.all, - topicsonly: this.topicsOnly, - prefix: this.prefix, - }; - } -} -export class NT4_Topic { - uid = -1; // "id" if server topic, "pubuid" if published - name = ""; - type = ""; - properties = {}; - toPublishObj() { - return { - name: this.name, - type: this.type, - pubuid: this.uid, - properties: this.properties, - }; - } - toUnpublishObj() { - return { - pubuid: this.uid, - }; - } - getTypeIdx() { - if (this.type in typestrIdxLookup) { - return typestrIdxLookup[this.type]; - } else { - return 5; // Default to binary - } - } -} -export class NT4_Client { - appName; - onTopicAnnounce; - onTopicUnannounce; - onNewTopicData; - onConnect; - onDisconnect; - serverBaseAddr; - ws = null; - serverAddr = ""; - serverConnectionActive = false; - serverConnectionRequested = false; - serverTimeOffset_us = null; - networkLatency_us = 0; - rxLengthCounter = 0; - subscriptions = new Map(); - publishedTopics = new Map(); - serverTopics = new Map(); - /** - * Creates a new NT4 client without connecting. - * @param serverAddr Network address of NT4 server - * @param appName Identifier for this client (does not need to be unique). - * @param onTopicAnnounce Gets called when server announces enough topics to form a new signal - * @param onTopicUnannounce Gets called when server unannounces any part of a signal - * @param onNewTopicData Gets called when any new data is available - * @param onConnect Gets called once client completes initial handshake with server - * @param onDisconnect Gets called once client detects server has disconnected - */ - constructor( - serverAddr, - appName, - onTopicAnnounce, - onTopicUnannounce, - onNewTopicData, - onConnect, - onDisconnect - ) { - this.serverBaseAddr = serverAddr; - this.appName = appName; - this.onTopicAnnounce = onTopicAnnounce; - this.onTopicUnannounce = onTopicUnannounce; - this.onNewTopicData = onNewTopicData; - this.onConnect = onConnect; - this.onDisconnect = onDisconnect; - setInterval(() => { - // Update timestamp - this.ws_sendTimestamp(); - // Log bitrate - let bitrateKbPerSec = ((this.rxLengthCounter / 1000) * 8) / 5; - this.rxLengthCounter = 0; - console.log( - "[NT4] Bitrate: " + Math.round(bitrateKbPerSec).toString() + " kb/s" - ); - }, 5000); - } - ////////////////////////////////////////////////////////////// - // PUBLIC API - /** Starts the connection. The client will reconnect automatically when disconnected. */ - connect() { - if (!this.serverConnectionRequested) { - this.serverConnectionRequested = true; - this.ws_connect(); - } - } - /** Terminates the connection. */ - disconnect() { - if (this.serverConnectionRequested) { - this.serverConnectionRequested = false; - if (this.serverConnectionActive && this.ws) { - this.ws.close(); - } - } - } - /** - * Add a new subscription, reading value updates - * @param topicPatterns A list of topics or prefixes to include in the subscription. - * @param prefixMode If true, use patterns as prefixes. If false, only subscribe to topics that are an exact match. - * @param sendAll If true, send all values. If false, only send the most recent value. - * @param periodic How frequently to send updates (applies regardless of "sendAll" option) - * @returns A subscription ID that can be used to unsubscribe. - */ - subscribe(topicPatterns, prefixMode, sendAll = false, periodic = 0.1) { - let newSub = new NT4_Subscription(); - newSub.uid = this.getNewUID(); - newSub.topics = new Set(topicPatterns); - newSub.options.prefix = prefixMode; - newSub.options.all = sendAll; - newSub.options.periodic = periodic; - this.subscriptions.set(newSub.uid, newSub); - if (this.serverConnectionActive) { - this.ws_subscribe(newSub); - } - return newSub.uid; - } - /** - * Add a new subscription, reading only topic announcements (not values). - * @param topicPatterns A list of topics or prefixes to include in the subscription. - * @param prefixMode If true, use patterns as prefixes. If false, only subscribe to topics that are an exact match. - * @returns A subscription ID that can be used to unsubscribe. - */ - subscribeTopicsOnly(topicPatterns, prefixMode) { - let newSub = new NT4_Subscription(); - newSub.uid = this.getNewUID(); - newSub.topics = new Set(topicPatterns); - newSub.options.prefix = prefixMode; - newSub.options.topicsOnly = true; - this.subscriptions.set(newSub.uid, newSub); - if (this.serverConnectionActive) { - this.ws_subscribe(newSub); - } - return newSub.uid; - } - /** Given an existing subscription, unsubscribe from it. */ - unsubscribe(subscriptionId) { - let subscription = this.subscriptions.get(subscriptionId); - if (!subscription) { - throw 'Unknown subscription ID "' + subscriptionId + '"'; - } - this.subscriptions.delete(subscriptionId); - if (this.serverConnectionActive) { - this.ws_unsubscribe(subscription); - } - } - /** Unsubscribe from all current subscriptions. */ - clearAllSubscriptions() { - for (const subscriptionId of this.subscriptions.keys()) { - this.unsubscribe(subscriptionId); - } - } - /** - * Set the properties of a particular topic. - * @param topic The topic to update - * @param properties The set of new properties - */ - setProperties(topic, properties) { - // Update local topics - let updateTopic = (toUpdate) => { - for (const key of Object.keys(properties)) { - let value = properties[key]; - if (value === null) { - delete toUpdate.properties[key]; - } else { - toUpdate.properties[key] = value; - } - } - }; - let publishedTopic = this.publishedTopics.get(topic); - if (publishedTopic) updateTopic(publishedTopic); - let serverTopic = this.serverTopics.get(topic); - if (serverTopic) updateTopic(serverTopic); - // Send new properties to server - if (this.serverConnectionActive) { - this.ws_setproperties(topic, properties); - } - } - /** Set whether a topic is persistent. - * - * If true, the last set value will be periodically saved to - * persistent storage on the server and be restored during server - * startup. Topics with this property set to true will not be - * deleted by the server when the last publisher stops publishing. - */ - setPersistent(topic, isPersistent) { - this.setProperties(topic, { persistent: isPersistent }); - } - /** Set whether a topic is retained. - * - * Topics with this property set to true will not be deleted by - * the server when the last publisher stops publishing. - */ - setRetained(topic, isRetained) { - this.setProperties(topic, { retained: isRetained }); - } - /** Publish a topic from this client with the provided name and type. Can be a new or existing. */ - publishTopic(topic, type) { - if (this.publishedTopics.has(topic)) { - return; - } - let newTopic = new NT4_Topic(); - newTopic.name = topic; - newTopic.uid = this.getNewUID(); - newTopic.type = type; - this.publishedTopics.set(topic, newTopic); - if (this.serverConnectionActive) { - this.ws_publish(newTopic); - } - return; - } - /** Unpublish a previously-published topic from this client. */ - unpublishTopic(topic) { - let topicObj = this.publishedTopics.get(topic); - if (!topicObj) { - throw 'Topic "' + topic + '" not found'; - } - this.publishedTopics.delete(topic); - if (this.serverConnectionActive) { - this.ws_unpublish(topicObj); - } - } - /** Send some new value to the server. The timestamp is whatever the current time is. */ - addSample(topic, value) { - let timestamp = this.getServerTime_us(); - if (timestamp === null) timestamp = 0; - this.addTimestampedSample(topic, timestamp, value); - } - /** Send some new timestamped value to the server. */ - addTimestampedSample(topic, timestamp, value) { - let topicObj = this.publishedTopics.get(topic); - if (!topicObj) { - throw 'Topic "' + topic + '" not found'; - } - let txData = serialize([ - topicObj.uid, - timestamp, - topicObj.getTypeIdx(), - value, - ]); - this.ws_sendBinary(txData); - } - ////////////////////////////////////////////////////////////// - // Server/Client Time Sync Handling - /** Returns the current client time in microseconds. */ - getClientTime_us() { - return new Date().getTime() * 1000; - } - /** Returns the current server time in microseconds (or null if unknown). */ - getServerTime_us(clientTime) { - if (this.serverTimeOffset_us === null) { - return null; - } else { - return ( - (clientTime === undefined ? this.getClientTime_us() : clientTime) + - this.serverTimeOffset_us - ); - } - } - /** Returns the current network latency in microseconds */ - getNetworkLatency_us() { - return this.networkLatency_us; - } - ws_sendTimestamp() { - let timeToSend = this.getClientTime_us(); - let txData = serialize([-1, 0, typestrIdxLookup["int"], timeToSend]); - this.ws_sendBinary(txData); - } - ws_handleReceiveTimestamp(serverTimestamp, clientTimestamp) { - let rxTime = this.getClientTime_us(); - // Recalculate server/client offset based on round trip time - let rtt = rxTime - clientTimestamp; - this.networkLatency_us = rtt / 2.0; - let serverTimeAtRx = serverTimestamp + this.networkLatency_us; - this.serverTimeOffset_us = serverTimeAtRx - rxTime; - console.log( - "[NT4] New server time: " + - (this.getServerTime_us() / 1000000.0).toString() + - "s with " + - (this.networkLatency_us / 1000.0).toString() + - "ms latency" - ); - } - ////////////////////////////////////////////////////////////// - // Websocket Message Send Handlers - ws_subscribe(subscription) { - this.ws_sendJSON("subscribe", subscription.toSubscribeObj()); - } - ws_unsubscribe(subscription) { - this.ws_sendJSON("unsubscribe", subscription.toUnsubscribeObj()); - } - ws_publish(topic) { - this.ws_sendJSON("publish", topic.toPublishObj()); - } - ws_unpublish(topic) { - this.ws_sendJSON("unpublish", topic.toUnpublishObj()); - } - ws_setproperties(topic, newProperties) { - this.ws_sendJSON("setproperties", { - name: topic, - update: newProperties, - }); - } - ws_sendJSON(method, params) { - if (this.ws && this.ws.readyState === WebSocket.OPEN) { - this.ws.send( - JSON.stringify([ - { - method: method, - params: params, - }, - ]) - ); - } - } - ws_sendBinary(data) { - if (this.ws && this.ws.readyState === WebSocket.OPEN) { - this.ws.send(data); - } - } - ////////////////////////////////////////////////////////////// - // Websocket connection Maintenance - ws_onOpen() { - // Set the flag allowing general server communication - this.serverConnectionActive = true; - console.log('[NT4] Connected with identity "' + this.appName + '"'); - // Sync timestamps - this.ws_sendTimestamp(); - // Publish any existing topics - for (const topic of this.publishedTopics.values()) { - this.ws_publish(topic); - } - // Subscribe to existing subscriptions - for (const subscription of this.subscriptions.values()) { - this.ws_subscribe(subscription); - } - // User connection-opened hook - this.onConnect(); - } - ws_onClose(event) { - // Clear flags to stop server communication - this.ws = null; - this.serverConnectionActive = false; - // User connection-closed hook - this.onDisconnect(); - // Clear out any local cache of server state - this.serverTopics.clear(); - if (event.reason !== "") { - console.log("[NT4] Socket is closed: ", event.reason); - } - if (this.serverConnectionRequested) { - setTimeout(() => this.ws_connect(), 500); - } - } - ws_onError() { - if (this.ws) this.ws.close(); - } - ws_onMessage(event) { - if (typeof event.data === "string") { - // JSON array - this.rxLengthCounter += event.data.length; - let msgData = JSON.parse(event.data); - if (!Array.isArray(msgData)) { - console.warn( - "[NT4] Ignoring text message, JSON parsing did not produce an array at the top level." - ); - return; - } - msgData.forEach((msg) => { - // Validate proper format of message - if (typeof msg !== "object") { - console.warn( - "[NT4] Ignoring text message, JSON parsing did not produce an object." - ); - return; - } - if (!("method" in msg) || !("params" in msg)) { - console.warn( - "[NT4] Ignoring text message, JSON parsing did not find all required fields." - ); - return; - } - let method = msg["method"]; - let params = msg["params"]; - if (typeof method !== "string") { - console.warn( - '[NT4] Ignoring text message, JSON parsing found "method", but it wasn\'t a string.' - ); - return; - } - if (typeof params !== "object") { - console.warn( - '[NT4] Ignoring text message, JSON parsing found "params", but it wasn\'t an object.' - ); - return; - } - // Message validates reasonably, switch based on supported methods - if (method === "announce") { - let newTopic = new NT4_Topic(); - newTopic.uid = params.id; - newTopic.name = params.name; - newTopic.type = params.type; - newTopic.properties = params.properties; - this.serverTopics.set(newTopic.name, newTopic); - this.onTopicAnnounce(newTopic); - } else if (method === "unannounce") { - let removedTopic = this.serverTopics.get(params.name); - if (!removedTopic) { - console.warn( - "[NT4] Ignoring unannounce, topic was not previously announced." - ); - return; - } - this.serverTopics.delete(removedTopic.name); - this.onTopicUnannounce(removedTopic); - } else if (method === "properties") { - let topic = this.serverTopics.get(params.name); - if (!topic) { - console.warn( - "[NT4] Ignoring set properties, topic was not previously announced." - ); - return; - } - for (const key of Object.keys(params.update)) { - let value = params.update[key]; - if (value === null) { - delete topic.properties[key]; - } else { - topic.properties[key] = value; - } - } - } else { - console.warn( - "[NT4] Ignoring text message - unknown method " + method - ); - return; - } - }); - } else { - // MSGPack - this.rxLengthCounter += event.data.byteLength; - deserialize(event.data, { multiple: true }).forEach((unpackedData) => { - let topicID = unpackedData[0]; - let timestamp_us = unpackedData[1]; - let typeIdx = unpackedData[2]; - let value = unpackedData[3]; - if (topicID >= 0) { - let topic = null; - for (let serverTopic of this.serverTopics.values()) { - if (serverTopic.uid === topicID) { - topic = serverTopic; - break; - } - } - if (!topic) { - console.warn( - "[NT4] Ignoring binary data - unknown topic ID " + - topicID.toString() - ); - return; - } - this.onNewTopicData(topic, timestamp_us, value); - } else if (topicID === -1) { - this.ws_handleReceiveTimestamp(timestamp_us, value); - } else { - console.warn( - "[NT4] Ignoring binary data - invalid topic ID " + - topicID.toString() - ); - } - }); - } - } - ws_connect() { - let port = 5810; - let prefix = "ws://"; - this.serverAddr = - prefix + - this.serverBaseAddr + - ":" + - port.toString() + - "/nt/" + - this.appName; - this.ws = new WebSocket(this.serverAddr, "networktables.first.wpi.edu"); - this.ws.binaryType = "arraybuffer"; - this.ws.addEventListener("open", () => this.ws_onOpen()); - this.ws.addEventListener("message", (event) => this.ws_onMessage(event)); - this.ws.addEventListener("close", (event) => this.ws_onClose(event)); - this.ws.addEventListener("error", () => this.ws_onError()); - } - ////////////////////////////////////////////////////////////// - // General utilities - getNewUID() { - return Math.floor(Math.random() * 99999999); - } -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/hud/index.css b/2025-Robot-Code/src/main/deploy/hud/index.css deleted file mode 100644 index 4ff643d..0000000 --- a/2025-Robot-Code/src/main/deploy/hud/index.css +++ /dev/null @@ -1,70 +0,0 @@ -body { - margin: 0; - height: 100vh; - display: flex; - justify-content: center; - align-items: center; - position: relative; -} - -.hexagon { - height: calc(40vmin); /* height = width * sqrt(3)/2 */ - aspect-ratio: 1/cos(30deg); - background-color: dodgerblue; - clip-path: polygon(50% -50%,100% 50%,50% 150%,0 50%); -} - -.triangle { - position: absolute; - width: 0; - height: 0; - border-style: solid; -} - -.triangle.top { - border-width: 0 10vmin 10vmin 10vmin; - border-color: transparent transparent gray transparent; - left: 50%; - transform: translateX(-50%) rotate(180deg); - top: calc(50% - 35vmin); /* Adjust the distance from the hexagon */ -} - -.triangle.top-right { - border-width: 0 10vmin 10vmin 10vmin; - border-color: transparent transparent gray transparent; - left: calc(100% - 5vmin); - top: calc(25% + 5vmin); - transform: rotate(-120deg); -} - -.triangle.top-left { - border-width: 0 10vmin 10vmin 10vmin; - border-color: transparent transparent gray transparent; - left: calc(0% - 15vmin); - top: calc(25% + 5vmin); - transform: rotate(120deg); -} - -.triangle.bottom { - border-width: 0 10vmin 10vmin 10vmin; - border-color: transparent transparent gray transparent; - left: 50%; - transform: translateX(-50%); - top: calc(50% + 25vmin) -} - -.triangle.bottom-left { - border-width: 0 10vmin 10vmin 10vmin; - border-color: transparent transparent gray transparent; - left: calc(0% - 15vmin); - top: calc(75% - 15vmin); - transform: rotate(60deg); -} - -.triangle.bottom-right { - border-width: 0 10vmin 10vmin 10vmin; - border-color: transparent transparent gray transparent; - left: calc(100% - 5vmin); - top: calc(75% - 15vmin); - transform: rotate(-60deg); -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/hud/index.html b/2025-Robot-Code/src/main/deploy/hud/index.html deleted file mode 100644 index 3729e8e..0000000 --- a/2025-Robot-Code/src/main/deploy/hud/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - HUD — FRC 6324 - - -
-
-
-
-
-
-
- - \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/hud/index.js b/2025-Robot-Code/src/main/deploy/hud/index.js deleted file mode 100644 index 6c9f227..0000000 --- a/2025-Robot-Code/src/main/deploy/hud/index.js +++ /dev/null @@ -1,97 +0,0 @@ -import { NT4_Client } from './NT4.js'; - -const reefTopicName = "/SmartDashboard/ReefFace"; -const selectedReefColor = "transparent transparent #B00020 transparent" -const unselectedReefColor = "transparent transparent transparent transparent" - -console.log("Connecting to NT....") -const ntClient = new NT4_Client( - window.location.hostname, - "ReefView", - (topic) => { - - }, - (topic) => { - - }, - (topic, timestamp, value) => { - if (topic.name === reefTopicName) { - currentFace = value; - } else { - return - } - document.body.style.backgroundColor = "white"; - }, - (topic) => { - - }, - (topic) => { - document.body.style.backgroundColor = "#36454F" - console.log("Connection to NetworkTables has been lost!"); - } -); - -window.addEventListener("load", () => { - ntClient.subscribe( - [ - reefTopicName, - ], - false, - false, - 0.02 - ); - ntClient.connect(); -}); - -let currentFace = "2"; -function updateUI() { - Array.from(document.getElementsByClassName("triangle")).forEach( - (triangle, index) => { - switch(currentFace) { - case "1": - if (index === 0) { - triangle.style.borderColor = selectedReefColor; - } else { - triangle.style.borderColor = unselectedReefColor; - } - break; - case "2": - if (index === 1) { - triangle.style.borderColor = selectedReefColor - } else { - triangle.style.borderColor = unselectedReefColor; - } - break; - case "3": - if (index === 2) { - triangle.style.borderColor = selectedReefColor; - } else { - triangle.style.borderColor = unselectedReefColor; - } - break; - case "4": - if (index === 3) { - triangle.style.borderColor = selectedReefColor; - } else { - triangle.style.borderColor = unselectedReefColor; - } - break; - case "5": - if (index === 4) { - triangle.style.borderColor = selectedReefColor; - } else { - triangle.style.borderColor = unselectedReefColor; - } - break; - case "6": - if (index === 5) { - triangle.style.borderColor = selectedReefColor; - } else { - triangle.style.borderColor = unselectedReefColor; - } - break; - default: - triangle.style.borderColor = unselectedReefColor; - } - }); -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/hud/msgpack.js b/2025-Robot-Code/src/main/deploy/hud/msgpack.js deleted file mode 100644 index 22157b4..0000000 --- a/2025-Robot-Code/src/main/deploy/hud/msgpack.js +++ /dev/null @@ -1,518 +0,0 @@ -// Serializes a value to a MessagePack byte array. -// -// data: The value to serialize. This can be a scalar, array or object. -// options: An object that defined additional options. -// - multiple: Indicates whether multiple values in data are concatenated to multiple MessagePack arrays. -// - invalidTypeReplacement: The value that is used to replace values of unsupported types, or a function that returns such a value, given the original value as parameter. -export function serialize(data, options) { - if (options && options.multiple && !Array.isArray(data)) { - throw new Error("Invalid argument type: Expected an Array to serialize multiple values."); - } - const pow32 = 0x100000000; // 2^32 - let floatBuffer, floatView; - let array = new Uint8Array(128); - let length = 0; - - let th = ""; - if (options && options.typeHint) { - th = options.typeHint; - } - - if (options && options.multiple) { - for (let i = 0; i < data.length; i++) { - append(data[i], false, th); - } - } else { - append(data, false, th); - } - return array.subarray(0, length); - - function append(data, isReplacement, th) { - switch (typeof data) { - case "undefined": - appendNull(data); - break; - case "boolean": - appendBoolean(data); - break; - case "number": - appendNumber(data, th); - break; - case "string": - appendString(data); - break; - case "object": - if (data === null) appendNull(data); - else if (data instanceof Date) appendDate(data); - else if (Array.isArray(data)) appendArray(data); - else if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) appendBinArray(data); - else if ( - data instanceof Int8Array || - data instanceof Int16Array || - data instanceof Uint16Array || - data instanceof Int32Array || - data instanceof Uint32Array || - data instanceof Float32Array || - data instanceof Float64Array - ) - appendArray(data); - else appendObject(data); - break; - default: - if (!isReplacement && options && options.invalidTypeReplacement) { - if (typeof options.invalidTypeReplacement === "function") - append(options.invalidTypeReplacement(data), true, th); - else append(options.invalidTypeReplacement, true, th); - } else { - throw new Error("Invalid argument type: The type '" + typeof data + "' cannot be serialized."); - } - } - } - - function appendNull(data) { - appendByte(0xc0); - } - - function appendBoolean(data) { - appendByte(data ? 0xc3 : 0xc2); - } - - function appendNumber(data, th) { - const isInteger = - th === "int" || (isFinite(data) && Math.floor(data) === data && th !== "double" && th !== "float"); - if (isInteger) { - // Integer - if (data >= 0 && data <= 0x7f) { - appendByte(data); - } else if (data < 0 && data >= -0x20) { - appendByte(data); - } else if (data > 0 && data <= 0xff) { - // uint8 - appendBytes([0xcc, data]); - } else if (data >= -0x80 && data <= 0x7f) { - // int8 - appendBytes([0xd0, data]); - } else if (data > 0 && data <= 0xffff) { - // uint16 - appendBytes([0xcd, data >>> 8, data]); - } else if (data >= -0x8000 && data <= 0x7fff) { - // int16 - appendBytes([0xd1, data >>> 8, data]); - } else if (data > 0 && data <= 0xffffffff) { - // uint32 - appendBytes([0xce, data >>> 24, data >>> 16, data >>> 8, data]); - } else if (data >= -0x80000000 && data <= 0x7fffffff) { - // int32 - appendBytes([0xd2, data >>> 24, data >>> 16, data >>> 8, data]); - } else if (data > 0 && data <= 0xffffffffffffffff) { - // uint64 - // Split 64-bit number into two 32-bit numbers because JavaScript only regards - // 32 bits for bitwise operations. - let hi = data / pow32; - let lo = data % pow32; - appendBytes([0xd3, hi >>> 24, hi >>> 16, hi >>> 8, hi, lo >>> 24, lo >>> 16, lo >>> 8, lo]); - } else if (data >= -0x8000000000000000 && data <= 0x7fffffffffffffff) { - // int64 - appendByte(0xd3); - appendInt64(data); - } else if (data < 0) { - // below int64 - appendBytes([0xd3, 0x80, 0, 0, 0, 0, 0, 0, 0]); - } else { - // above uint64 - appendBytes([0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]); - } - } else { - // Float - if (!floatView) { - floatBuffer = new ArrayBuffer(8); - floatView = new DataView(floatBuffer); - } - floatView.setFloat64(0, data); - appendByte(0xcb); - appendBytes(new Uint8Array(floatBuffer)); - } - } - - function appendString(data) { - let bytes = encodeUtf8(data); - let length = bytes.length; - - if (length <= 0x1f) appendByte(0xa0 + length); - else if (length <= 0xff) appendBytes([0xd9, length]); - else if (length <= 0xffff) appendBytes([0xda, length >>> 8, length]); - else appendBytes([0xdb, length >>> 24, length >>> 16, length >>> 8, length]); - - appendBytes(bytes); - } - - function appendArray(data) { - let length = data.length; - - if (length <= 0xf) appendByte(0x90 + length); - else if (length <= 0xffff) appendBytes([0xdc, length >>> 8, length]); - else appendBytes([0xdd, length >>> 24, length >>> 16, length >>> 8, length]); - - for (let index = 0; index < length; index++) { - append(data[index]); - } - } - - function appendBinArray(data) { - let length = data.length; - - if (length <= 0xf) appendBytes([0xc4, length]); - else if (length <= 0xffff) appendBytes([0xc5, length >>> 8, length]); - else appendBytes([0xc6, length >>> 24, length >>> 16, length >>> 8, length]); - - appendBytes(data); - } - - function appendObject(data) { - let length = 0; - for (let key in data) { - if (data[key] !== undefined) { - length++; - } - } - - if (length <= 0xf) appendByte(0x80 + length); - else if (length <= 0xffff) appendBytes([0xde, length >>> 8, length]); - else appendBytes([0xdf, length >>> 24, length >>> 16, length >>> 8, length]); - - for (let key in data) { - let value = data[key]; - if (value !== undefined) { - append(key); - append(value); - } - } - } - - function appendDate(data) { - let sec = data.getTime() / 1000; - if (data.getMilliseconds() === 0 && sec >= 0 && sec < 0x100000000) { - // 32 bit seconds - appendBytes([0xd6, 0xff, sec >>> 24, sec >>> 16, sec >>> 8, sec]); - } else if (sec >= 0 && sec < 0x400000000) { - // 30 bit nanoseconds, 34 bit seconds - let ns = data.getMilliseconds() * 1000000; - appendBytes([ - 0xd7, - 0xff, - ns >>> 22, - ns >>> 14, - ns >>> 6, - ((ns << 2) >>> 0) | (sec / pow32), - sec >>> 24, - sec >>> 16, - sec >>> 8, - sec - ]); - } else { - // 32 bit nanoseconds, 64 bit seconds, negative values allowed - let ns = data.getMilliseconds() * 1000000; - appendBytes([0xc7, 12, 0xff, ns >>> 24, ns >>> 16, ns >>> 8, ns]); - appendInt64(sec); - } - } - - function appendByte(byte) { - if (array.length < length + 1) { - let newLength = array.length * 2; - while (newLength < length + 1) newLength *= 2; - let newArray = new Uint8Array(newLength); - newArray.set(array); - array = newArray; - } - array[length] = byte; - length++; - } - - function appendBytes(bytes) { - if (array.length < length + bytes.length) { - let newLength = array.length * 2; - while (newLength < length + bytes.length) newLength *= 2; - let newArray = new Uint8Array(newLength); - newArray.set(array); - array = newArray; - } - array.set(bytes, length); - length += bytes.length; - } - - function appendInt64(value) { - // Split 64-bit number into two 32-bit numbers because JavaScript only regards 32 bits for - // bitwise operations. - let hi, lo; - if (value >= 0) { - // Same as uint64 - hi = value / pow32; - lo = value % pow32; - } else { - // Split absolute value to high and low, then NOT and ADD(1) to restore negativity - value++; - hi = Math.abs(value) / pow32; - lo = Math.abs(value) % pow32; - hi = ~hi; - lo = ~lo; - } - appendBytes([hi >>> 24, hi >>> 16, hi >>> 8, hi, lo >>> 24, lo >>> 16, lo >>> 8, lo]); - } - } - - // Deserializes a MessagePack byte array to a value. - // - // array: The MessagePack byte array to deserialize. This must be an Array or Uint8Array containing bytes, not a string. - // options: An object that defined additional options. - // - multiple: Indicates whether multiple concatenated MessagePack arrays are returned as an array. - export function deserialize(array, options) { - const pow32 = 0x100000000; // 2^32 - let pos = 0; - if (array instanceof ArrayBuffer) { - array = new Uint8Array(array); - } - if (typeof array !== "object" || typeof array.length === "undefined") { - throw new Error("Invalid argument type: Expected a byte array (Array or Uint8Array) to deserialize."); - } - if (!array.length) { - throw new Error("Invalid argument: The byte array to deserialize is empty."); - } - if (!(array instanceof Uint8Array)) { - array = new Uint8Array(array); - } - let data; - if (options && options.multiple) { - // Read as many messages as are available - data = []; - while (pos < array.length) { - data.push(read()); - } - } else { - // Read only one message and ignore additional data - data = read(); - } - return data; - - function read() { - const byte = array[pos++]; - if (byte >= 0x00 && byte <= 0x7f) return byte; // positive fixint - if (byte >= 0x80 && byte <= 0x8f) return readMap(byte - 0x80); // fixmap - if (byte >= 0x90 && byte <= 0x9f) return readArray(byte - 0x90); // fixarray - if (byte >= 0xa0 && byte <= 0xbf) return readStr(byte - 0xa0); // fixstr - if (byte === 0xc0) return null; // nil - if (byte === 0xc1) throw new Error("Invalid byte code 0xc1 found."); // never used - if (byte === 0xc2) return false; // false - if (byte === 0xc3) return true; // true - if (byte === 0xc4) return readBin(-1, 1); // bin 8 - if (byte === 0xc5) return readBin(-1, 2); // bin 16 - if (byte === 0xc6) return readBin(-1, 4); // bin 32 - if (byte === 0xc7) return readExt(-1, 1); // ext 8 - if (byte === 0xc8) return readExt(-1, 2); // ext 16 - if (byte === 0xc9) return readExt(-1, 4); // ext 32 - if (byte === 0xca) return readFloat(4); // float 32 - if (byte === 0xcb) return readFloat(8); // float 64 - if (byte === 0xcc) return readUInt(1); // uint 8 - if (byte === 0xcd) return readUInt(2); // uint 16 - if (byte === 0xce) return readUInt(4); // uint 32 - if (byte === 0xcf) return readUInt(8); // uint 64 - if (byte === 0xd0) return readInt(1); // int 8 - if (byte === 0xd1) return readInt(2); // int 16 - if (byte === 0xd2) return readInt(4); // int 32 - if (byte === 0xd3) return readInt(8); // int 64 - if (byte === 0xd4) return readExt(1); // fixext 1 - if (byte === 0xd5) return readExt(2); // fixext 2 - if (byte === 0xd6) return readExt(4); // fixext 4 - if (byte === 0xd7) return readExt(8); // fixext 8 - if (byte === 0xd8) return readExt(16); // fixext 16 - if (byte === 0xd9) return readStr(-1, 1); // str 8 - if (byte === 0xda) return readStr(-1, 2); // str 16 - if (byte === 0xdb) return readStr(-1, 4); // str 32 - if (byte === 0xdc) return readArray(-1, 2); // array 16 - if (byte === 0xdd) return readArray(-1, 4); // array 32 - if (byte === 0xde) return readMap(-1, 2); // map 16 - if (byte === 0xdf) return readMap(-1, 4); // map 32 - if (byte >= 0xe0 && byte <= 0xff) return byte - 256; // negative fixint - console.debug("msgpack array:", array); - throw new Error( - "Invalid byte value '" + - byte + - "' at index " + - (pos - 1) + - " in the MessagePack binary data (length " + - array.length + - "): Expecting a range of 0 to 255. This is not a byte array." - ); - } - - function readInt(size) { - let value = 0; - let first = true; - while (size-- > 0) { - if (first) { - let byte = array[pos++]; - value += byte & 0x7f; - if (byte & 0x80) { - value -= 0x80; // Treat most-significant bit as -2^i instead of 2^i - } - first = false; - } else { - value *= 256; - value += array[pos++]; - } - } - return value; - } - - function readUInt(size) { - let value = 0; - while (size-- > 0) { - value *= 256; - value += array[pos++]; - } - return value; - } - - function readFloat(size) { - let view = new DataView(array.buffer, pos + array.byteOffset, size); - pos += size; - if (size === 4) return view.getFloat32(0, false); - if (size === 8) return view.getFloat64(0, false); - } - - function readBin(size, lengthSize) { - if (size < 0) size = readUInt(lengthSize); - let data = array.subarray(pos, pos + size); - pos += size; - return data; - } - - function readMap(size, lengthSize) { - if (size < 0) size = readUInt(lengthSize); - let data = {}; - while (size-- > 0) { - let key = read(); - data[key] = read(); - } - return data; - } - - function readArray(size, lengthSize) { - if (size < 0) size = readUInt(lengthSize); - let data = []; - while (size-- > 0) { - data.push(read()); - } - return data; - } - - function readStr(size, lengthSize) { - if (size < 0) size = readUInt(lengthSize); - let start = pos; - pos += size; - return decodeUtf8(array, start, size); - } - - function readExt(size, lengthSize) { - if (size < 0) size = readUInt(lengthSize); - let type = readUInt(1); - let data = readBin(size); - switch (type) { - case 255: - return readExtDate(data); - } - return { type: type, data: data }; - } - - function readExtDate(data) { - if (data.length === 4) { - let sec = ((data[0] << 24) >>> 0) + ((data[1] << 16) >>> 0) + ((data[2] << 8) >>> 0) + data[3]; - return new Date(sec * 1000); - } - if (data.length === 8) { - let ns = ((data[0] << 22) >>> 0) + ((data[1] << 14) >>> 0) + ((data[2] << 6) >>> 0) + (data[3] >>> 2); - let sec = - (data[3] & 0x3) * pow32 + ((data[4] << 24) >>> 0) + ((data[5] << 16) >>> 0) + ((data[6] << 8) >>> 0) + data[7]; - return new Date(sec * 1000 + ns / 1000000); - } - if (data.length === 12) { - let ns = ((data[0] << 24) >>> 0) + ((data[1] << 16) >>> 0) + ((data[2] << 8) >>> 0) + data[3]; - pos -= 8; - let sec = readInt(8); - return new Date(sec * 1000 + ns / 1000000); - } - throw new Error("Invalid data length for a date value."); - } - } - - // Encodes a string to UTF-8 bytes. - function encodeUtf8(str) { - // Prevent excessive array allocation and slicing for all 7-bit characters - let ascii = true, - length = str.length; - for (let x = 0; x < length; x++) { - if (str.charCodeAt(x) > 127) { - ascii = false; - break; - } - } - - // Based on: https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330 - let i = 0, - bytes = new Uint8Array(str.length * (ascii ? 1 : 4)); - for (let ci = 0; ci !== length; ci++) { - let c = str.charCodeAt(ci); - if (c < 128) { - bytes[i++] = c; - continue; - } - if (c < 2048) { - bytes[i++] = (c >> 6) | 192; - } else { - if (c > 0xd7ff && c < 0xdc00) { - if (++ci >= length) throw new Error("UTF-8 encode: incomplete surrogate pair"); - let c2 = str.charCodeAt(ci); - if (c2 < 0xdc00 || c2 > 0xdfff) - throw new Error( - "UTF-8 encode: second surrogate character 0x" + c2.toString(16) + " at index " + ci + " out of range" - ); - c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff); - bytes[i++] = (c >> 18) | 240; - bytes[i++] = ((c >> 12) & 63) | 128; - } else bytes[i++] = (c >> 12) | 224; - bytes[i++] = ((c >> 6) & 63) | 128; - } - bytes[i++] = (c & 63) | 128; - } - return ascii ? bytes : bytes.subarray(0, i); - } - - // Decodes a string from UTF-8 bytes. - function decodeUtf8(bytes, start, length) { - // Based on: https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330 - let i = start, - str = ""; - length += start; - while (i < length) { - let c = bytes[i++]; - if (c > 127) { - if (c > 191 && c < 224) { - if (i >= length) throw new Error("UTF-8 decode: incomplete 2-byte sequence"); - c = ((c & 31) << 6) | (bytes[i++] & 63); - } else if (c > 223 && c < 240) { - if (i + 1 >= length) throw new Error("UTF-8 decode: incomplete 3-byte sequence"); - c = ((c & 15) << 12) | ((bytes[i++] & 63) << 6) | (bytes[i++] & 63); - } else if (c > 239 && c < 248) { - if (i + 2 >= length) throw new Error("UTF-8 decode: incomplete 4-byte sequence"); - c = ((c & 7) << 18) | ((bytes[i++] & 63) << 12) | ((bytes[i++] & 63) << 6) | (bytes[i++] & 63); - } else throw new Error("UTF-8 decode: unknown multibyte start 0x" + c.toString(16) + " at index " + (i - 1)); - } - if (c <= 0xffff) str += String.fromCharCode(c); - else if (c <= 0x10ffff) { - c -= 0x10000; - str += String.fromCharCode((c >> 10) | 0xd800); - str += String.fromCharCode((c & 0x3ff) | 0xdc00); - } else throw new Error("UTF-8 decode: code point 0x" + c.toString(16) + " exceeds UTF-16 reach"); - } - return str; - } \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Faster Opps Cage.auto b/2025-Robot-Code/src/main/deploy/pathplanner/autos/Faster Opps Cage.auto deleted file mode 100644 index 698e447..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Faster Opps Cage.auto +++ /dev/null @@ -1,103 +0,0 @@ -{ - "version": "2025.0", - "command": { - "type": "sequential", - "data": { - "commands": [ - { - "type": "path", - "data": { - "pathName": "Fast Opps to BL" - } - }, - { - "type": "named", - "data": { - "name": "score_safe" - } - }, - { - "type": "path", - "data": { - "pathName": "BL to Coral1 C" - } - }, - { - "type": "named", - "data": { - "name": "intake_fast" - } - }, - { - "type": "path", - "data": { - "pathName": "Coral1 C to DR" - } - }, - { - "type": "named", - "data": { - "name": "score_safe" - } - }, - { - "type": "path", - "data": { - "pathName": "DR to Coral1" - } - }, - { - "type": "named", - "data": { - "name": "intake_fast" - } - }, - { - "type": "path", - "data": { - "pathName": "Coral1 to CL" - } - }, - { - "type": "named", - "data": { - "name": "score_safe" - } - }, - { - "type": "path", - "data": { - "pathName": "CL to Coral1" - } - }, - { - "type": "named", - "data": { - "name": "intake_fast" - } - }, - { - "type": "path", - "data": { - "pathName": "Coral1 to CR" - } - }, - { - "type": "named", - "data": { - "name": "score_safe" - } - }, - { - "type": "path", - "data": { - "pathName": "CR to Coral1" - } - } - ] - } - }, - "resetOdom": true, - "folder": null, - "choreoAuto": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Middle 1pc + 3 Barge.auto b/2025-Robot-Code/src/main/deploy/pathplanner/autos/Middle 1pc + 3 Barge.auto deleted file mode 100644 index 4e7bf25..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Middle 1pc + 3 Barge.auto +++ /dev/null @@ -1,142 +0,0 @@ -{ - "version": "2025.0", - "command": { - "type": "sequential", - "data": { - "commands": [ - { - "type": "path", - "data": { - "pathName": "AL 2" - } - }, - { - "type": "named", - "data": { - "name": "score_safe" - } - }, - { - "type": "path", - "data": { - "pathName": "AL to Algae A" - } - }, - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "path", - "data": { - "pathName": "Algae A to Barge A" - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 1.0 - } - }, - { - "type": "named", - "data": { - "name": "scorealgae" - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "Barge A to Algae F" - } - }, - { - "type": "named", - "data": { - "name": "startalgae" - } - }, - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "path", - "data": { - "pathName": "Algae F to Barge F" - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 1.0 - } - }, - { - "type": "named", - "data": { - "name": "scorealgae" - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "Barge A to Algae B" - } - }, - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "path", - "data": { - "pathName": "Algae B to Barge A" - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 1.0 - } - }, - { - "type": "named", - "data": { - "name": "scorealgae" - } - } - ] - } - } - ] - } - }, - "resetOdom": false, - "folder": null, - "choreoAuto": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Opps Cage 3.5pc.auto b/2025-Robot-Code/src/main/deploy/pathplanner/autos/Opps Cage 3.5pc.auto deleted file mode 100644 index 756c60c..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Opps Cage 3.5pc.auto +++ /dev/null @@ -1,183 +0,0 @@ -{ - "version": "2025.0", - "command": { - "type": "sequential", - "data": { - "commands": [ - { - "type": "path", - "data": { - "pathName": "BL 3" - } - }, - { - "type": "sequential", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.25 - } - }, - { - "type": "named", - "data": { - "name": "score" - } - } - ] - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "BL to Coral1" - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.6 - } - }, - { - "type": "named", - "data": { - "name": "intake" - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "Coral1 to CR" - } - }, - { - "type": "sequential", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.25 - } - }, - { - "type": "named", - "data": { - "name": "score" - } - } - ] - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "CR to Coral1" - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.6 - } - }, - { - "type": "named", - "data": { - "name": "intake" - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "Coral1 to CL" - } - }, - { - "type": "sequential", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.25 - } - }, - { - "type": "named", - "data": { - "name": "score" - } - } - ] - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "CL to Coral1" - } - } - ] - } - }, - "resetOdom": true, - "folder": null, - "choreoAuto": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Own Cage 3.5pc.auto b/2025-Robot-Code/src/main/deploy/pathplanner/autos/Own Cage 3.5pc.auto deleted file mode 100644 index 551b2dc..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Own Cage 3.5pc.auto +++ /dev/null @@ -1,105 +0,0 @@ -{ - "version": "2025.0", - "command": { - "type": "sequential", - "data": { - "commands": [ - { - "type": "path", - "data": { - "pathName": "FR 1" - } - }, - { - "type": "named", - "data": { - "name": "score_safe" - } - }, - { - "type": "path", - "data": { - "pathName": "FR to Coral2 Path" - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "named", - "data": { - "name": "intake" - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "Coral2 to EL Path" - } - }, - { - "type": "named", - "data": { - "name": "score_safe" - } - }, - { - "type": "path", - "data": { - "pathName": "EL to Coral2 Path" - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "named", - "data": { - "name": "intake" - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "Coral2 to ER Path" - } - }, - { - "type": "named", - "data": { - "name": "score_safe" - } - }, - { - "type": "path", - "data": { - "pathName": "ER to Coral2 Path" - } - } - ] - } - }, - "resetOdom": true, - "folder": null, - "choreoAuto": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Tush Push.auto b/2025-Robot-Code/src/main/deploy/pathplanner/autos/Tush Push.auto deleted file mode 100644 index f584bce..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/autos/Tush Push.auto +++ /dev/null @@ -1,81 +0,0 @@ -{ - "version": "2025.0", - "command": { - "type": "sequential", - "data": { - "commands": [ - { - "type": "path", - "data": { - "pathName": "Push Own Cage" - } - }, - { - "type": "path", - "data": { - "pathName": "Return Own Cage" - } - }, - { - "type": "path", - "data": { - "pathName": "Push Opp Cage" - } - }, - { - "type": "path", - "data": { - "pathName": "Return Opp Cage" - } - }, - { - "type": "path", - "data": { - "pathName": "Score Reef" - } - }, - { - "type": "sequential", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 1.0 - } - }, - { - "type": "deadline", - "data": { - "commands": [ - { - "type": "wait", - "data": { - "waitTime": 0.5 - } - }, - { - "type": "named", - "data": { - "name": "score" - } - } - ] - } - } - ] - } - }, - { - "type": "path", - "data": { - "pathName": "Return Reef" - } - } - ] - } - }, - "resetOdom": true, - "folder": null, - "choreoAuto": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/navgrid.json b/2025-Robot-Code/src/main/deploy/pathplanner/navgrid.json deleted file mode 100644 index 23e0db9..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/navgrid.json +++ /dev/null @@ -1 +0,0 @@ -{"field_size":{"x":17.548,"y":8.052},"nodeSizeMeters":0.3,"grid":[[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true]]} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/AL 2.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/AL 2.path deleted file mode 100644 index 991b1d2..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/AL 2.path +++ /dev/null @@ -1,66 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.1, - "y": 4.025 - }, - "prevControl": null, - "nextControl": { - "x": 5.43345240535961, - "y": 3.793839931582558 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.802, - "y": 3.86 - }, - "prevControl": { - "x": 7.550013031972286, - "y": 4.061015565653943 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "AL" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl4", - "waypointRelativePos": 0.0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 3.0, - "maxAcceleration": 3.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 180.0 - }, - "reversed": false, - "folder": "Starting Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/AL to Algae A.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/AL to Algae A.path deleted file mode 100644 index 0a3a0e9..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/AL to Algae A.path +++ /dev/null @@ -1,93 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.802, - "y": 3.86 - }, - "prevControl": null, - "nextControl": { - "x": 6.36675, - "y": 3.8792499999999994 - }, - "isLocked": false, - "linkedName": "AL" - }, - { - "anchor": { - "x": 6.461372950819672, - "y": 3.9590676229508195 - }, - "prevControl": { - "x": 6.664738939190733, - "y": 3.8136637895286523 - }, - "nextControl": { - "x": 6.25800696244861, - "y": 4.104471456372986 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.706147540983607, - "y": 4.030993852459016 - }, - "prevControl": { - "x": 6.290397540983608, - "y": 4.064993852459015 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Algae A" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "algael2", - "waypointRelativePos": 0.2, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "algael2" - } - } - }, - { - "name": "startalgae", - "waypointRelativePos": 0.95, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "startalgae" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 180.0 - }, - "reversed": false, - "folder": "Algae Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/AR 2.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/AR 2.path deleted file mode 100644 index 147d97d..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/AR 2.path +++ /dev/null @@ -1,54 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.1, - "y": 4.025 - }, - "prevControl": null, - "nextControl": { - "x": 4.918836744357451, - "y": 4.23123947993963 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.881, - "y": 4.180840163927584 - }, - "prevControl": { - "x": 8.322420968782987, - "y": 3.726811356473352 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 180.0 - }, - "reversed": false, - "folder": "Starting Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae A to Barge A.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae A to Barge A.path deleted file mode 100644 index ccd96e2..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae A to Barge A.path +++ /dev/null @@ -1,82 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.706147540983607, - "y": 4.030993852459016 - }, - "prevControl": null, - "nextControl": { - "x": 6.498601630795559, - "y": 4.356004603611423 - }, - "isLocked": false, - "linkedName": "Algae A" - }, - { - "anchor": { - "x": 6.545286885245901, - "y": 4.342674180327869 - }, - "prevControl": { - "x": 6.014334131972805, - "y": 4.057255424658171 - }, - "nextControl": { - "x": 6.827420230022528, - "y": 4.494337671481582 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 7.25, - "y": 4.999999999999999 - }, - "prevControl": { - "x": 6.842107411074362, - "y": 4.452639565501362 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Barge A" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "scorealgae", - "waypointRelativePos": 1.0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "scorealgae" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 0.0 - }, - "reversed": false, - "folder": "Algae Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae B to Barge A.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae B to Barge A.path deleted file mode 100644 index 87c590f..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae B to Barge A.path +++ /dev/null @@ -1,93 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.094774590163934, - "y": 2.9281249999999988 - }, - "prevControl": null, - "nextControl": { - "x": 5.5888368560517945, - "y": 2.6142491903834824 - }, - "isLocked": false, - "linkedName": "Algae B" - }, - { - "anchor": { - "x": 6.4545, - "y": 2.7769999999999992 - }, - "prevControl": { - "x": 6.10076343362347, - "y": 2.5352670209412906 - }, - "nextControl": { - "x": 7.190545593101618, - "y": 3.2799915220981037 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 7.1, - "y": 5.6435 - }, - "prevControl": { - "x": 7.077808792086578, - "y": 5.225631949467255 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Barge A Middle" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "startalgae", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "startalgae" - } - } - }, - { - "name": "elevatorstow", - "waypointRelativePos": 0.39906542056073335, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 0.0 - }, - "reversed": false, - "folder": "Algae Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 119.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae E to Barge(not scoring).path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae E to Barge(not scoring).path deleted file mode 100644 index 232a19d..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae E to Barge(not scoring).path +++ /dev/null @@ -1,82 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.81225, - "y": 5.18525 - }, - "prevControl": null, - "nextControl": { - "x": 3.9976884654216094, - "y": 5.480213380491504 - }, - "isLocked": false, - "linkedName": "Algae E" - }, - { - "anchor": { - "x": 4.3875, - "y": 5.996977459016393 - }, - "prevControl": { - "x": 4.177555785431508, - "y": 5.820852223990046 - }, - "nextControl": { - "x": 4.628624354001272, - "y": 6.199260163525953 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 7.132684426229508, - "y": 7.01593237704918 - }, - "prevControl": { - "x": 6.178657491637883, - "y": 6.671453543121306 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0.1, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 0.0 - }, - "reversed": false, - "folder": "Algae Paths", - "idealStartingState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae F to Barge F.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae F to Barge F.path deleted file mode 100644 index c028bce..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Algae F to Barge F.path +++ /dev/null @@ -1,93 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.130737704918032, - "y": 5.097899590163934 - }, - "prevControl": null, - "nextControl": { - "x": 5.507895718130681, - "y": 5.391974094395643 - }, - "isLocked": false, - "linkedName": "Algae F" - }, - { - "anchor": { - "x": 5.528250000000001, - "y": 5.614249999999999 - }, - "prevControl": { - "x": 4.728731272258398, - "y": 5.059431867321562 - }, - "nextControl": { - "x": 5.7336410078132705, - "y": 5.756779063385153 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 7.1, - "y": 5.6435 - }, - "prevControl": { - "x": 5.877936114089526, - "y": 5.718826499449263 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Barge A Middle" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "startalgae", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "startalgae" - } - } - }, - { - "name": "elevatorstow", - "waypointRelativePos": 0.85, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 0.0 - }, - "reversed": false, - "folder": "Algae Paths", - "idealStartingState": { - "velocity": 0, - "rotation": -119.99999999999999 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL 3.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL 3.path deleted file mode 100644 index 18eee4c..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL 3.path +++ /dev/null @@ -1,66 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 6.942, - "y": 1.9189999999999998 - }, - "prevControl": null, - "nextControl": { - "x": 5.041922679495138, - "y": 2.762106233357081 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.03483606557377, - "y": 2.748309426229507 - }, - "prevControl": { - "x": 5.261591655754334, - "y": 2.6430388115174024 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "BL" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl4", - "waypointRelativePos": 0.5, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 3.5, - "maxAcceleration": 3.25, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 119.99999999999999 - }, - "reversed": false, - "folder": "Starting Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 136.74290224973132 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL to Coral1 C.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL to Coral1 C.path deleted file mode 100644 index af69fb4..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL to Coral1 C.path +++ /dev/null @@ -1,82 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.03483606557377, - "y": 2.748309426229507 - }, - "prevControl": null, - "nextControl": { - "x": 4.901378790583832, - "y": 2.536911328432341 - }, - "isLocked": false, - "linkedName": "BL" - }, - { - "anchor": { - "x": 4.63125, - "y": 2.2602499999999996 - }, - "prevControl": { - "x": 4.804479779259727, - "y": 2.440503830965187 - }, - "nextControl": { - "x": 4.331196773499281, - "y": 1.9480303354518635 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": { - "x": 2.948745304952488, - "y": 1.3823086389930146 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 1" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0.2, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 54.0 - }, - "reversed": false, - "folder": "Fast 4pc paths", - "idealStartingState": { - "velocity": 0, - "rotation": 119.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL to Coral1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL to Coral1.path deleted file mode 100644 index 22c8962..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/BL to Coral1.path +++ /dev/null @@ -1,107 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.03483606557377, - "y": 2.748309426229507 - }, - "prevControl": null, - "nextControl": { - "x": 4.54658606557377, - "y": 2.158059426229507 - }, - "isLocked": false, - "linkedName": "BL" - }, - { - "anchor": { - "x": 4.5825, - "y": 2.2407499999999994 - }, - "prevControl": { - "x": 5.3235, - "y": 3.0890000000000004 - }, - "nextControl": { - "x": 4.416075037420131, - "y": 2.0502372138888343 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": { - "x": 3.1102499999999997, - "y": 1.4119999999999993 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 1" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow for Elevator", - "minWaypointRelativePos": 0, - "maxWaypointRelativePos": 0.6, - "constraints": { - "maxVelocity": 3.5, - "maxAcceleration": 2.75, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorstow", - "waypointRelativePos": 0.17, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 54.0 - }, - "reversed": false, - "folder": "Bottom Coral From Reef Paths", - "idealStartingState": { - "velocity": 0.0, - "rotation": 119.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/BR 3.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/BR 3.path deleted file mode 100644 index a06f9a5..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/BR 3.path +++ /dev/null @@ -1,68 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.1, - "y": 1.9 - }, - "prevControl": null, - "nextControl": { - "x": 6.039198915553618, - "y": 1.946195118483835 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.337, - "y": 2.908 - }, - "prevControl": { - "x": 6.246467665618715, - "y": 2.1311787960792046 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to Elevator", - "minWaypointRelativePos": 0, - "maxWaypointRelativePos": 0, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 119.99999999999999 - }, - "reversed": false, - "folder": "Starting Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Barge A to Algae B.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Barge A to Algae B.path deleted file mode 100644 index 74535be..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Barge A to Algae B.path +++ /dev/null @@ -1,104 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.1, - "y": 5.6435 - }, - "prevControl": null, - "nextControl": { - "x": 7.072417156883844, - "y": 4.122746814886118 - }, - "isLocked": false, - "linkedName": "Barge A Middle" - }, - { - "anchor": { - "x": 6.113729508196721, - "y": 2.4606045081967203 - }, - "prevControl": { - "x": 6.91310635601111, - "y": 2.7718886120298127 - }, - "nextControl": { - "x": 5.567931916888414, - "y": 2.2480663110382797 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.094774590163934, - "y": 2.9281249999999988 - }, - "prevControl": { - "x": 5.237927682701502, - "y": 2.664061752296459 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Algae B" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - }, - { - "name": "startalgae", - "waypointRelativePos": 0.5, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "startalgae" - } - } - }, - { - "name": "algael3", - "waypointRelativePos": 0.6, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "algael3" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 119.99999999999999 - }, - "reversed": false, - "folder": "Algae Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 0.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Barge A to Algae F.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Barge A to Algae F.path deleted file mode 100644 index f6dea86..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Barge A to Algae F.path +++ /dev/null @@ -1,109 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.25, - "y": 4.999999999999999 - }, - "prevControl": null, - "nextControl": { - "x": 6.500488003946565, - "y": 4.920606988794575 - }, - "isLocked": false, - "linkedName": "Barge A" - }, - { - "anchor": { - "x": 5.694000000000001, - "y": 5.53625 - }, - "prevControl": { - "x": 6.086142386941301, - "y": 5.454983795993589 - }, - "nextControl": { - "x": 5.449201417595191, - "y": 5.586981194078153 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.130737704918032, - "y": 5.097899590163934 - }, - "prevControl": { - "x": 5.220091029711502, - "y": 5.33284343545088 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Algae F" - } - ], - "rotationTargets": [ - { - "waypointRelativePos": 0.5, - "rotationDegrees": -130.0 - } - ], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - }, - { - "name": "startalgae", - "waypointRelativePos": 0.6, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "startalgae" - } - } - }, - { - "name": "algael3", - "waypointRelativePos": 1.2, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "algael3" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -119.99999999999999 - }, - "reversed": false, - "folder": "Algae Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 0.0 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/CL to Coral1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/CL to Coral1.path deleted file mode 100644 index 3a42b9a..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/CL to Coral1.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.6698211443421616, - "y": 2.959227752974466 - }, - "prevControl": null, - "nextControl": { - "x": 3.0222719586388824, - "y": 2.105385866282537 - }, - "isLocked": false, - "linkedName": "CL" - }, - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": { - "x": 3.684487808684282, - "y": 2.9847216413205784 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 1" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to Elevator", - "minWaypointRelativePos": 0, - "maxWaypointRelativePos": 0.3, - "constraints": { - "maxVelocity": 3.25, - "maxAcceleration": 2.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorstow", - "waypointRelativePos": 0.1, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 54.0 - }, - "reversed": false, - "folder": "Bottom Coral From Reef Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 59.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/CR to Coral1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/CR to Coral1.path deleted file mode 100644 index 7a044d6..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/CR to Coral1.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.9480192737355395, - "y": 2.7800144619325793 - }, - "prevControl": null, - "nextControl": { - "x": 3.5255344758253524, - "y": 2.4363394118760118 - }, - "isLocked": false, - "linkedName": "CR" - }, - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": { - "x": 4.397372946112248, - "y": 3.1164377669558725 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 1" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow for Elevator", - "minWaypointRelativePos": 0, - "maxWaypointRelativePos": 0.35208596713021656, - "constraints": { - "maxVelocity": 3.25, - "maxAcceleration": 2.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorstow", - "waypointRelativePos": 0.1, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 54.0 - }, - "reversed": false, - "folder": "Bottom Coral From Reef Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 59.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 C to DR.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 C to DR.path deleted file mode 100644 index ab78dd4..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 C to DR.path +++ /dev/null @@ -1,112 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": null, - "nextControl": { - "x": 2.1939080080397324, - "y": 2.6576774643708543 - }, - "isLocked": false, - "linkedName": "Coral 1" - }, - { - "anchor": { - "x": 2.7397500000000004, - "y": 3.5179999999999993 - }, - "prevControl": { - "x": 2.3661486845661654, - "y": 3.1279924041368403 - }, - "nextControl": { - "x": 3.3373771596855075, - "y": 4.141871282414559 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 3.159, - "y": 3.8725 - }, - "prevControl": { - "x": 3.1515128031303465, - "y": 3.6226121413853107 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "DR" - } - ], - "rotationTargets": [ - { - "waypointRelativePos": 0.3274161735700178, - "rotationDegrees": 40.0 - } - ], - "constraintZones": [ - { - "name": "Elevator Constraint", - "minWaypointRelativePos": 1.35, - "maxWaypointRelativePos": 2.0, - "constraints": { - "maxVelocity": 3.5, - "maxAcceleration": 3.35, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorl4", - "waypointRelativePos": 0.8, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 0.0 - }, - "reversed": false, - "folder": "Fast 4pc paths", - "idealStartingState": { - "velocity": 0, - "rotation": 54.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to CL.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to CL.path deleted file mode 100644 index 0e4f55d..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to CL.path +++ /dev/null @@ -1,77 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": null, - "nextControl": { - "x": 3.1736623157467423, - "y": 2.415383369214754 - }, - "isLocked": false, - "linkedName": "Coral 1" - }, - { - "anchor": { - "x": 3.6698211443421616, - "y": 2.959227752974466 - }, - "prevControl": { - "x": 3.3917602320897386, - "y": 2.6779202500976207 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "CL" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorl4", - "waypointRelativePos": 0.5509345794392584, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 59.99999999999999 - }, - "reversed": false, - "folder": "Bottom Coral to Reef Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 54.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to CR.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to CR.path deleted file mode 100644 index d12565c..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to CR.path +++ /dev/null @@ -1,107 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": null, - "nextControl": { - "x": 4.0764624119394535, - "y": 2.387860981475356 - }, - "isLocked": false, - "linkedName": "Coral 1" - }, - { - "anchor": { - "x": 3.3539999999999996, - "y": 1.9189999999999998 - }, - "prevControl": { - "x": 2.4189482095578763, - "y": 1.2316177140757094 - }, - "nextControl": { - "x": 4.471647789127194, - "y": 2.7406136261128653 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 3.9480192737355395, - "y": 2.7800144619325793 - }, - "prevControl": { - "x": 3.721487322750495, - "y": 2.88576546752075 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "CR" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow for Elevator", - "minWaypointRelativePos": 1.0, - "maxWaypointRelativePos": 2.0, - "constraints": { - "maxVelocity": 3.0, - "maxAcceleration": 3.25, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorl4", - "waypointRelativePos": 1.1504672897196193, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 59.99999999999999 - }, - "reversed": false, - "folder": "Bottom Coral to Reef Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 54.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to DR.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to DR.path deleted file mode 100644 index d1accbc..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral1 to DR.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": null, - "nextControl": { - "x": 1.8622500000000002, - "y": 1.8507499999999992 - }, - "isLocked": false, - "linkedName": "Coral 1" - }, - { - "anchor": { - "x": 3.159, - "y": 3.87 - }, - "prevControl": { - "x": 2.159, - "y": 3.87 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "DR" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Constraints Zone", - "minWaypointRelativePos": 0.65, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 3.0, - "maxAcceleration": 3.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0.0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorl4", - "waypointRelativePos": 0.65, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 0.0 - }, - "reversed": false, - "folder": "Bottom Coral to Reef Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 54.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to DL Path.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to DL Path.path deleted file mode 100644 index cb69dc2..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to DL Path.path +++ /dev/null @@ -1,77 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 1.55, - "y": 7.457 - }, - "prevControl": null, - "nextControl": { - "x": 1.6889244093248357, - "y": 7.1644419474758685 - }, - "isLocked": false, - "linkedName": "Coral 2" - }, - { - "anchor": { - "x": 2.3136270491803277, - "y": 4.570440573770491 - }, - "prevControl": { - "x": 1.821716526162384, - "y": 5.2735706256866735 - }, - "nextControl": { - "x": 2.456937782252289, - "y": 4.365594207470337 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 3.15, - "y": 4.18 - }, - "prevControl": { - "x": 2.7455227347894953, - "y": 4.3589582140975365 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl4", - "waypointRelativePos": 1.25, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 0.0 - }, - "reversed": false, - "folder": "Top Coral to Reef Paths", - "idealStartingState": { - "velocity": 0, - "rotation": -53.97262661489641 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to EL Path.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to EL Path.path deleted file mode 100644 index b49e85c..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to EL Path.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 1.55, - "y": 7.457 - }, - "prevControl": null, - "nextControl": { - "x": 3.0661726577406583, - "y": 6.096077644058996 - }, - "isLocked": false, - "linkedName": "Coral 2" - }, - { - "anchor": { - "x": 3.96, - "y": 5.28 - }, - "prevControl": { - "x": 3.023973189356413, - "y": 6.128707934074227 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "EL" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to Elevator", - "minWaypointRelativePos": 0.400341685649203, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorl4", - "waypointRelativePos": 0.6, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "reversed": false, - "folder": "Top Coral to Reef Paths", - "idealStartingState": { - "velocity": 0, - "rotation": -53.97262661489641 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to ER Path.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to ER Path.path deleted file mode 100644 index 4b441c7..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Coral2 to ER Path.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 1.55, - "y": 7.457 - }, - "prevControl": null, - "nextControl": { - "x": 3.0077721908209467, - "y": 5.818725424010536 - }, - "isLocked": false, - "linkedName": "Coral 2" - }, - { - "anchor": { - "x": 3.6855, - "y": 5.097499999999999 - }, - "prevControl": { - "x": 2.365503250817217, - "y": 6.581176417796299 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "ER" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to Elevator", - "minWaypointRelativePos": 0.55, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorl4", - "waypointRelativePos": 0.7033029612756252, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "reversed": false, - "folder": "Top Coral to Reef Paths", - "idealStartingState": { - "velocity": 0, - "rotation": -53.97262661489641 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/DR to Coral1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/DR to Coral1.path deleted file mode 100644 index d80b2ce..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/DR to Coral1.path +++ /dev/null @@ -1,66 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.159, - "y": 3.87 - }, - "prevControl": null, - "nextControl": { - "x": 2.6133196721311474, - "y": 3.5862110655737713 - }, - "isLocked": false, - "linkedName": "DR" - }, - { - "anchor": { - "x": 1.4505122950819673, - "y": 0.6025102459016398 - }, - "prevControl": { - "x": 1.6844991794344206, - "y": 1.0676887276702551 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 1" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0.09614168247944001, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 54.0 - }, - "reversed": false, - "folder": "Fast 4pc paths", - "idealStartingState": { - "velocity": 0, - "rotation": 0.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/EL 1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/EL 1.path deleted file mode 100644 index f8f1272..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/EL 1.path +++ /dev/null @@ -1,75 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.1, - "y": 6.17079918032787 - }, - "prevControl": null, - "nextControl": { - "x": 5.4304303278688515, - "y": 6.464497950819672 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 3.945, - "y": 5.318 - }, - "prevControl": { - "x": 3.697840917528596, - "y": 5.355581750250538 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to Elevator", - "minWaypointRelativePos": 0.4026195899772327, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl4", - "waypointRelativePos": 0.5, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "reversed": false, - "folder": "Starting Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/EL to Coral2 Path.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/EL to Coral2 Path.path deleted file mode 100644 index 868fe82..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/EL to Coral2 Path.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.96, - "y": 5.28 - }, - "prevControl": null, - "nextControl": { - "x": 3.2568395779375634, - "y": 5.947949530875624 - }, - "isLocked": false, - "linkedName": "EL" - }, - { - "anchor": { - "x": 1.55, - "y": 7.457 - }, - "prevControl": { - "x": 2.6540376273638677, - "y": 6.443312105145415 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 2" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to Intake", - "minWaypointRelativePos": 0.0, - "maxWaypointRelativePos": 0.20216400911162072, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorstow", - "waypointRelativePos": 0.051822323462418704, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -53.97262661489641 - }, - "reversed": false, - "folder": "Top Coral from Reef Paths ", - "idealStartingState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/ER to Algae E.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/ER to Algae E.path deleted file mode 100644 index 3c6eb14..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/ER to Algae E.path +++ /dev/null @@ -1,93 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.6855, - "y": 5.097499999999999 - }, - "prevControl": null, - "nextControl": { - "x": 3.2857500000000006, - "y": 5.22425 - }, - "isLocked": false, - "linkedName": "ER" - }, - { - "anchor": { - "x": 3.1882500000000005, - "y": 5.86775 - }, - "prevControl": { - "x": 2.958377798508928, - "y": 5.6986394235315485 - }, - "nextControl": { - "x": 3.430769425015172, - "y": 6.046164786577426 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 3.81225, - "y": 5.18525 - }, - "prevControl": { - "x": 3.79275, - "y": 5.711749999999999 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Algae E" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "startalgae", - "waypointRelativePos": 0.8, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "startalgae" - } - } - }, - { - "name": "algael2", - "waypointRelativePos": 0.8, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "algael2" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 2.75, - "maxAcceleration": 3.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "reversed": false, - "folder": "Algae Paths", - "idealStartingState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/ER to Coral2 Path.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/ER to Coral2 Path.path deleted file mode 100644 index 835551b..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/ER to Coral2 Path.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.6855, - "y": 5.097499999999999 - }, - "prevControl": null, - "nextControl": { - "x": 2.4505373627349787, - "y": 6.487441391595156 - }, - "isLocked": false, - "linkedName": "ER" - }, - { - "anchor": { - "x": 1.55, - "y": 7.457 - }, - "prevControl": { - "x": 3.829093992021588, - "y": 4.9475097770283405 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 2" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow for Elevator", - "minWaypointRelativePos": 0.0, - "maxWaypointRelativePos": 0.2021640091116238, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorstow", - "waypointRelativePos": 0.049544419134401316, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -53.97262661489641 - }, - "reversed": false, - "folder": "Top Coral from Reef Paths ", - "idealStartingState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/FL 1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/FL 1.path deleted file mode 100644 index 4675647..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/FL 1.path +++ /dev/null @@ -1,75 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.1, - "y": 6.17079918032787 - }, - "prevControl": null, - "nextControl": { - "x": 5.9450909383781605, - "y": 6.1123226221444105 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.337, - "y": 5.143 - }, - "prevControl": { - "x": 5.5615812628223456, - "y": 5.2528328566009295 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to Elevator", - "minWaypointRelativePos": 0.4026195899772327, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl4", - "waypointRelativePos": 0.5, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -119.99999999999999 - }, - "reversed": false, - "folder": "Starting Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/FL to Coral2 Path.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/FL to Coral2 Path.path deleted file mode 100644 index 5238de0..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/FL to Coral2 Path.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.337, - "y": 5.143 - }, - "prevControl": null, - "nextControl": { - "x": 3.8497901943909616, - "y": 6.030172930433941 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 1.55, - "y": 7.457 - }, - "prevControl": { - "x": 1.7717072387697055, - "y": 7.236731529889148 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 2" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to intake", - "minWaypointRelativePos": 0.0, - "maxWaypointRelativePos": 0.20216400911161553, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0.049544419134396944, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - }, - { - "name": "intake", - "waypointRelativePos": 0.25, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -53.97262661489641 - }, - "reversed": false, - "folder": "Top Coral from Reef Paths ", - "idealStartingState": { - "velocity": 0, - "rotation": -119.99999999999999 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/FR 1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/FR 1.path deleted file mode 100644 index d477089..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/FR 1.path +++ /dev/null @@ -1,80 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 6.941866438356165, - "y": 6.098544520547945 - }, - "prevControl": null, - "nextControl": { - "x": 5.926722699564788, - "y": 5.657016604862892 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 4.985, - "y": 5.2 - }, - "prevControl": { - "x": 5.2614850508951685, - "y": 5.316451274557505 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "FR" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Elevator Slow", - "minWaypointRelativePos": 0.4, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 3.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl4", - "waypointRelativePos": 0.2955580865603694, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 2.75, - "maxAcceleration": 3.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -120.96375653207359 - }, - "reversed": false, - "folder": "Starting Paths", - "idealStartingState": { - "velocity": 0, - "rotation": -132.70938995736148 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/FR to Coral2 Path.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/FR to Coral2 Path.path deleted file mode 100644 index 438adfc..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/FR to Coral2 Path.path +++ /dev/null @@ -1,91 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 4.98, - "y": 5.2 - }, - "prevControl": null, - "nextControl": { - "x": 5.325169520547945, - "y": 6.206852739726027 - }, - "isLocked": false, - "linkedName": "FR" - }, - { - "anchor": { - "x": 1.55, - "y": 7.457 - }, - "prevControl": { - "x": 2.319140453593082, - "y": 6.375753684484641 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "Coral 2" - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Constraints Zone", - "minWaypointRelativePos": 0.0, - "maxWaypointRelativePos": 0.30476190476190557, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 3.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "intake", - "waypointRelativePos": 0.0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "intake" - } - } - }, - { - "name": "elevatorstow", - "waypointRelativePos": 0.1, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorstow" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -53.97262661489641 - }, - "reversed": false, - "folder": "Top Coral from Reef Paths ", - "idealStartingState": { - "velocity": 0, - "rotation": -120.96375653207359 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Fast Opps to BL.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Fast Opps to BL.path deleted file mode 100644 index be0b8e3..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Fast Opps to BL.path +++ /dev/null @@ -1,77 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 6.940881147540983, - "y": 2.2328381147540983 - }, - "prevControl": null, - "nextControl": { - "x": 5.224670424339514, - "y": 2.691293072294206 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.03483606557377, - "y": 2.748309426229507 - }, - "prevControl": { - "x": 5.306033064201186, - "y": 2.6775880243232364 - }, - "nextControl": null, - "isLocked": false, - "linkedName": "BL" - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl3", - "waypointRelativePos": 0.0, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl3" - } - } - }, - { - "name": "elevatorl4", - "waypointRelativePos": 0.34, - "endWaypointRelativePos": null, - "command": { - "type": "named", - "data": { - "name": "elevatorl4" - } - } - } - ], - "globalConstraints": { - "maxVelocity": 3.5, - "maxAcceleration": 3.35, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 119.99999999999999 - }, - "reversed": false, - "folder": "Fast 4pc paths", - "idealStartingState": { - "velocity": 0.0, - "rotation": 119.99999999999999 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Push Opp Cage.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Push Opp Cage.path deleted file mode 100644 index 4873563..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Push Opp Cage.path +++ /dev/null @@ -1,54 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.8132, - "y": 3.995 - }, - "prevControl": null, - "nextControl": { - "x": 7.119300153078218, - "y": 3.3416133752649966 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 6.957, - "y": 3.1685359589041093 - }, - "prevControl": { - "x": 7.282330265605598, - "y": 3.4692050367507274 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 135.0 - }, - "reversed": false, - "folder": "Tush Push Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 135.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Push Own Cage.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Push Own Cage.path deleted file mode 100644 index 3235abd..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Push Own Cage.path +++ /dev/null @@ -1,54 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.813, - "y": 3.9949486301369865 - }, - "prevControl": null, - "nextControl": { - "x": 7.353781720379537, - "y": 4.397795506895144 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 7.047, - "y": 4.716 - }, - "prevControl": { - "x": 7.647823041343841, - "y": 4.138259245803569 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 135.0 - }, - "reversed": false, - "folder": "Tush Push Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 135.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Opp Cage.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Opp Cage.path deleted file mode 100644 index d1bf986..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Opp Cage.path +++ /dev/null @@ -1,54 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 6.9572, - "y": 3.169 - }, - "prevControl": null, - "nextControl": { - "x": 6.725861911750448, - "y": 3.049156342928673 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 7.813, - "y": 3.995 - }, - "prevControl": { - "x": 7.620099656390925, - "y": 3.7426761262838197 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 135.0 - }, - "reversed": false, - "folder": "Tush Push Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 135.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Own Cage.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Own Cage.path deleted file mode 100644 index b1ea0d8..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Own Cage.path +++ /dev/null @@ -1,54 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.047, - "y": 4.716 - }, - "prevControl": null, - "nextControl": { - "x": 6.714308281042298, - "y": 5.012734477697252 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 7.813, - "y": 3.995 - }, - "prevControl": { - "x": 8.006833182960172, - "y": 3.8268125700422004 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 135.0 - }, - "reversed": false, - "folder": "Tush Push Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 135.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Reef.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Reef.path deleted file mode 100644 index 628ac3c..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Return Reef.path +++ /dev/null @@ -1,75 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.86, - "y": 4.175 - }, - "prevControl": null, - "nextControl": { - "x": 6.901247246766884, - "y": 4.199612859650596 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 6.75, - "y": 4.175 - }, - "prevControl": { - "x": 6.374830005653763, - "y": 4.188950140027183 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Constraints Zone", - "minWaypointRelativePos": 0.0, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 3.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0.5, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 180.0 - }, - "reversed": false, - "folder": "Tush Push Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for AL 2.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for AL 2.path deleted file mode 100644 index 9d40fbb..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for AL 2.path +++ /dev/null @@ -1,61 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 5.802, - "y": 3.86 - }, - "prevControl": null, - "nextControl": { - "x": 5.532850161953046, - "y": 3.824015354803184 - }, - "isLocked": false, - "linkedName": "AL" - }, - { - "anchor": { - "x": 6.293545081967213, - "y": 3.869159836065574 - }, - "prevControl": { - "x": 6.043827965663543, - "y": 3.881049403971072 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0.5, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 1.5, - "maxAcceleration": 1.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 180.0 - }, - "reversed": false, - "folder": null, - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for EL 1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for EL 1.path deleted file mode 100644 index 5758ab6..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for EL 1.path +++ /dev/null @@ -1,61 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.945, - "y": 5.318 - }, - "prevControl": null, - "nextControl": { - "x": 4.11438885447, - "y": 5.096971341918837 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 3.404508196721311, - "y": 6.320645491803279 - }, - "prevControl": { - "x": 3.7503325083821606, - "y": 5.576047755715439 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0.5005694760819998, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 1.5, - "maxAcceleration": 1.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "reversed": false, - "folder": null, - "idealStartingState": { - "velocity": 0, - "rotation": -59.99999999999999 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for Taxi.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for Taxi.path deleted file mode 100644 index 0d789a5..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Reversing Path for Taxi.path +++ /dev/null @@ -1,61 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 3.945, - "y": 2.733 - }, - "prevControl": null, - "nextControl": { - "x": 3.785461858249376, - "y": 2.4515272742852647 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 3.464446721311475, - "y": 1.861219262295083 - }, - "prevControl": { - "x": 3.5947006568236857, - "y": 2.0746060291846464 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorstow", - "waypointRelativePos": 0.5005694760820042, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 1.5, - "maxAcceleration": 1.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 59.99999999999999 - }, - "reversed": false, - "folder": null, - "idealStartingState": { - "velocity": 0, - "rotation": 59.99999999999999 - }, - "useDefaultConstraints": false -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Score Reef.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Score Reef.path deleted file mode 100644 index 773c732..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Score Reef.path +++ /dev/null @@ -1,75 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.813, - "y": 3.995 - }, - "prevControl": null, - "nextControl": { - "x": 6.9118150684931505, - "y": 4.100128424657534 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.860017123287671, - "y": 4.175256849315068 - }, - "prevControl": { - "x": 6.79173075603982, - "y": 4.175256849315068 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Constraints Zone", - "minWaypointRelativePos": 0.0, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 3.0, - "maxAcceleration": 3.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl4", - "waypointRelativePos": 0.5, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 180.0 - }, - "reversed": false, - "folder": "Tush Push Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 135.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Taxi.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Taxi.path deleted file mode 100644 index c98f089..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Taxi.path +++ /dev/null @@ -1,75 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.1, - "y": 1.9 - }, - "prevControl": null, - "nextControl": { - "x": 7.403123862717433, - "y": 1.962888446941505 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 3.945, - "y": 2.733 - }, - "prevControl": { - "x": 5.3105532786885234, - "y": 1.2018954918032796 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [ - { - "name": "Slow to Elevator", - "minWaypointRelativePos": 0.6, - "maxWaypointRelativePos": 1.0, - "constraints": { - "maxVelocity": 2.0, - "maxAcceleration": 2.0, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - } - } - ], - "pointTowardsZones": [], - "eventMarkers": [ - { - "name": "elevatorl4", - "waypointRelativePos": 0.7, - "endWaypointRelativePos": null, - "command": null - } - ], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 59.99999999999999 - }, - "reversed": false, - "folder": "Starting Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Test Path 1.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Test Path 1.path deleted file mode 100644 index b413cfd..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Test Path 1.path +++ /dev/null @@ -1,70 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.720081967213115, - "y": 7.0 - }, - "prevControl": null, - "nextControl": { - "x": 7.720081967213115, - "y": 6.75 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 6.72, - "y": 6.0 - }, - "prevControl": { - "x": 7.22, - "y": 6.0 - }, - "nextControl": { - "x": 6.22, - "y": 6.0 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.72, - "y": 7.0 - }, - "prevControl": { - "x": 5.72, - "y": 6.75 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 180.0 - }, - "reversed": false, - "folder": "Test Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Test Path 2.path b/2025-Robot-Code/src/main/deploy/pathplanner/paths/Test Path 2.path deleted file mode 100644 index 4c5e9b6..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/paths/Test Path 2.path +++ /dev/null @@ -1,54 +0,0 @@ -{ - "version": "2025.0", - "waypoints": [ - { - "anchor": { - "x": 7.720081967213115, - "y": 7.0 - }, - "prevControl": null, - "nextControl": { - "x": 6.720081967213126, - "y": 7.0 - }, - "isLocked": false, - "linkedName": null - }, - { - "anchor": { - "x": 5.72, - "y": 7.0 - }, - "prevControl": { - "x": 6.72, - "y": 7.0 - }, - "nextControl": null, - "isLocked": false, - "linkedName": null - } - ], - "rotationTargets": [], - "constraintZones": [], - "pointTowardsZones": [], - "eventMarkers": [], - "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 4.5, - "maxAngularVelocity": 540.0, - "maxAngularAcceleration": 720.0, - "nominalVoltage": 12.0, - "unlimited": false - }, - "goalEndState": { - "velocity": 0, - "rotation": 0.0 - }, - "reversed": false, - "folder": "Test Paths", - "idealStartingState": { - "velocity": 0, - "rotation": 180.0 - }, - "useDefaultConstraints": true -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/pathplanner/settings.json b/2025-Robot-Code/src/main/deploy/pathplanner/settings.json deleted file mode 100644 index 6e16edc..0000000 --- a/2025-Robot-Code/src/main/deploy/pathplanner/settings.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "robotWidth": 0.9144, - "robotLength": 0.9144, - "holonomicMode": true, - "pathFolders": [ - "Algae Paths", - "Bottom Coral From Reef Paths", - "Bottom Coral to Reef Paths", - "Fast 4pc paths", - "Starting Paths", - "Test Paths", - "Top Coral from Reef Paths ", - "Top Coral to Reef Paths", - "Tush Push Paths" - ], - "autoFolders": [], - "defaultMaxVel": 4.73, - "defaultMaxAccel": 4.5, - "defaultMaxAngVel": 540.0, - "defaultMaxAngAccel": 720.0, - "defaultNominalVoltage": 12.0, - "robotMass": 61.235, - "robotMOI": 6.883, - "robotTrackwidth": 0.546, - "driveWheelRadius": 0.051, - "driveGearing": 6.75, - "maxDriveSpeed": 5.45, - "driveMotorType": "krakenX60", - "driveCurrentLimit": 60.0, - "wheelCOF": 1.2, - "flModuleX": 0.301, - "flModuleY": 0.301361, - "frModuleX": 0.301, - "frModuleY": -0.301361, - "blModuleX": -0.301, - "blModuleY": 0.301361, - "brModuleX": -0.301, - "brModuleY": -0.301361, - "bumperOffsetX": 0.0, - "bumperOffsetY": 0.0, - "robotFeatures": [ - "{\"name\":\"Coral\",\"type\":\"rounded_rect\",\"data\":{\"center\":{\"x\":0.0,\"y\":0.0},\"size\":{\"width\":0.114,\"length\":1.0},\"borderRadius\":0.0,\"strokeWidth\":0.012,\"filled\":false}}" - ] -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/deploy/weldedlayout.json b/2025-Robot-Code/src/main/deploy/weldedlayout.json deleted file mode 100644 index 6d1c78e..0000000 --- a/2025-Robot-Code/src/main/deploy/weldedlayout.json +++ /dev/null @@ -1,242 +0,0 @@ -{ - "tags": [ - { - "ID": 6, - "pose": { - "translation": { - "x": 13.474446, - "y": 3.3063179999999996, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": -0.8660254037844387, - "X": -0.0, - "Y": 0.0, - "Z": 0.49999999999999994 - } - } - } - }, - { - "ID": 7, - "pose": { - "translation": { - "x": 13.890498, - "y": 4.0259, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 1.0, - "X": 0.0, - "Y": 0.0, - "Z": 0.0 - } - } - } - }, - { - "ID": 8, - "pose": { - "translation": { - "x": 13.474446, - "y": 4.745482, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 0.8660254037844387, - "X": 0.0, - "Y": 0.0, - "Z": 0.49999999999999994 - } - } - } - }, - { - "ID": 9, - "pose": { - "translation": { - "x": 12.643358, - "y": 4.745482, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 0.5000000000000001, - "X": 0.0, - "Y": 0.0, - "Z": 0.8660254037844386 - } - } - } - }, - { - "ID": 10, - "pose": { - "translation": { - "x": 12.227305999999999, - "y": 4.0259, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 6.123233995736766e-17, - "X": 0.0, - "Y": 0.0, - "Z": 1.0 - } - } - } - }, - { - "ID": 11, - "pose": { - "translation": { - "x": 12.643358, - "y": 3.3063179999999996, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": -0.4999999999999998, - "X": -0.0, - "Y": 0.0, - "Z": 0.8660254037844387 - } - } - } - }, - { - "ID": 16, - "pose": { - "translation": { - "x": 5.9875419999999995, - "y": -0.0038099999999999996, - "z": 1.30175 - }, - "rotation": { - "quaternion": { - "W": 0.7071067811865476, - "X": 0.0, - "Y": 0.0, - "Z": 0.7071067811865476 - } - } - } - }, - { - "ID": 17, - "pose": { - "translation": { - "x": 4.073905999999999, - "y": 3.3063179999999996, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": -0.4999999999999998, - "X": -0.0, - "Y": 0.0, - "Z": 0.8660254037844387 - } - } - } - }, - { - "ID": 18, - "pose": { - "translation": { - "x": 3.6576, - "y": 4.0259, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 6.123233995736766e-17, - "X": 0.0, - "Y": 0.0, - "Z": 1.0 - } - } - } - }, - { - "ID": 19, - "pose": { - "translation": { - "x": 4.073905999999999, - "y": 4.745482, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 0.5000000000000001, - "X": 0.0, - "Y": 0.0, - "Z": 0.8660254037844386 - } - } - } - }, - { - "ID": 20, - "pose": { - "translation": { - "x": 4.904739999999999, - "y": 4.745482, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 0.8660254037844387, - "X": 0.0, - "Y": 0.0, - "Z": 0.49999999999999994 - } - } - } - }, - { - "ID": 21, - "pose": { - "translation": { - "x": 5.321046, - "y": 4.0259, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": 1.0, - "X": 0.0, - "Y": 0.0, - "Z": 0.0 - } - } - } - }, - { - "ID": 22, - "pose": { - "translation": { - "x": 4.904739999999999, - "y": 3.3063179999999996, - "z": 0.308102 - }, - "rotation": { - "quaternion": { - "W": -0.8660254037844387, - "X": -0.0, - "Y": 0.0, - "Z": 0.49999999999999994 - } - } - } - } - ], - "field": { - "length": 17.548, - "width": 8.052 - } -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/java/frc/robot/AutoPicker.java b/2025-Robot-Code/src/main/java/frc/robot/AutoPicker.java deleted file mode 100644 index aba0188..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/AutoPicker.java +++ /dev/null @@ -1,91 +0,0 @@ -package frc.robot; - -import java.util.HashMap; -import java.util.List; - -import com.pathplanner.lib.commands.PathPlannerAuto; - -import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.InstantCommand; -import frc.robot.Constants.AutoConstants; - -/** Class to pick an auto from a multitude of 'folders' from Shuffleboard */ -public class AutoPicker { - Command mCurrentCommand; - String mCurrentName; - HashMap> mChoosers; - - public AutoPicker() { - mChoosers = new HashMap<>(); - AutoConstants.kAutoFolders.forEach(this::setupChooser); - } - - /** Initializes any manually user entered commands */ - public void initializeCommands(String folder, Command... commands) { - for (Command command : commands) { - mChoosers.get(folder).addOption(command.getName(), command); - } - } - - /** - * Sets up each of the sendable choosers per each folder - * @param folderName Name of the folder to get command names from - * @param names List of command names - * @see List - */ - private void setupChooser(String folderName, List names) { - var chooser = new SendableChooser(); - mChoosers.putIfAbsent(folderName, chooser); - - // creates default option, to avoid issues with folders containing only one command - var noneCommand = new InstantCommand(); - noneCommand.setName("None"); - chooser.setDefaultOption("None", noneCommand); - - names.forEach((name) -> createChooserOptions(chooser, name)); - chooser.onChange((command) -> setCurrentCommand(chooser)); - - SmartDashboard.putData(folderName, chooser); - } - - /** - * Creates options for each of the commands using AutoBuilder and places them in their respective chooser - * @param chooser Sendable chooser to create options for - * @param name Name of the command option - * @see SendableChooser - * @see Command - * @see PathPlannerAuto - */ - private void createChooserOptions(SendableChooser chooser, String name) { - try { - var command = new PathPlannerAuto(name); - command.setName(name); - - chooser.addOption(name, command); - } catch (Exception e) { - System.out.println("------ NULL!! name of path: " + name); - } - } - - /** - * Called any time the chooser is changed and sets current command to - * the selected command from whichever chooser has been changed - * @param chooser Chooser to get selected command from - * @see SendableChooser - */ - private void setCurrentCommand(SendableChooser chooser) { - mCurrentCommand = chooser.getSelected(); - SmartDashboard.putString("Current Auto", mCurrentCommand.getName()); - } - - /** - * Gets the selected active command from the auto folders. - * @return Selected Command - * @see Command - */ - public Command getSelected() { - return mCurrentCommand; - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/Constants.java b/2025-Robot-Code/src/main/java/frc/robot/Constants.java deleted file mode 100644 index de8265d..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/Constants.java +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc.robot; - -import java.util.HashMap; -import java.util.List; - -import com.ctre.phoenix6.CANBus; -import com.pathplanner.lib.path.PathConstraints; - -import edu.wpi.first.math.geometry.Rotation3d; -import edu.wpi.first.math.geometry.Transform3d; -import edu.wpi.first.math.geometry.Translation3d; -import edu.wpi.first.math.util.Units; - - -/** - * The Constants class provides a convenient place for teams to hold robot-wide - * numerical or boolean - * constants. This class should not be used for any other purpose. All constants - * should be declared - * globally (i.e. public static). Do not put anything functional in this class. - * - *

- * It is advised to statically import this class (or one of its inner classes) - * wherever the - * constants are needed, to reduce verbosity. - */ -public final class Constants { - public static class OperatorConstants { - public static final int kDriverControllerPort = 0; - public static final int kOperatorControllerPort = 1; - public static final double kCoralRumbleStrength = 0.5; - public static final double kBargeRumbleStrength = 0.9; - public static final double kJoystickDeadband = 0.1; - } - - public static class ElevatorConstants { - // Motor ports - public static final int kMotorAPort = 13; - public static final int kMotorBPort = 14; - // Height setpoints - public static final double kStowedHeight = 0; - public static final double kL1Height = 0.9; - public static final double kL2Height = 1.67; - public static final double kL3Height = 2.82; - public static final double kL4Height = 4.67; - public static final double kLowAlgaeHeight = 0.35; - public static final double kHighAlgaeHeight = 1.625; - // Configuration details - public static final CANBus kMotorBus = new CANBus("canivore0"); - public static final double kSensorToMechanismRatio = 9.0; - public static final double kMaxSpeed = 11; - public static final double kMaxAcceleration = 20.0; - public static final double kMaxJerk = 100.0; - public static final double kPositionTolerance = 0.3; - // PID constants - public static final double kG = 0.64; - public static final double kS = 0.25; - public static final double kV = 1.58; - public static final double kA = 0.07; - public static final double kP = 60.0; - public static final double kI = 0.0; - public static final double kD = 0.5; - // Current limits - public static final double kStatorCurrentLimit = 70; - public static final double kSupplyCurrentLimit = 120; - } - - public static class DriveConstants { - // Distance between centers of right and left wheels on robot - public static final double kTrackWidthMeters = Units.inchesToMeters(23.72921); - // Distance between front and back wheels on robot - public static final double kWheelBaseMeters = Units.inchesToMeters(23.72921); - - public static final PathConstraints kScoringConstraints = new PathConstraints(3.0, 3.0, 2 * Math.PI, 4 * Math.PI); - - public static final PathConstraints kMobilityConstraints = new PathConstraints(3.0, 3.0, 2 * Math.PI, 4 * Math.PI); - - public static final double kL1Speed = 1.5; - } - - public static class AutoConstants { - public static final double kTranslationP = 3; - public static final double kTranslationI = 0; - public static final double kTranslationD = 0; - - public static final double kRotationP = 5.5; - public static final double kRotationI = 0; - public static final double kRotationD = 0; - - /** Map of folder names to lists of auto command names */ - public static final HashMap> kAutoFolders = new HashMap<>() {{ - put("Test Autos", List.of( - "Test Auto", - "Test Auto 2", - "Test Auto 3" - )); - - put("Basic Autos", List.of( - "Do Nothing", - "1" - )); - }}; - } - - public static class VisionConstants { - public static String kCamera1Name = "Left"; - public static String kCamera2Name = "Right"; - - public static final Transform3d kRobotToCam1 = - new Transform3d( - new Translation3d(Units.inchesToMeters(11.58), Units.inchesToMeters(11.189), Units.inchesToMeters(8.25)), - new Rotation3d(0, Units.degreesToRadians(-15.0), Units.degreesToRadians(-20.0))); - - public static final Transform3d kRobotToCam2 = - new Transform3d( - new Translation3d(Units.inchesToMeters(11.58), Units.inchesToMeters(-11.189), Units.inchesToMeters(8.25)), - new Rotation3d(0, Units.degreesToRadians(-15.0), Units.degreesToRadians(15.0))); - } - - public static class AlgaeConstants { - public static final int kAlgaeMotorPort = 21; - public static final double kAlgaeMotorSpeed = 1.0; - public static final double kAlgaeExtendedRotation = 0.25; - public static final double kAlgaeStowedRotation = 0; - public static final double kSensorToMechanismRatio = 25.0; - } - - public static class EndEffectorConstants { - public static final int kMotorPort = 20; - public static final int kEntranceBreakerPort = 1; - public static final int kExitBreakerPort = 0; - - public static final double kFastEjectSpeed = 0.9; - public static final double kAutoEjectSpeed = 1; - public static final double kDefaultEjectSpeed = 0.2; - public static final double kL1EjectSpeed = 0.3; - public static final double kAlgaeBargeSpeed = 1.0; - public static final double kAlgaeProcessorSpeed = 0.3; - - public static final double kIdleSpeed = 0.225; - public static final double kIntakeSpeed = 0.125; - public static final double kDriveBackSpeed = 0.08; - - public static final double kSensorToMechanismRatio = 25.0; - } - - public static class ClimberConstants { - public static final double kHopperFallAngle = 120.0; - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/FieldConstants.java b/2025-Robot-Code/src/main/java/frc/robot/FieldConstants.java deleted file mode 100644 index 2dbffde..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/FieldConstants.java +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright (c) 2025 FRC 6328 -// http://github.com/Mechanical-Advantage -// -// Use of this source code is governed by an MIT-style -// license that can be found in the LICENSE file at -// the root directory of this project. - -package frc.robot; - -import edu.wpi.first.math.geometry.*; -import edu.wpi.first.math.util.Units; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Contains various field dimensions and useful reference points. All units are - * in meters and poses - * have a blue alliance origin. - */ -public class FieldConstants { - public static final double fieldLength = Units.inchesToMeters(690.876); - public static final double fieldWidth = Units.inchesToMeters(317); - public static final Translation2d fieldCenter = new Translation2d(fieldLength / 2, fieldWidth / 2); - public static final double startingLineX = Units.inchesToMeters(299.438); // Measured from the inside of starting - // line - - public static class Processor { - public static final Pose2d centerFace = new Pose2d(Units.inchesToMeters(235.726), 0, - Rotation2d.fromDegrees(90)); - } - - public static class Barge { - public static final Translation2d farCage = new Translation2d(Units.inchesToMeters(345.428), - Units.inchesToMeters(286.779)); - public static final Translation2d middleCage = new Translation2d(Units.inchesToMeters(345.428), - Units.inchesToMeters(242.855)); - public static final Translation2d closeCage = new Translation2d(Units.inchesToMeters(345.428), - Units.inchesToMeters(199.947)); - - // Measured from floor to bottom of cage - public static final double deepHeight = Units.inchesToMeters(3.125); - public static final double shallowHeight = Units.inchesToMeters(30.125); - } - - public static class CoralStation { - public static final Pose2d leftCenterFace = new Pose2d( - Units.inchesToMeters(33.526), - Units.inchesToMeters(291.176), - Rotation2d.fromDegrees(90 - 144.011)); - public static final Pose2d rightCenterFace = new Pose2d( - Units.inchesToMeters(33.526), - Units.inchesToMeters(25.824), - Rotation2d.fromDegrees(144.011 - 90)); - } - - public static class Reef { - public static final Translation2d centerOfReef = new Translation2d(Units.inchesToMeters(176.746), - Units.inchesToMeters(158.501)); - public static final double faceToZoneLine = Units.inchesToMeters(12); // Side of the reef to the inside of the - // reef zone line - - public static final Pose2d[] centerFaces = new Pose2d[12]; // Starting facing the driver station in clockwise - // order - public static final List> branchPositions = new ArrayList<>(); // Starting at the right - // branch facing the - // driver station in - // clockwise order - - static { - // Initialize faces - centerFaces[0] = new Pose2d( - Units.inchesToMeters(144.003), - Units.inchesToMeters(158.500), - Rotation2d.fromDegrees(180)); - centerFaces[1] = new Pose2d( - Units.inchesToMeters(160.373), - Units.inchesToMeters(186.857), - Rotation2d.fromDegrees(120)); - centerFaces[2] = new Pose2d( - Units.inchesToMeters(193.116), - Units.inchesToMeters(186.858), - Rotation2d.fromDegrees(60)); - centerFaces[3] = new Pose2d( - Units.inchesToMeters(209.489), - Units.inchesToMeters(158.502), - Rotation2d.fromDegrees(0)); - centerFaces[4] = new Pose2d( - Units.inchesToMeters(193.118), - Units.inchesToMeters(130.145), - Rotation2d.fromDegrees(-60)); - centerFaces[5] = new Pose2d( - Units.inchesToMeters(160.375), - Units.inchesToMeters(130.144), - Rotation2d.fromDegrees(-120)); - - centerFaces[6] = centerFaces[0].rotateAround(fieldCenter, Rotation2d.k180deg); - centerFaces[7] = centerFaces[1].rotateAround(fieldCenter, Rotation2d.k180deg); - centerFaces[8] = centerFaces[2].rotateAround(fieldCenter, Rotation2d.k180deg); - centerFaces[9] = centerFaces[3].rotateAround(fieldCenter, Rotation2d.k180deg); - centerFaces[10] = centerFaces[4].rotateAround(fieldCenter, Rotation2d.k180deg); - centerFaces[11] = centerFaces[5].rotateAround(fieldCenter, Rotation2d.k180deg); - - // Initialize branch positions - for (int face = 0; face < centerFaces.length; face++) { - Map fillRight = new HashMap<>(); - Map fillLeft = new HashMap<>(); - for (var level : ReefHeight.values()) { - Pose2d poseDirection = new Pose2d(); - if (face < 6) { - poseDirection = new Pose2d(centerOfReef, centerFaces[face].getRotation()); - } else { - poseDirection = new Pose2d(centerOfReef.rotateAround(fieldCenter, Rotation2d.k180deg), - centerFaces[face].getRotation()); - } - - double adjustX = Units.inchesToMeters(30.738); // Depth of branch from reef face - double adjustY = Units.inchesToMeters(6.469); // Offset from reef face - // centerline to branch - - fillRight.put( - level, - new Pose3d( - new Translation3d( - poseDirection - .transformBy( - new Transform2d(adjustX, adjustY, new Rotation2d())) - .getX(), - poseDirection - .transformBy( - new Transform2d(adjustX, adjustY, new Rotation2d())) - .getY(), - level.height), - new Rotation3d( - 0, - Units.degreesToRadians(level.pitch), - poseDirection.getRotation().getRadians()))); - fillLeft.put( - level, - new Pose3d( - new Translation3d( - poseDirection - .transformBy( - new Transform2d(adjustX, -adjustY, new Rotation2d())) - .getX(), - poseDirection - .transformBy( - new Transform2d(adjustX, -adjustY, new Rotation2d())) - .getY(), - level.height), - new Rotation3d( - 0, - Units.degreesToRadians(level.pitch), - poseDirection.getRotation().getRadians()))); - } - branchPositions.add(fillRight); - branchPositions.add(fillLeft); - } - - } - } - - public static class StagingPositions { - // Measured from the center of the ice cream - public static final Pose2d leftIceCream = new Pose2d(Units.inchesToMeters(48), Units.inchesToMeters(230.5), - new Rotation2d()); - public static final Pose2d middleIceCream = new Pose2d(Units.inchesToMeters(48), Units.inchesToMeters(158.5), - new Rotation2d()); - public static final Pose2d rightIceCream = new Pose2d(Units.inchesToMeters(48), Units.inchesToMeters(86.5), - new Rotation2d()); - } - - public enum ReefHeight { - L4(Units.inchesToMeters(72), -90), - L3(Units.inchesToMeters(47.625), -35), - L2(Units.inchesToMeters(31.875), -35), - L1(Units.inchesToMeters(18), 0); - - ReefHeight(double height, double pitch) { - this.height = height; - this.pitch = pitch; // in degrees - } - - public final double height; - public final double pitch; - } - - public static Pose2d getNearestReefFace(Pose2d currentPose) { - return currentPose.nearest(List.of(FieldConstants.Reef.centerFaces)); - } - - public enum ReefSide { - LEFT, - RIGHT - } - - public static Pose2d getNearestReefBranch(Pose2d currentPose, ReefSide side) { - return FieldConstants.Reef.branchPositions - .get(List.of(FieldConstants.Reef.centerFaces).indexOf(getNearestReefFace(currentPose)) - * 2 + (side == ReefSide.LEFT ? 1 : 0)) - .get(FieldConstants.ReefHeight.L1).toPose2d(); - } - - public static Pose2d getNearestCoralStation(Pose2d currentPose) { - if (currentPose.getTranslation().getX() > FieldConstants.fieldLength / 2) { - if (currentPose.getTranslation().getY() > FieldConstants.fieldWidth / 2) { - return FieldConstants.CoralStation.rightCenterFace - .rotateAround(FieldConstants.fieldCenter, Rotation2d.k180deg); - } else { - return FieldConstants.CoralStation.leftCenterFace - .rotateAround(FieldConstants.fieldCenter, Rotation2d.k180deg); - } - } else { - if (currentPose.getTranslation().getY() > FieldConstants.fieldWidth / 2) { - return FieldConstants.CoralStation.leftCenterFace; - } else { - return FieldConstants.CoralStation.rightCenterFace; - } - } - } -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/java/frc/robot/Main.java b/2025-Robot-Code/src/main/java/frc/robot/Main.java deleted file mode 100644 index fe215d7..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/Main.java +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc.robot; - -import edu.wpi.first.wpilibj.RobotBase; - -public final class Main { - private Main() {} - - public static void main(String... args) { - RobotBase.startRobot(Robot::new); - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/Robot.java b/2025-Robot-Code/src/main/java/frc/robot/Robot.java deleted file mode 100644 index 08ab2d4..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/Robot.java +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc.robot; - -import edu.wpi.first.wpilibj.TimedRobot; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.CommandScheduler; - - -public class Robot extends TimedRobot { - private Command m_autonomousCommand; - - private final RobotContainer m_robotContainer; - - public Robot() { - // Instantiate our RobotContainer. This will perform all our button bindings, - // and put our - // autonomous chooser on the dashboard. - - // DataLogManager.start("/logs/datalogs/"); // separate data and signal logs - - // // add drivestation logs (e.g. joystick data) - // DriverStation.startDataLog(DataLogManager.getLog(), true); - // // add signal logging for CTRE - // SignalLogger.start(); - // SignalLogger.setPath("/logs/signallogs/"); - - m_robotContainer = new RobotContainer(); - } - - @Override - public void robotPeriodic() { - CommandScheduler.getInstance().run(); - m_robotContainer.periodic(); - } - - @Override - public void disabledInit() {} - - @Override - public void disabledPeriodic() { - m_robotContainer.disabledPeriodic(); - } - - @Override - public void disabledExit() { - SmartDashboard.putString("Aligned X", "Unknown (not disabled)"); - SmartDashboard.putString("Aligned Y", "Unknown (not disabled)"); - SmartDashboard.putNumber("Aligned X (num)", -1); - SmartDashboard.putNumber("Aligned Y (num)", -1); - m_robotContainer.disabledExit(); - } - - @Override - public void autonomousInit() { - m_robotContainer.autoInit(); - m_autonomousCommand = m_robotContainer.getAutonomousCommand(); - - if (m_autonomousCommand != null) { - m_autonomousCommand.schedule(); - } - } - - @Override - public void autonomousPeriodic() {} - - @Override - public void autonomousExit() {} - - @Override - public void teleopInit() { - if (m_autonomousCommand != null) { - m_autonomousCommand.cancel(); - } - m_robotContainer.teleInit(); - } - - @Override - public void teleopPeriodic() {} - - @Override - public void teleopExit() { - m_robotContainer.teleExit(); - } - - @Override - public void testInit() { - CommandScheduler.getInstance().cancelAll(); - } - - @Override - public void testPeriodic() {} - - @Override - public void testExit() {} - - @Override - public void simulationPeriodic() {} -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/RobotContainer.java b/2025-Robot-Code/src/main/java/frc/robot/RobotContainer.java deleted file mode 100644 index c8c7663..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/RobotContainer.java +++ /dev/null @@ -1,310 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc.robot; - -import static frc.robot.Constants.*; -import static edu.wpi.first.units.Units.*; - -import frc.robot.FieldConstants.ReefSide; -import frc.robot.commands.DriveCommands; -import frc.robot.util.AllianceFlipUtil; -import frc.robot.generated.TunerConstants; -import frc.robot.subsystems.Elevator; -import frc.robot.subsystems.EndEffector; -import frc.robot.subsystems.Vision; -import frc.robot.subsystems.AlgaeRemover; -import frc.robot.subsystems.Climber; -import frc.robot.subsystems.CommandSwerveDrivetrain; - -import com.ctre.phoenix6.swerve.SwerveModule.DriveRequestType; -import com.ctre.phoenix6.swerve.SwerveRequest; - -import com.pathplanner.lib.auto.NamedCommands; -import com.pathplanner.lib.commands.PathPlannerAuto; -import com.pathplanner.lib.commands.PathfindingCommand; - -import edu.wpi.first.math.MathUtil; -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.wpilibj.smartdashboard.Field2d; -import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.Commands; -import edu.wpi.first.wpilibj2.command.button.CommandXboxController; -import edu.wpi.first.wpilibj2.command.button.Trigger; -import edu.wpi.first.wpilibj.DriverStation; -import edu.wpi.first.wpilibj.Filesystem; -import edu.wpi.first.net.WebServer; - -import java.util.function.Supplier; -import java.nio.file.Paths; -import java.lang.Math; - -public class RobotContainer { - private double MaxSpeed = TunerConstants.kSpeedAt12Volts.in(MetersPerSecond); // kSpeedAt12Volts desired top - // speed - private double MaxAngularRate = RotationsPerSecond.of(0.75).in(RadiansPerSecond); // 3/4 of a rotation per - // second - // max angular velocity - - /* Setting up bindings for necessary control of the swerve drive platform */ - private final SwerveRequest.FieldCentric drive = new SwerveRequest.FieldCentric() - .withDeadband(MaxSpeed * 0.1).withRotationalDeadband(MaxAngularRate * 0.1) // Add a 10% deadband - .withDriveRequestType(DriveRequestType.OpenLoopVoltage); // Use open-loop control for drive - // motors - private final SwerveRequest.SwerveDriveBrake brake = new SwerveRequest.SwerveDriveBrake(); - private final SwerveRequest.PointWheelsAt point = new SwerveRequest.PointWheelsAt(); - - private final Telemetry logger = new Telemetry(MaxSpeed); - - private final CommandXboxController driverController = new CommandXboxController(0); - private final CommandXboxController operatorController = new CommandXboxController(1); - - private final CommandSwerveDrivetrain drivetrain = TunerConstants.createDrivetrain(driverController); - private final EndEffector endEffector = new EndEffector(driverController); - private final Vision vision = new Vision(); - private final Elevator elevator = new Elevator(); - private final AlgaeRemover algaeRemover = new AlgaeRemover(); - private final Climber climber = new Climber(); - - private final Field2d field = new Field2d(); - - private final SendableChooser autoChooser = new SendableChooser<>(); - - private boolean mBargeMode = false; - private final Trigger isBargeMode = new Trigger(() -> mBargeMode); - - public RobotContainer() { - configureNamedCommands(); - - configureBindings(); - WebServer.start(5801, - Paths.get(Filesystem.getDeployDirectory().getAbsolutePath().toString(), "hud") - .toString()); - - SmartDashboard.putData(field); - - PathfindingCommand.warmupCommand().schedule(); - - autoChooser.setDefaultOption("Own Cage 3.5pc", new PathPlannerAuto("Own Cage 3.5pc")); - autoChooser.addOption("Middle 1pc + 3 Barge", new PathPlannerAuto("Middle 1pc + 3 Barge")); - autoChooser.addOption("Opps Cage 3.5pc", new PathPlannerAuto("Opps Cage 3.5pc")); - autoChooser.addOption("Tush Push", new PathPlannerAuto("Tush Push")); - - SmartDashboard.putData("Auto Chooser", autoChooser); - SmartDashboard.putString("Aligned X", "Unknown (in initialization)"); - SmartDashboard.putString("Aligned Y", "Unknown (in initialization)"); - SmartDashboard.putBoolean("L1 Direction", true); - SmartDashboard.putData("Align Auto", drivetrain.AlignAuto(autoChooser)); - - DriverStation.silenceJoystickConnectionWarning(true); - } - - public void periodic() { - for (var pose : vision.getVisionResults()) { - drivetrain.addVisionMeasurement(pose.getPose(), pose.getTime(), - pose.getVisionMeasurementStdDevs()); - } - - field.setRobotPose(drivetrain.getState().Pose); - - SmartDashboard.putBoolean("In Algae Mode", mBargeMode); - SmartDashboard.putNumber("Timer", DriverStation.getMatchTime()); - } - - private void configureBindings() { - driverController.rightTrigger().and(isBargeMode.negate()) - .whileTrue(endEffector.scoreCoral(driverController.y())); - driverController.rightTrigger().and(isBargeMode).and(elevator.kIsStowed.negate()) - .whileTrue(endEffector.scoreBarge().alongWith(algaeRemover.stowArm())); - driverController.rightTrigger().and(isBargeMode).and(elevator.kIsStowed) - .whileTrue(endEffector.scoreProcessor()); - - // Note that X is defined as forward according to WPILib convention, - // and Y is defined as to the left according to WPILib convention. - drivetrain.setDefaultCommand( - // Drivetrain will execute this command periodically - drivetrain.applyRequest(() -> drive - .withVelocityX( - Math.copySign(Math.pow( - MathUtil.applyDeadband(driverController - .getLeftY(), - OperatorConstants.kJoystickDeadband), - 2), - -driverController.getLeftY()) - * MaxSpeed) // Drive forward with - // negative Y (forward) - .withVelocityY( - Math.copySign(Math.pow( - MathUtil.applyDeadband(driverController - .getLeftX(), - OperatorConstants.kJoystickDeadband), - 2), - -driverController.getLeftX()) - * MaxSpeed) // Drive left with negative - // X (left) - .withRotationalRate(-driverController.getRightX() * MaxAngularRate) // Drive - // counterclockwise - // with - // negative - // X - // (left) - )); - - operatorController.a().whileTrue(climber.climb().alongWith(algaeRemover.dropArm())) - .onFalse(climber.stopMotor()); - operatorController.y().whileTrue(climber.declimb()).onFalse(climber.stopMotor()); - - driverController.a().and(isBargeMode.negate()) - .whileTrue(elevator.setElevatorTarget(ElevatorConstants.kL1Height) - .alongWith(Commands.waitSeconds(0.3) - .andThen(endEffector.scoreL1()) - .alongWith(Commands.waitSeconds(0.1) - .andThen(L1MoveCommand())))) - .onFalse(elevator.setElevatorTarget(ElevatorConstants.kStowedHeight)); - driverController.x().and(isBargeMode.negate()) - .whileTrue(elevator.setElevatorTarget(ElevatorConstants.kL2Height)) - .onFalse(elevator.setElevatorTarget(ElevatorConstants.kStowedHeight)); - driverController.b().and(isBargeMode.negate()) - .whileTrue(elevator.setElevatorTarget(ElevatorConstants.kL3Height)) - .onFalse(elevator.setElevatorTarget(ElevatorConstants.kStowedHeight)); - driverController.y().and(isBargeMode.negate()) - .whileTrue(elevator.setElevatorTarget(ElevatorConstants.kL4Height)) - .onFalse(elevator.setElevatorTarget(ElevatorConstants.kStowedHeight)); - - driverController.x().and(isBargeMode) - .whileTrue(elevator.setElevatorTarget(ElevatorConstants.kLowAlgaeHeight)) - .onFalse(elevator.setElevatorTarget(ElevatorConstants.kStowedHeight)); - driverController.b().and(isBargeMode) - .whileTrue(elevator.setElevatorTarget(ElevatorConstants.kHighAlgaeHeight)) - .onFalse(elevator.setElevatorTarget(ElevatorConstants.kStowedHeight)); - driverController.y().and(isBargeMode) - .whileTrue(elevator.setElevatorTarget(ElevatorConstants.kL4Height) - .alongWith(Commands.waitSeconds(0.7) - .andThen(endEffector.scoreBarge() - .alongWith(algaeRemover.stowArm())))) - .onFalse(elevator.setElevatorTarget(ElevatorConstants.kStowedHeight)); - - // TODO: these should only be enabled for testing/auto tuning. - // Run SysId routines when holding back/start and X/Y. - // Note that each routine should be run exactly once in a single log. - // driverController.back().and(driverController.y()) - // .whileTrue(drivetrain.sysIdDynamic(Direction.kForward)); - // driverController.back().and(driverController.x()) - // .whileTrue(drivetrain.sysIdDynamic(Direction.kReverse)); - // driverController.start().and(driverController.y()) - // .whileTrue(drivetrain.sysIdQuasistatic(Direction.kForward)); - // driverController.start().and(driverController.x()) - // .whileTrue(drivetrain.sysIdQuasistatic(Direction.kReverse)); - - // reset the field-centric heading on start button press - driverController.start().onTrue(drivetrain.runOnce(() -> drivetrain.seedFieldCentric())); - - // Driver Right Bumper: Approach nearest right-side reef branch - driverController.rightBumper().and(isBargeMode.negate()).whileTrue(joystickApproach( - () -> FieldConstants.getNearestReefBranch(drivetrain.getState().Pose, ReefSide.RIGHT))); - - // Driver Left Bumper: approach nearest left-side reef branch - driverController.leftBumper().and(isBargeMode.negate()).whileTrue(joystickApproach( - () -> FieldConstants.getNearestReefBranch(drivetrain.getState().Pose, ReefSide.LEFT))); - - // Driver Left Bumper and Barge Mode: approach Algae on current reef face - driverController.leftBumper().and(isBargeMode).whileTrue(joystickApproach( - () -> FieldConstants.getNearestReefFace(drivetrain.getState().Pose))); - driverController.rightBumper().and(isBargeMode).whileTrue(joystickApproach( - () -> FieldConstants.getNearestReefFace(drivetrain.getState().Pose))); - - driverController.leftTrigger().onTrue( - algaeRemover.deployArm().alongWith(Commands.runOnce(() -> mBargeMode = true), - endEffector.algaeIntake())) - .onFalse(Commands.runOnce(() -> mBargeMode = false)); - - drivetrain.registerTelemetry(logger::telemeterize); - } - - private void configureNamedCommands() { - // create named commands for autos to use - NamedCommands.registerCommand("elevatorl4", elevator.setElevatorTarget(ElevatorConstants.kL4Height)); - NamedCommands.registerCommand("elevatorl3", elevator.setElevatorTarget(ElevatorConstants.kL3Height)); - - NamedCommands.registerCommand("startalgae", algaeRemover.deployArm() - .alongWith(Commands.runOnce(() -> mBargeMode = true), endEffector.algaeIntake())); - - NamedCommands.registerCommand("endalgae", algaeRemover.stowArm(() -> false) - .alongWith(Commands.runOnce(() -> mBargeMode = false))); - NamedCommands.registerCommand("algael2", elevator.setElevatorTarget(ElevatorConstants.kLowAlgaeHeight)); - NamedCommands.registerCommand("algael3", - elevator.setElevatorTarget(ElevatorConstants.kHighAlgaeHeight)); - NamedCommands.registerCommand("scorealgae", elevator.setElevatorTarget(ElevatorConstants.kL4Height) - .alongWith(Commands.waitSeconds(0.7).andThen(endEffector.scoreBarge() - .alongWith(algaeRemover.stowArm())))); - NamedCommands.registerCommand("elevatorstow", - elevator.setElevatorTarget(ElevatorConstants.kStowedHeight)); - NamedCommands.registerCommand("score", endEffector.autoScoreCoral()); - NamedCommands.registerCommand("score_safe", endEffector.scoreSafe(elevator::isAtHeight)); - NamedCommands.registerCommand("intake", endEffector.autoIntake()); - NamedCommands.registerCommand("intake_fast", endEffector.autoIntakeFast()); - } - - public Command getAutonomousCommand() { - return autoChooser.getSelected(); - } - - public void autoInit() { - endEffector.enableInit(); - } - - public void teleInit() { - // ensure that barge mode doesn't carry through from a previous enable - mBargeMode = false; - // send the elevator to the stow position so AJ doesn't lose time manually - // sending it down - elevator.setElevatorTarget(ElevatorConstants.kStowedHeight).schedule(); - // set default commands here to prevent issues in auto, as in auto we want to - // manually schedule all commands & states - endEffector.setDefaultCommand(endEffector.teleIntake()); - algaeRemover.setDefaultCommand(algaeRemover.stowArm(driverController.leftTrigger())); - } - - public void teleExit() { - // remove default commands after teleop to prevent accidental cancellations by - // default commands - endEffector.removeDefaultCommand(); - algaeRemover.removeDefaultCommand(); - } - - /** - * Makes sure that when entering any mode other than disabled, we don't jog the - * coral out of the end effector - */ - public void disabledExit() { - endEffector.enableInit(); - } - - /** - * Code to run while the robot is disabled. This code is for alignment purposes - * and some other currently unused functionality. - * - * TODO: make field alignment states actually useful - */ - public void disabledPeriodic() { - var xDiff = AllianceFlipUtil.apply(drivetrain.getState().Pose).getX() - 7.1; - var yDiff = AllianceFlipUtil.apply(drivetrain.getState().Pose).getY() - 1.9; - - SmartDashboard.putString("Aligned X", xDiff < -0.01 ? "Out (to cages)" - : (xDiff > 0.01 ? "Closer (away from cages)" : "Aligned")); - SmartDashboard.putString("Aligned Y", yDiff < -0.01 ? "Left" : (yDiff > 0.01 ? "Right" : "Aligned")); - SmartDashboard.putNumber("Aligned X (num)", xDiff); - SmartDashboard.putNumber("Aligned Y (num)", yDiff); - } - - private Command joystickApproach(Supplier approachPose) { - return DriveCommands.joystickApproach(drivetrain, () -> driverController.getLeftY(), approachPose); - } - - private Command L1MoveCommand() { - return drivetrain.L1Move(() -> SmartDashboard.getBoolean("L1 Direction", false)); - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/Telemetry.java b/2025-Robot-Code/src/main/java/frc/robot/Telemetry.java deleted file mode 100644 index edf1979..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/Telemetry.java +++ /dev/null @@ -1,124 +0,0 @@ -package frc.robot; - -import com.ctre.phoenix6.SignalLogger; -import com.ctre.phoenix6.swerve.SwerveDrivetrain.SwerveDriveState; - -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.kinematics.ChassisSpeeds; -import edu.wpi.first.math.kinematics.SwerveModulePosition; -import edu.wpi.first.math.kinematics.SwerveModuleState; -import edu.wpi.first.networktables.DoubleArrayPublisher; -import edu.wpi.first.networktables.DoublePublisher; -import edu.wpi.first.networktables.NetworkTable; -import edu.wpi.first.networktables.NetworkTableInstance; -import edu.wpi.first.networktables.StringPublisher; -import edu.wpi.first.networktables.StructArrayPublisher; -import edu.wpi.first.networktables.StructPublisher; -import edu.wpi.first.wpilibj.smartdashboard.Mechanism2d; -import edu.wpi.first.wpilibj.smartdashboard.MechanismLigament2d; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj.util.Color; -import edu.wpi.first.wpilibj.util.Color8Bit; - -public class Telemetry { - private final double MaxSpeed; - - /** - * Construct a telemetry object, with the specified max speed of the robot - * - * @param maxSpeed Maximum speed in meters per second - */ - public Telemetry(double maxSpeed) { - MaxSpeed = maxSpeed; - SignalLogger.start(); - } - - /* What to publish over networktables for telemetry */ - private final NetworkTableInstance inst = NetworkTableInstance.getDefault(); - - /* Robot swerve drive state */ - private final NetworkTable driveStateTable = inst.getTable("DriveState"); - private final StructPublisher drivePose = driveStateTable.getStructTopic("Pose", Pose2d.struct).publish(); - private final StructPublisher driveSpeeds = driveStateTable.getStructTopic("Speeds", ChassisSpeeds.struct).publish(); - private final StructArrayPublisher driveModuleStates = driveStateTable.getStructArrayTopic("ModuleStates", SwerveModuleState.struct).publish(); - private final StructArrayPublisher driveModuleTargets = driveStateTable.getStructArrayTopic("ModuleTargets", SwerveModuleState.struct).publish(); - private final StructArrayPublisher driveModulePositions = driveStateTable.getStructArrayTopic("ModulePositions", SwerveModulePosition.struct).publish(); - private final DoublePublisher driveTimestamp = driveStateTable.getDoubleTopic("Timestamp").publish(); - private final DoublePublisher driveOdometryFrequency = driveStateTable.getDoubleTopic("OdometryFrequency").publish(); - - /* Robot pose for field positioning */ - private final NetworkTable table = inst.getTable("Pose"); - private final DoubleArrayPublisher fieldPub = table.getDoubleArrayTopic("robotPose").publish(); - private final StringPublisher fieldTypePub = table.getStringTopic(".type").publish(); - - /* Mechanisms to represent the swerve module states */ - private final Mechanism2d[] m_moduleMechanisms = new Mechanism2d[] { - new Mechanism2d(1, 1), - new Mechanism2d(1, 1), - new Mechanism2d(1, 1), - new Mechanism2d(1, 1), - }; - /* A direction and length changing ligament for speed representation */ - private final MechanismLigament2d[] m_moduleSpeeds = new MechanismLigament2d[] { - m_moduleMechanisms[0].getRoot("RootSpeed", 0.5, 0.5).append(new MechanismLigament2d("Speed", 0.5, 0)), - m_moduleMechanisms[1].getRoot("RootSpeed", 0.5, 0.5).append(new MechanismLigament2d("Speed", 0.5, 0)), - m_moduleMechanisms[2].getRoot("RootSpeed", 0.5, 0.5).append(new MechanismLigament2d("Speed", 0.5, 0)), - m_moduleMechanisms[3].getRoot("RootSpeed", 0.5, 0.5).append(new MechanismLigament2d("Speed", 0.5, 0)), - }; - /* A direction changing and length constant ligament for module direction */ - private final MechanismLigament2d[] m_moduleDirections = new MechanismLigament2d[] { - m_moduleMechanisms[0].getRoot("RootDirection", 0.5, 0.5) - .append(new MechanismLigament2d("Direction", 0.1, 0, 0, new Color8Bit(Color.kWhite))), - m_moduleMechanisms[1].getRoot("RootDirection", 0.5, 0.5) - .append(new MechanismLigament2d("Direction", 0.1, 0, 0, new Color8Bit(Color.kWhite))), - m_moduleMechanisms[2].getRoot("RootDirection", 0.5, 0.5) - .append(new MechanismLigament2d("Direction", 0.1, 0, 0, new Color8Bit(Color.kWhite))), - m_moduleMechanisms[3].getRoot("RootDirection", 0.5, 0.5) - .append(new MechanismLigament2d("Direction", 0.1, 0, 0, new Color8Bit(Color.kWhite))), - }; - - private final double[] m_poseArray = new double[3]; - private final double[] m_moduleStatesArray = new double[8]; - private final double[] m_moduleTargetsArray = new double[8]; - - /** Accept the swerve drive state and telemeterize it to SmartDashboard and SignalLogger. */ - public void telemeterize(SwerveDriveState state) { - /* Telemeterize the swerve drive state */ - drivePose.set(state.Pose); - driveSpeeds.set(state.Speeds); - driveModuleStates.set(state.ModuleStates); - driveModuleTargets.set(state.ModuleTargets); - driveModulePositions.set(state.ModulePositions); - driveTimestamp.set(state.Timestamp); - driveOdometryFrequency.set(1.0 / state.OdometryPeriod); - - /* Also write to log file */ - m_poseArray[0] = state.Pose.getX(); - m_poseArray[1] = state.Pose.getY(); - m_poseArray[2] = state.Pose.getRotation().getDegrees(); - for (int i = 0; i < 4; ++i) { - m_moduleStatesArray[i*2 + 0] = state.ModuleStates[i].angle.getRadians(); - m_moduleStatesArray[i*2 + 1] = state.ModuleStates[i].speedMetersPerSecond; - m_moduleTargetsArray[i*2 + 0] = state.ModuleTargets[i].angle.getRadians(); - m_moduleTargetsArray[i*2 + 1] = state.ModuleTargets[i].speedMetersPerSecond; - } - - SignalLogger.writeDoubleArray("DriveState/Pose", m_poseArray); - SignalLogger.writeDoubleArray("DriveState/ModuleStates", m_moduleStatesArray); - SignalLogger.writeDoubleArray("DriveState/ModuleTargets", m_moduleTargetsArray); - SignalLogger.writeDouble("DriveState/OdometryPeriod", state.OdometryPeriod, "seconds"); - - /* Telemeterize the pose to a Field2d */ - fieldTypePub.set("Field2d"); - fieldPub.set(m_poseArray); - - /* Telemeterize the module states to a Mechanism2d */ - for (int i = 0; i < 4; ++i) { - m_moduleSpeeds[i].setAngle(state.ModuleStates[i].angle); - m_moduleDirections[i].setAngle(state.ModuleStates[i].angle); - m_moduleSpeeds[i].setLength(state.ModuleStates[i].speedMetersPerSecond / (2 * MaxSpeed)); - - SmartDashboard.putData("Module " + i, m_moduleMechanisms[i]); - } - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/VisionHelper.java b/2025-Robot-Code/src/main/java/frc/robot/VisionHelper.java deleted file mode 100644 index f41de82..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/VisionHelper.java +++ /dev/null @@ -1,30 +0,0 @@ -package frc.robot; - -import edu.wpi.first.math.Matrix; -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.numbers.N1; -import edu.wpi.first.math.numbers.N3; - -public class VisionHelper { - private Pose2d pose; - private double time; - private Matrix visionMeasurementStdDevs; - - public VisionHelper(Pose2d pose, double time, Matrix visionMeasurementStdDevs) { - this.pose = pose; - this.time = time; - this.visionMeasurementStdDevs = visionMeasurementStdDevs; - } - - public Pose2d getPose() { - return pose; - } - - public double getTime() { - return time; - } - - public Matrix getVisionMeasurementStdDevs() { - return visionMeasurementStdDevs; - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/commands/Autos.java b/2025-Robot-Code/src/main/java/frc/robot/commands/Autos.java deleted file mode 100644 index 0c89685..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/commands/Autos.java +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc.robot.commands; - -// import frc.robot.subsystems.ExampleSubsystem; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.Commands; - -public final class Autos { - /** Example static factory for an autonomous command. */ - // public static Command exampleAuto(ExampleSubsystem subsystem) { - // return Commands.sequence(subsystem.exampleMethodCommand(), new - // ExampleCommand(subsystem)); - // } - - private Autos() { - throw new UnsupportedOperationException("This is a utility class!"); - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/commands/DriveCommands.java b/2025-Robot-Code/src/main/java/frc/robot/commands/DriveCommands.java deleted file mode 100644 index 7a27477..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/commands/DriveCommands.java +++ /dev/null @@ -1,139 +0,0 @@ -package frc.robot.commands; - -import static edu.wpi.first.units.Units.MetersPerSecond; - -import java.util.function.BooleanSupplier; -import java.util.function.DoubleSupplier; -import java.util.function.Supplier; - -import com.ctre.phoenix6.swerve.SwerveRequest; - -import edu.wpi.first.math.MathUtil; -import edu.wpi.first.math.controller.ProfiledPIDController; -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.geometry.Transform2d; -import edu.wpi.first.math.geometry.Translation2d; -import edu.wpi.first.math.kinematics.ChassisSpeeds; -import edu.wpi.first.math.trajectory.TrapezoidProfile; -import edu.wpi.first.math.util.Units; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.Commands; -import frc.robot.generated.TunerConstants; -import frc.robot.subsystems.CommandSwerveDrivetrain; - -public class DriveCommands { - private static final double DEADBAND = 0.05; - private static final double ANGLE_KP = 2; - private static final double ANGLE_KD = 0; - private static final double ANGLE_MAX_VELOCITY = 8.0; - private static final double ANGLE_MAX_ACCELERATION = 20.0; - private static final double kAngleTolerance = Units.degreesToRadians(5); - private static final double kLineTolerance = 0.05; - - public static final double DRIVE_BASE_RADIUS = Math.max( - Math.max( - Math.hypot(TunerConstants.FrontLeft.LocationX, TunerConstants.FrontLeft.LocationY), - Math.hypot(TunerConstants.FrontRight.LocationX, TunerConstants.FrontRight.LocationY)), - Math.max( - Math.hypot(TunerConstants.BackLeft.LocationX, TunerConstants.BackLeft.LocationY), - Math.hypot(TunerConstants.BackRight.LocationX, TunerConstants.BackRight.LocationY))); - - private static double getMaxLinearSpeedMetersPerSecond() { - return TunerConstants.kSpeedAt12Volts.in(MetersPerSecond); - } - - /** - * Gets a linear velocity as input from the driver joystick, treating the X and - * Y component as legs of a right triangle, - * and calculates the hypotenuse - * - * @param x - the X component of the magnitude - * @param y - the Y component of the magnitude - * @return - * - */ - private static Translation2d getLinearVelocityFromJoystick(double x, double y) { - // Apply a deadband to the joystick inputs - double magnitude = Math.hypot(x, y); - Rotation2d linearDirection = new Rotation2d(Math.atan2(x, y)); - - // Squared inputs - magnitude = magnitude * magnitude; - - return new Pose2d(new Translation2d(), linearDirection) - .transformBy(new Transform2d(magnitude, 0.0, new Rotation2d())).getTranslation(); - } - - /*** - * Robot relative drive command that uses the joystick for linear control - * towards a pose. - * This uses a PID for aligning with the target laterally, and PID for angular - * control. Used for approaching - * a known pose, from a short distance away. - * - * @param drive the command-based drivetrain to control - * @param ySupplier supplier for moving forward/backward relative to the - * position being approached - * @param approachSupplier A supplier of a Pose2d facing AWAY from the target - * drivetrain that the drivetrain will approach - * @return The command to run - */ - public static Command joystickApproach(CommandSwerveDrivetrain drive, DoubleSupplier ySupplier, - Supplier approachSupplier) { - ProfiledPIDController angleController = new ProfiledPIDController(ANGLE_KP, 0.0, ANGLE_KD, - new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); - angleController.setTolerance(kAngleTolerance); - angleController.enableContinuousInput(-Math.PI, Math.PI); - ProfiledPIDController alignController = new ProfiledPIDController(1.0, 0.0, 0.0, - new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); - alignController.setTolerance(kLineTolerance); - alignController.setGoal(0); - - return Commands.run( - () -> { // Command - Translation2d currentTranslation = drive.getState().Pose.getTranslation(); - Translation2d approachTranslation = approachSupplier.get().getTranslation(); - double distanceToApproach = currentTranslation.getDistance(approachTranslation); - - Rotation2d alignmentDirection = approachSupplier.get().getRotation(); - - // Find lateral distance to Goal Pose - Translation2d goalTranslation = new Translation2d( - alignmentDirection.getCos() * distanceToApproach + approachTranslation.getX(), - alignmentDirection.getSin() * distanceToApproach + approachTranslation.getY()); - - Translation2d robotToGoal = currentTranslation.minus(goalTranslation); - double distanceToGoal = Math.hypot(robotToGoal.getX(), robotToGoal.getY()); - - // Calculate lateral linear velocity - Translation2d offsetVector = new Translation2d(alignController.calculate(distanceToGoal), 0) - .rotateBy(robotToGoal.getAngle()); - - // Calculate total linear velocity - Translation2d linearVelocity = getLinearVelocityFromJoystick( - 0, - ySupplier.getAsDouble()).rotateBy(approachSupplier.get().getRotation()).plus(offsetVector); - - double omega = angleController.calculate(drive.getState().Pose.getRotation().getRadians(), - approachSupplier.get().getRotation().rotateBy(Rotation2d.k180deg).getRadians()); - - ChassisSpeeds speeds = new ChassisSpeeds( - linearVelocity.getX() * getMaxLinearSpeedMetersPerSecond(), - linearVelocity.getY() * getMaxLinearSpeedMetersPerSecond(), - omega); - // Create a robot-centric swerve request to drive to the approach target, using - // the calculated chassis speeds. - SwerveRequest.ApplyFieldSpeeds request = new SwerveRequest.ApplyFieldSpeeds(); - drive.setControl(request.withSpeeds(speeds)); - }, - drive // Requirements - ).beforeStarting(() -> angleController.reset(drive.getState().Pose.getRotation().getRadians())); - } - - public static Command autoApproach(CommandSwerveDrivetrain drive, DoubleSupplier speed, - Supplier approachSupplier) { - return joystickApproach(drive, speed, approachSupplier).until(() -> drive.getState().Pose.getTranslation() - .getDistance(approachSupplier.get().getTranslation()) <= 0.1); - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/commands/MobilityAuto.java b/2025-Robot-Code/src/main/java/frc/robot/commands/MobilityAuto.java deleted file mode 100644 index ff64c50..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/commands/MobilityAuto.java +++ /dev/null @@ -1,60 +0,0 @@ -package frc.robot.commands; - -import java.util.List; - -import com.pathplanner.lib.auto.AutoBuilder; -import com.pathplanner.lib.path.GoalEndState; -import com.pathplanner.lib.path.PathConstraints; -import com.pathplanner.lib.path.PathPlannerPath; -import com.pathplanner.lib.path.Waypoint; - -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.wpilibj.DriverStation; -import edu.wpi.first.wpilibj2.command.Commands; -import edu.wpi.first.wpilibj2.command.ParallelCommandGroup; -import frc.robot.Constants.DriveConstants; -import frc.robot.subsystems.CommandSwerveDrivetrain; - -public class MobilityAuto extends ParallelCommandGroup{ - CommandSwerveDrivetrain mDrivetrain; - - public MobilityAuto(CommandSwerveDrivetrain drivetrain){ - mDrivetrain = drivetrain; - - try{ - boolean isBlue = DriverStation.getAlliance().isPresent() && DriverStation.getAlliance().get() == DriverStation.Alliance.Blue; - - List waypoints = - PathPlannerPath.waypointsFromPoses( - new Pose2d( - mDrivetrain.getState().Pose.getX(), - mDrivetrain.getState().Pose.getY(), - isBlue? - Rotation2d.fromDegrees(180): - Rotation2d.fromDegrees(0) - ), - isBlue? new Pose2d(mDrivetrain.getState().Pose.getX() - 2.0, mDrivetrain.getState().Pose.getY(), Rotation2d.fromDegrees(180)): - new Pose2d(mDrivetrain.getState().Pose.getX() + 2.0, mDrivetrain.getState().Pose.getY(), Rotation2d.fromDegrees(0)) - ); - - PathConstraints constraints = DriveConstants.kMobilityConstraints; - - PathPlannerPath path = new PathPlannerPath( - waypoints, - constraints, - null, - new GoalEndState(0.0, isBlue? Rotation2d.fromDegrees(180) : Rotation2d.fromDegrees(0)) - ); - addCommands(AutoBuilder.followPath(path)); - }catch (Exception e) { - DriverStation.reportError("Big oops: " + e.getMessage(), e.getStackTrace()); - addCommands(Commands.none()); - } - - addRequirements(mDrivetrain); - - - } - -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/generated/TunerConstants.java b/2025-Robot-Code/src/main/java/frc/robot/generated/TunerConstants.java deleted file mode 100644 index 157aef6..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/generated/TunerConstants.java +++ /dev/null @@ -1,286 +0,0 @@ -package frc.robot.generated; - -import static edu.wpi.first.units.Units.*; - -import com.ctre.phoenix6.CANBus; -import com.ctre.phoenix6.configs.*; -import com.ctre.phoenix6.hardware.*; -import com.ctre.phoenix6.signals.*; -import com.ctre.phoenix6.swerve.*; -import com.ctre.phoenix6.swerve.SwerveModuleConstants.*; - -import edu.wpi.first.math.Matrix; -import edu.wpi.first.math.numbers.N1; -import edu.wpi.first.math.numbers.N3; -import edu.wpi.first.units.measure.*; -import edu.wpi.first.wpilibj2.command.button.CommandXboxController; -import frc.robot.subsystems.CommandSwerveDrivetrain; - -// Generated by the Tuner X Swerve Project Generator -// https://v6.docs.ctr-electronics.com/en/stable/docs/tuner/tuner-swerve/index.html -public class TunerConstants { - // Both sets of gains need to be tuned to your individual robot. - - // The steer motor uses any SwerveModule.SteerRequestType control request with the - // output type specified by SwerveModuleConstants.SteerMotorClosedLoopOutput - private static final Slot0Configs steerGains = new Slot0Configs() - .withKP(100).withKI(0).withKD(0.5) - .withKS(0.1).withKV(2.66).withKA(0) - .withStaticFeedforwardSign(StaticFeedforwardSignValue.UseClosedLoopSign); - // When using closed-loop control, the drive motor uses the control - // output type specified by SwerveModuleConstants.DriveMotorClosedLoopOutput - private static final Slot0Configs driveGains = new Slot0Configs() - .withKP(0.1).withKI(0).withKD(0) - .withKS(0).withKV(0.124); - - // The closed-loop output type to use for the steer motors; - // This affects the PID/FF gains for the steer motors - private static final ClosedLoopOutputType kSteerClosedLoopOutput = ClosedLoopOutputType.Voltage; - // The closed-loop output type to use for the drive motors; - // This affects the PID/FF gains for the drive motors - private static final ClosedLoopOutputType kDriveClosedLoopOutput = ClosedLoopOutputType.Voltage; - - // The type of motor used for the drive motor - private static final DriveMotorArrangement kDriveMotorType = DriveMotorArrangement.TalonFX_Integrated; - // The type of motor used for the drive motor - private static final SteerMotorArrangement kSteerMotorType = SteerMotorArrangement.TalonFX_Integrated; - - // The remote sensor feedback type to use for the steer motors; - // When not Pro-licensed, Fused*/Sync* automatically fall back to Remote* - private static final SteerFeedbackType kSteerFeedbackType = SteerFeedbackType.FusedCANcoder; - - // The stator current at which the wheels start to slip; - // This needs to be tuned to your individual robot - private static final Current kSlipCurrent = Amps.of(120.0); - - // Initial configs for the drive and steer motors and the azimuth encoder; these cannot be null. - // Some configs will be overwritten; check the `with*InitialConfigs()` API documentation. - private static final TalonFXConfiguration driveInitialConfigs = new TalonFXConfiguration(); - private static final TalonFXConfiguration steerInitialConfigs = new TalonFXConfiguration() - .withCurrentLimits( - new CurrentLimitsConfigs() - // Swerve azimuth does not require much torque output, so we can set a relatively low - // stator current limit to help avoid brownouts without impacting performance. - .withStatorCurrentLimit(Amps.of(60)) - .withStatorCurrentLimitEnable(true) - ); - private static final CANcoderConfiguration encoderInitialConfigs = new CANcoderConfiguration(); - // Configs for the Pigeon 2; leave this null to skip applying Pigeon 2 configs - private static final Pigeon2Configuration pigeonConfigs = null; - - // CAN bus that the devices are located on; - // All swerve devices must share the same CAN bus - public static final CANBus kCANBus = new CANBus("canivore0", "./logs/example.hoot"); - - // Theoretical free speed (m/s) at 12 V applied output; - // This needs to be tuned to your individual robot - public static final LinearVelocity kSpeedAt12Volts = MetersPerSecond.of(4.73); - - // Every 1 rotation of the azimuth results in kCoupleRatio drive motor turns; - // This may need to be tuned to your individual robot - private static final double kCoupleRatio = 3.5714285714285716; - - private static final double kDriveGearRatio = 6.746031746031747; - private static final double kSteerGearRatio = 21.428571428571427; - private static final Distance kWheelRadius = Inches.of(2); - - private static final boolean kInvertLeftSide = false; - private static final boolean kInvertRightSide = true; - - private static final int kPigeonId = 0; - - // These are only used for simulation - private static final MomentOfInertia kSteerInertia = KilogramSquareMeters.of(0.01); - private static final MomentOfInertia kDriveInertia = KilogramSquareMeters.of(0.01); - // Simulated voltage necessary to overcome friction - private static final Voltage kSteerFrictionVoltage = Volts.of(0.2); - private static final Voltage kDriveFrictionVoltage = Volts.of(0.2); - - public static final SwerveDrivetrainConstants DrivetrainConstants = new SwerveDrivetrainConstants() - .withCANBusName(kCANBus.getName()) - .withPigeon2Id(kPigeonId) - .withPigeon2Configs(pigeonConfigs); - - private static final SwerveModuleConstantsFactory ConstantCreator = - new SwerveModuleConstantsFactory() - .withDriveMotorGearRatio(kDriveGearRatio) - .withSteerMotorGearRatio(kSteerGearRatio) - .withCouplingGearRatio(kCoupleRatio) - .withWheelRadius(kWheelRadius) - .withSteerMotorGains(steerGains) - .withDriveMotorGains(driveGains) - .withSteerMotorClosedLoopOutput(kSteerClosedLoopOutput) - .withDriveMotorClosedLoopOutput(kDriveClosedLoopOutput) - .withSlipCurrent(kSlipCurrent) - .withSpeedAt12Volts(kSpeedAt12Volts) - .withDriveMotorType(kDriveMotorType) - .withSteerMotorType(kSteerMotorType) - .withFeedbackSource(kSteerFeedbackType) - .withDriveMotorInitialConfigs(driveInitialConfigs) - .withSteerMotorInitialConfigs(steerInitialConfigs) - .withEncoderInitialConfigs(encoderInitialConfigs) - .withSteerInertia(kSteerInertia) - .withDriveInertia(kDriveInertia) - .withSteerFrictionVoltage(kSteerFrictionVoltage) - .withDriveFrictionVoltage(kDriveFrictionVoltage); - - - // Front Left - private static final int kFrontLeftDriveMotorId = 0; - private static final int kFrontLeftSteerMotorId = 1; - private static final int kFrontLeftEncoderId = 0; - private static final Angle kFrontLeftEncoderOffset = Rotations.of(0.49609375); - private static final boolean kFrontLeftSteerMotorInverted = true; - private static final boolean kFrontLeftEncoderInverted = false; - - private static final Distance kFrontLeftXPos = Inches.of(11.8645); - private static final Distance kFrontLeftYPos = Inches.of(11.8645); - - // Front Right - private static final int kFrontRightDriveMotorId = 4; - private static final int kFrontRightSteerMotorId = 5; - private static final int kFrontRightEncoderId = 2; - private static final Angle kFrontRightEncoderOffset = Rotations.of(0.26904296875); - private static final boolean kFrontRightSteerMotorInverted = true; - private static final boolean kFrontRightEncoderInverted = false; - - private static final Distance kFrontRightXPos = Inches.of(11.8645); - private static final Distance kFrontRightYPos = Inches.of(-11.8645); - - // Back Left - private static final int kBackLeftDriveMotorId = 2; - private static final int kBackLeftSteerMotorId = 3; - private static final int kBackLeftEncoderId = 1; - private static final Angle kBackLeftEncoderOffset = Rotations.of(0.34912109375); - private static final boolean kBackLeftSteerMotorInverted = true; - private static final boolean kBackLeftEncoderInverted = false; - - private static final Distance kBackLeftXPos = Inches.of(-11.8645); - private static final Distance kBackLeftYPos = Inches.of(11.8645); - - // Back Right - private static final int kBackRightDriveMotorId = 6; - private static final int kBackRightSteerMotorId = 7; - private static final int kBackRightEncoderId = 4; - private static final Angle kBackRightEncoderOffset = Rotations.of(0.38232421875); - private static final boolean kBackRightSteerMotorInverted = true; - private static final boolean kBackRightEncoderInverted = false; - - private static final Distance kBackRightXPos = Inches.of(-11.8645); - private static final Distance kBackRightYPos = Inches.of(-11.8645); - - - public static final SwerveModuleConstants FrontLeft = - ConstantCreator.createModuleConstants( - kFrontLeftSteerMotorId, kFrontLeftDriveMotorId, kFrontLeftEncoderId, kFrontLeftEncoderOffset, - kFrontLeftXPos, kFrontLeftYPos, kInvertLeftSide, kFrontLeftSteerMotorInverted, kFrontLeftEncoderInverted - ); - public static final SwerveModuleConstants FrontRight = - ConstantCreator.createModuleConstants( - kFrontRightSteerMotorId, kFrontRightDriveMotorId, kFrontRightEncoderId, kFrontRightEncoderOffset, - kFrontRightXPos, kFrontRightYPos, kInvertRightSide, kFrontRightSteerMotorInverted, kFrontRightEncoderInverted - ); - public static final SwerveModuleConstants BackLeft = - ConstantCreator.createModuleConstants( - kBackLeftSteerMotorId, kBackLeftDriveMotorId, kBackLeftEncoderId, kBackLeftEncoderOffset, - kBackLeftXPos, kBackLeftYPos, kInvertLeftSide, kBackLeftSteerMotorInverted, kBackLeftEncoderInverted - ); - public static final SwerveModuleConstants BackRight = - ConstantCreator.createModuleConstants( - kBackRightSteerMotorId, kBackRightDriveMotorId, kBackRightEncoderId, kBackRightEncoderOffset, - kBackRightXPos, kBackRightYPos, kInvertRightSide, kBackRightSteerMotorInverted, kBackRightEncoderInverted - ); - - /** - * Creates a CommandSwerveDrivetrain instance. - * This should only be called once in your robot program,. - */ - public static CommandSwerveDrivetrain createDrivetrain(CommandXboxController controller) { - return new CommandSwerveDrivetrain( - DrivetrainConstants, controller, FrontLeft, FrontRight, BackLeft, BackRight - ); - } - - - /** - * Swerve Drive class utilizing CTR Electronics' Phoenix 6 API with the selected device types. - */ - public static class TunerSwerveDrivetrain extends SwerveDrivetrain { - /** - * Constructs a CTRE SwerveDrivetrain using the specified constants. - *

- * This constructs the underlying hardware devices, so users should not construct - * the devices themselves. If they need the devices, they can access them through - * getters in the classes. - * - * @param drivetrainConstants Drivetrain-wide constants for the swerve drive - * @param modules Constants for each specific module - */ - public TunerSwerveDrivetrain( - SwerveDrivetrainConstants drivetrainConstants, - SwerveModuleConstants... modules - ) { - super( - TalonFX::new, TalonFX::new, CANcoder::new, - drivetrainConstants, modules - ); - } - - /** - * Constructs a CTRE SwerveDrivetrain using the specified constants. - *

- * This constructs the underlying hardware devices, so users should not construct - * the devices themselves. If they need the devices, they can access them through - * getters in the classes. - * - * @param drivetrainConstants Drivetrain-wide constants for the swerve drive - * @param odometryUpdateFrequency The frequency to run the odometry loop. If - * unspecified or set to 0 Hz, this is 250 Hz on - * CAN FD, and 100 Hz on CAN 2.0. - * @param modules Constants for each specific module - */ - public TunerSwerveDrivetrain( - SwerveDrivetrainConstants drivetrainConstants, - double odometryUpdateFrequency, - SwerveModuleConstants... modules - ) { - super( - TalonFX::new, TalonFX::new, CANcoder::new, - drivetrainConstants, odometryUpdateFrequency, modules - ); - } - - /** - * Constructs a CTRE SwerveDrivetrain using the specified constants. - *

- * This constructs the underlying hardware devices, so users should not construct - * the devices themselves. If they need the devices, they can access them through - * getters in the classes. - * - * @param drivetrainConstants Drivetrain-wide constants for the swerve drive - * @param odometryUpdateFrequency The frequency to run the odometry loop. If - * unspecified or set to 0 Hz, this is 250 Hz on - * CAN FD, and 100 Hz on CAN 2.0. - * @param odometryStandardDeviation The standard deviation for odometry calculation - * in the form [x, y, theta]ᵀ, with units in meters - * and radians - * @param visionStandardDeviation The standard deviation for vision calculation - * in the form [x, y, theta]ᵀ, with units in meters - * and radians - * @param modules Constants for each specific module - */ - public TunerSwerveDrivetrain( - SwerveDrivetrainConstants drivetrainConstants, - double odometryUpdateFrequency, - Matrix odometryStandardDeviation, - Matrix visionStandardDeviation, - SwerveModuleConstants... modules - ) { - super( - TalonFX::new, TalonFX::new, CANcoder::new, - drivetrainConstants, odometryUpdateFrequency, - odometryStandardDeviation, visionStandardDeviation, modules - ); - } - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/subsystems/AlgaeRemover.java b/2025-Robot-Code/src/main/java/frc/robot/subsystems/AlgaeRemover.java deleted file mode 100644 index c6f70c4..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/subsystems/AlgaeRemover.java +++ /dev/null @@ -1,83 +0,0 @@ -package frc.robot.subsystems; - -import java.util.function.BooleanSupplier; - -import com.ctre.phoenix6.StatusCode; -import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.signals.NeutralModeValue; - -import edu.wpi.first.math.MathUtil; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.Commands; -import edu.wpi.first.wpilibj2.command.SubsystemBase; -import edu.wpi.first.wpilibj2.command.button.Trigger; -import frc.robot.Constants.AlgaeConstants; - -public class AlgaeRemover extends SubsystemBase { - private final TalonFX mAlgaeMotor = new TalonFX(AlgaeConstants.kAlgaeMotorPort, "rio"); - - public AlgaeRemover() { - TalonFXConfiguration config = new TalonFXConfiguration(); - config.Feedback.withSensorToMechanismRatio(25); - config.CurrentLimits.withStatorCurrentLimit(10); - - StatusCode status = StatusCode.StatusCodeNotInitialized; - for (int i = 0; i < 5; i++) { - status = mAlgaeMotor.getConfigurator().apply(config); - if (status.isOK()) - break; - } - if (!status.isOK()) - System.err.println("Failed to configure algae remover motor: " + status.toString()); - - mAlgaeMotor.setPosition(0); - mAlgaeMotor.setNeutralMode(NeutralModeValue.Brake); - } - - public final Trigger hasDeployedTrigger = new Trigger( - () -> MathUtil.isNear(.283, mAlgaeMotor.getPosition().getValueAsDouble(), .01) - ); - - public final Trigger hasStowedTrigger = new Trigger( - () -> MathUtil.isNear(0.0, mAlgaeMotor.getPosition().getValueAsDouble(), .01) - ); - - public Command deployArm() { - return Commands.sequence( - runOnce(() -> mAlgaeMotor.set(.75)), - Commands.race( - Commands.waitUntil(hasDeployedTrigger), - Commands.waitSeconds(.5) - ), - runOnce(() -> mAlgaeMotor.stopMotor()) - ); - } - - public Command stowArm() { - return Commands.sequence( - runOnce(() -> mAlgaeMotor.set(-.75)), - Commands.race( - Commands.waitUntil(hasStowedTrigger), - Commands.waitSeconds(.5) - ), - runOnce(() -> mAlgaeMotor.stopMotor()) - ); - } - public Command stowArm(BooleanSupplier currentlyDeployed) { - return stowArm().unless(currentlyDeployed); - } - public Command dropArm() { - return Commands.sequence( - runOnce(() -> { - removeDefaultCommand(); - mAlgaeMotor.setNeutralMode(NeutralModeValue.Coast); - mAlgaeMotor.set(0.5); - }), - Commands.waitSeconds(1), - runOnce(() -> { - mAlgaeMotor.stopMotor(); - }) - ); - } -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/java/frc/robot/subsystems/Climber.java b/2025-Robot-Code/src/main/java/frc/robot/subsystems/Climber.java deleted file mode 100644 index 4fc1d38..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/subsystems/Climber.java +++ /dev/null @@ -1,52 +0,0 @@ -package frc.robot.subsystems; - -import com.ctre.phoenix6.StatusCode; -import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.signals.NeutralModeValue; - -import edu.wpi.first.wpilibj.Servo; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.SubsystemBase; - -public class Climber extends SubsystemBase { - private final Servo mServo = new Servo(0); - private final TalonFX mClimberMotor = new TalonFX(30, "canivore0"); - - public Climber() { - TalonFXConfiguration config = new TalonFXConfiguration(); - config.MotorOutput.withNeutralMode(NeutralModeValue.Brake); - StatusCode status = StatusCode.StatusCodeNotInitialized; - config.CurrentLimits.withStatorCurrentLimit(40.00); - config.withCurrentLimits(config.CurrentLimits); - - for (int i = 0; i < 5; i++) { - status = mClimberMotor.getConfigurator().apply(config); - - if (status.isOK()) - break; - } - - if (status.isError()) - System.err.println("Failed to configure elevator motors: " + status.toString()); - } - - public Command climb() { - return runOnce(() -> { - mClimberMotor.set(.75); - }); - } - - public Command declimb() { - return runOnce(() -> { - mServo.setAngle(120); - mClimberMotor.set(-0.75); - }); - } - public Command stopMotor() { - return runOnce(() -> { - mClimberMotor.stopMotor(); - mServo.setAngle(75); - }); - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/subsystems/CommandSwerveDrivetrain.java b/2025-Robot-Code/src/main/java/frc/robot/subsystems/CommandSwerveDrivetrain.java deleted file mode 100644 index f6f1888..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/subsystems/CommandSwerveDrivetrain.java +++ /dev/null @@ -1,383 +0,0 @@ -package frc.robot.subsystems; - -import static edu.wpi.first.units.Units.Second; -import static edu.wpi.first.units.Units.Volts; - -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.function.BooleanSupplier; -import java.util.function.Supplier; - -import com.ctre.phoenix6.SignalLogger; -import com.ctre.phoenix6.Utils; -import com.ctre.phoenix6.swerve.SwerveDrivetrainConstants; -import com.ctre.phoenix6.swerve.SwerveModuleConstants; -import com.ctre.phoenix6.swerve.SwerveRequest; -import com.pathplanner.lib.auto.AutoBuilder; -import com.pathplanner.lib.commands.PathPlannerAuto; -import com.pathplanner.lib.config.PIDConstants; -import com.pathplanner.lib.config.RobotConfig; -import com.pathplanner.lib.controllers.PPHolonomicDriveController; -import com.pathplanner.lib.path.GoalEndState; -import com.pathplanner.lib.path.PathConstraints; -import com.pathplanner.lib.path.PathPlannerPath; -import com.pathplanner.lib.path.Waypoint; -import edu.wpi.first.math.MathUtil; -import edu.wpi.first.math.controller.PIDController; -import edu.wpi.first.math.controller.ProfiledPIDController; -import edu.wpi.first.math.Matrix; -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.geometry.Transform2d; -import edu.wpi.first.math.kinematics.ChassisSpeeds; -import edu.wpi.first.math.numbers.N1; -import edu.wpi.first.math.numbers.N3; -import edu.wpi.first.math.util.Units; -import edu.wpi.first.wpilibj.DriverStation; -import edu.wpi.first.wpilibj.DriverStation.Alliance; -import edu.wpi.first.wpilibj.GenericHID.RumbleType; -import edu.wpi.first.wpilibj.Notifier; -import edu.wpi.first.wpilibj.RobotController; -import edu.wpi.first.wpilibj.Timer; -import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.Commands; -import edu.wpi.first.wpilibj2.command.Subsystem; -import edu.wpi.first.wpilibj2.command.button.CommandXboxController; -import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; -import frc.robot.util.AllianceFlipUtil; -import frc.robot.Constants.AutoConstants; -import frc.robot.Constants.DriveConstants; -import frc.robot.Constants.OperatorConstants; -import frc.robot.FieldConstants; -import frc.robot.generated.TunerConstants.TunerSwerveDrivetrain; - - - -/** - * Class that extends the Phoenix 6 SwerveDrivetrain class and implements - * Subsystem so it can easily be used in command-based projects. - */ -public class CommandSwerveDrivetrain extends TunerSwerveDrivetrain implements Subsystem { - private static final double kSimLoopPeriod = 0.005; // 5 ms - private final Timer mRumbleTimer = new Timer(); - private final CommandXboxController mControllerToRumble; - private Notifier m_simNotifier = null; - private double m_lastSimTime; - - /* Blue alliance sees forward as 0 degrees (toward red alliance wall) */ - private static final Rotation2d kBlueAlliancePerspectiveRotation = Rotation2d.kZero; - /* Red alliance sees forward as 180 degrees (toward blue alliance wall) */ - private static final Rotation2d kRedAlliancePerspectiveRotation = Rotation2d.k180deg; - /* Keep track if we've ever applied the operator perspective before or not */ - private boolean m_hasAppliedOperatorPerspective = false; - - /** Swerve request to apply during robot-centric path following */ - private final SwerveRequest.ApplyRobotSpeeds m_pathApplyRobotSpeeds = new SwerveRequest.ApplyRobotSpeeds(); - - /** Pose2d representing the nearest pose */ - private Pose2d m_scoringPose; - - /* Swerve requests to apply during SysId characterization */ - private final SwerveRequest.SysIdSwerveTranslation m_translationCharacterization = new SwerveRequest.SysIdSwerveTranslation(); - private final SwerveRequest.SysIdSwerveSteerGains m_steerCharacterization = new SwerveRequest.SysIdSwerveSteerGains(); - private final SwerveRequest.SysIdSwerveRotation m_rotationCharacterization = new SwerveRequest.SysIdSwerveRotation(); - - /* SysId routine for characterizing translation. This is used to find PID gains for the drive motors. */ - private final SysIdRoutine m_sysIdRoutineTranslation = new SysIdRoutine( - new SysIdRoutine.Config( - null, // Use default ramp rate (1 V/s) - Volts.of(4), // Reduce dynamic step voltage to 4 V to prevent brownout - null, // Use default timeout (10 s) - // Log state with SignalLogger class - state -> SignalLogger.writeString("SysIdTranslation_State", state.toString()) - ), - new SysIdRoutine.Mechanism( - output -> setControl(m_translationCharacterization.withVolts(output)), - null, - this - ) - ); - - /* SysId routine for characterizing steer. This is used to find PID gains for the steer motors. */ - private final SysIdRoutine m_sysIdRoutineSteer = new SysIdRoutine( - new SysIdRoutine.Config( - null, // Use default ramp rate (1 V/s) - Volts.of(7), // Use dynamic voltage of 7 V - null, // Use default timeout (10 s) - // Log state with SignalLogger class - state -> SignalLogger.writeString("SysIdSteer_State", state.toString()) - ), - new SysIdRoutine.Mechanism( - volts -> setControl(m_steerCharacterization.withVolts(volts)), - null, - this - ) - ); - - /* - * SysId routine for characterizing rotation. - * This is used to find PID gains for the FieldCentricFacingAngle HeadingController. - * See the documentation of SwerveRequest.SysIdSwerveRotation for info on importing the log to SysId. - */ - private final SysIdRoutine m_sysIdRoutineRotation = new SysIdRoutine( - new SysIdRoutine.Config( - /* This is in radians per second², but SysId only supports "volts per second" */ - Volts.of(Math.PI / 6).per(Second), - /* This is in radians per second, but SysId only supports "volts" */ - Volts.of(Math.PI), - null, // Use default timeout (10 s) - // Log state with SignalLogger class - state -> SignalLogger.writeString("SysIdRotation_State", state.toString()) - ), - new SysIdRoutine.Mechanism( - output -> { - /* output is actually radians per second, but SysId only supports "volts" */ - setControl(m_rotationCharacterization.withRotationalRate(output.in(Volts))); - /* also log the requested output for SysId */ - SignalLogger.writeDouble("Rotational_Rate", output.in(Volts)); - }, - null, - this - ) - ); - - /* The SysId routine to test */ - private SysIdRoutine m_sysIdRoutineToApply = m_sysIdRoutineTranslation; - - /** - * Constructs a CTRE SwerveDrivetrain using the specified constants. - *

- * This constructs the underlying hardware devices, so users should not construct - * the devices themselves. If they need the devices, they can access them through - * getters in the classes. - * - * @param drivetrainConstants Drivetrain-wide constants for the swerve drive - * @param modules Constants for each specific module - */ - public CommandSwerveDrivetrain( - SwerveDrivetrainConstants drivetrainConstants, - CommandXboxController controller, - SwerveModuleConstants... modules - ) { - super(drivetrainConstants, modules); - mControllerToRumble = controller; - if (Utils.isSimulation()) { - startSimThread(); - } - ConfigureAutoBuilder(); - } - - /** - * Constructs a CTRE SwerveDrivetrain using the specified constants. - *

- * This constructs the underlying hardware devices, so users should not construct - * the devices themselves. If they need the devices, they can access them through - * getters in the classes. - * - * @param drivetrainConstants Drivetrain-wide constants for the swerve drive - * @param odometryUpdateFrequency The frequency to run the odometry loop. If - * unspecified or set to 0 Hz, this is 250 Hz on - * CAN FD, and 100 Hz on CAN 2.0. - * @param modules Constants for each specific module - */ - public CommandSwerveDrivetrain( - SwerveDrivetrainConstants drivetrainConstants, - CommandXboxController controller, - double odometryUpdateFrequency, - SwerveModuleConstants... modules - ) { - super(drivetrainConstants, odometryUpdateFrequency, modules); - mControllerToRumble = controller; - if (Utils.isSimulation()) { - startSimThread(); - } - ConfigureAutoBuilder(); - } - - /** - * Constructs a CTRE SwerveDrivetrain using the specified constants. - *

- * This constructs the underlying hardware devices, so users should not construct - * the devices themselves. If they need the devices, they can access them through - * getters in the classes. - * - * @param drivetrainConstants Drivetrain-wide constants for the swerve drive - * @param odometryUpdateFrequency The frequency to run the odometry loop. If - * unspecified or set to 0 Hz, this is 250 Hz on - * CAN FD, and 100 Hz on CAN 2.0. - * @param odometryStandardDeviation The standard deviation for odometry calculation - * in the form [x, y, theta]áµ€, with units in meters - * and radians - * @param visionStandardDeviation The standard deviation for vision calculation - * in the form [x, y, theta]áµ€, with units in meters - * and radians - * @param modules Constants for each specific module - */ - public CommandSwerveDrivetrain( - SwerveDrivetrainConstants drivetrainConstants, - CommandXboxController controller, - double odometryUpdateFrequency, - Matrix odometryStandardDeviation, - Matrix visionStandardDeviation, - SwerveModuleConstants... modules - ) { - super(drivetrainConstants, odometryUpdateFrequency, odometryStandardDeviation, visionStandardDeviation, modules); - mControllerToRumble = controller; - if (Utils.isSimulation()) { - startSimThread(); - } - ConfigureAutoBuilder(); - } - -private void ConfigureAutoBuilder(){ - try { - var config = RobotConfig.fromGUISettings(); - AutoBuilder.configure( - () -> getState().Pose, // Supplier of current pose - this::resetPose, // Consumer for seeding pose against auto - () -> getState().Speeds, // Supplier of current robot speeds - // Consumer of ChassisSpeeds and feedforwards to drive the robot - (speeds, feedforwards) -> setControl( - m_pathApplyRobotSpeeds.withSpeeds(speeds) - .withWheelForceFeedforwardsX(feedforwards.robotRelativeForcesXNewtons()) - .withWheelForceFeedforwardsY(feedforwards.robotRelativeForcesYNewtons()) - ), - new PPHolonomicDriveController( - // PID constants for translation - new PIDConstants(AutoConstants.kTranslationP, AutoConstants.kTranslationI, AutoConstants.kTranslationD), - // PID constants for rotation - new PIDConstants(AutoConstants.kRotationP, AutoConstants.kRotationI, AutoConstants.kRotationD) - ), - config, - // Assume the path needs to be flipped for Red vs Blue, this is normally the case - () -> DriverStation.getAlliance().orElse(Alliance.Blue) == Alliance.Red, - this // Subsystem for requirements - ); - } catch (Exception ex) { - DriverStation.reportError("Failed to load PathPlanner config and configure AutoBuilder", ex.getStackTrace()); - } -} - - /** - * Returns a command that applies the specified control request to this swerve drivetrain. - * - * @param request Function returning the request to apply - * @return Command to run - */ - public Command applyRequest(Supplier requestSupplier) { - return run(() -> this.setControl(requestSupplier.get())); - } - - /** - * Runs the SysId Quasistatic test in the given direction for the routine - * specified by {@link #m_sysIdRoutineToApply}. - * - * @param direction Direction of the SysId Quasistatic test - * @return Command to run - */ - public Command sysIdQuasistatic(SysIdRoutine.Direction direction) { - return m_sysIdRoutineToApply.quasistatic(direction); - } - - /** - * Runs the SysId Dynamic test in the given direction for the routine - * specified by {@link #m_sysIdRoutineToApply}. - * - * @param direction Direction of the SysId Dynamic test - * @return Command to run - */ - public Command sysIdDynamic(SysIdRoutine.Direction direction) { - return m_sysIdRoutineToApply.dynamic(direction); - } - - @Override - public void periodic() { - /* - * Periodically try to apply the operator perspective. - * If we haven't applied the operator perspective before, then we should apply it regardless of DS state. - * This allows us to correct the perspective in case the robot code restarts mid-match. - * Otherwise, only check and apply the operator perspective if the DS is disabled. - * This ensures driving behavior doesn't change until an explicit disable event occurs during testing. - */ - if (!m_hasAppliedOperatorPerspective || DriverStation.isDisabled()) { - DriverStation.getAlliance().ifPresent(allianceColor -> { - setOperatorPerspectiveForward( - allianceColor == Alliance.Red - ? kRedAlliancePerspectiveRotation - : kBlueAlliancePerspectiveRotation - ); - m_hasAppliedOperatorPerspective = true; - }); - } - } - - private void startSimThread() { - m_lastSimTime = Utils.getCurrentTimeSeconds(); - - /* Run simulation at a faster rate so PID gains behave more reasonably */ - m_simNotifier = new Notifier(() -> { - final double currentTime = Utils.getCurrentTimeSeconds(); - double deltaTime = currentTime - m_lastSimTime; - m_lastSimTime = currentTime; - - /* use the measured time delta, get battery voltage from WPILib */ - updateSimState(deltaTime, RobotController.getBatteryVoltage()); - }); - m_simNotifier.startPeriodic(kSimLoopPeriod); - } - - /** - * Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate - * while still accounting for measurement noise. - * - * @param visionRobotPoseMeters The pose of the robot as measured by the vision camera. - * @param timestampSeconds The timestamp of the vision measurement in seconds. - */ - @Override - public void addVisionMeasurement(Pose2d visionRobotPoseMeters, double timestampSeconds) { - super.addVisionMeasurement(visionRobotPoseMeters, Utils.fpgaToCurrentTime(timestampSeconds)); - } - - /** - * Adds a vision measurement to the Kalman Filter. This will correct the odometry pose estimate - * while still accounting for measurement noise. - *

- * Note that the vision measurement standard deviations passed into this method - * will continue to apply to future measurements until a subsequent call to - * {@link #setVisionMeasurementStdDevs(Matrix)} or this method. - * - * @param visionRobotPoseMeters The pose of the robot as measured by the vision camera. - * @param timestampSeconds The timestamp of the vision measurement in seconds. - * @param visionMeasurementStdDevs Standard deviations of the vision pose measurement - * in the form [x, y, theta]áµ€, with units in meters and radians. - */ - @Override - public void addVisionMeasurement( - Pose2d visionRobotPoseMeters, - double timestampSeconds, - Matrix visionMeasurementStdDevs - ) { - super.addVisionMeasurement(visionRobotPoseMeters, Utils.fpgaToCurrentTime(timestampSeconds), visionMeasurementStdDevs); - } - - public Command L1Move(BooleanSupplier isRight) { - SwerveRequest.RobotCentric request = new SwerveRequest.RobotCentric(); - return run(() -> { - setControl(request.withVelocityY(isRight.getAsBoolean()? -DriveConstants.kL1Speed: DriveConstants.kL1Speed)); - }); - } - - public Command AlignAuto(SendableChooser autoChooser) { - List waypoints = PathPlannerPath.waypointsFromPoses( - getState().Pose, - autoChooser.getSelected().getStartingPose()); - - PathConstraints constraints = new PathConstraints(1.0, 1.0, Math.PI, Math.PI); - - PathPlannerPath path = new PathPlannerPath(waypoints, constraints, null, new GoalEndState(0.0, getState().Pose.getRotation())); - return AutoBuilder.followPath(path); - } -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/java/frc/robot/subsystems/Elevator.java b/2025-Robot-Code/src/main/java/frc/robot/subsystems/Elevator.java deleted file mode 100644 index 02e55fe..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/subsystems/Elevator.java +++ /dev/null @@ -1,80 +0,0 @@ -package frc.robot.subsystems; - -import static edu.wpi.first.units.Units.*; - -import frc.robot.Constants.ElevatorConstants; - -import com.ctre.phoenix6.StatusCode; -import com.ctre.phoenix6.configs.MotionMagicConfigs; -import com.ctre.phoenix6.configs.Slot0Configs; -import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.controls.Follower; -import com.ctre.phoenix6.controls.MotionMagicVoltage; -import com.ctre.phoenix6.hardware.TalonFX; - -import edu.wpi.first.math.MathUtil; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.SubsystemBase; -import edu.wpi.first.wpilibj2.command.button.Trigger; - -public class Elevator extends SubsystemBase { - - private final TalonFXConfiguration mConfig = new TalonFXConfiguration(); - private final TalonFX mElevatorMotorA = new TalonFX(ElevatorConstants.kMotorAPort, - ElevatorConstants.kMotorBus); - private final TalonFX mElevatorMotorB = new TalonFX(ElevatorConstants.kMotorBPort, - ElevatorConstants.kMotorBus); - private final MotionMagicVoltage mVoltage = new MotionMagicVoltage(0); - - private double mSetHeight = 0; - public final Trigger kIsStowed = new Trigger(() -> MathUtil.isNear(0, - mElevatorMotorA.getPosition().getValueAsDouble(), ElevatorConstants.kPositionTolerance)); - - public Elevator() { - mConfig.Feedback.SensorToMechanismRatio = ElevatorConstants.kSensorToMechanismRatio; - - mConfig.CurrentLimits.withStatorCurrentLimit(ElevatorConstants.kStatorCurrentLimit) - .withSupplyCurrentLimit(ElevatorConstants.kSupplyCurrentLimit); - - MotionMagicConfigs mmcfg = mConfig.MotionMagic; - mmcfg.withMotionMagicCruiseVelocity(RotationsPerSecond.of(ElevatorConstants.kMaxSpeed)) - .withMotionMagicAcceleration(RotationsPerSecondPerSecond.of(ElevatorConstants.kMaxAcceleration)) - .withMotionMagicJerk(RotationsPerSecondPerSecond.per(Second).of(ElevatorConstants.kMaxJerk)); - - Slot0Configs slot0 = mConfig.Slot0; - slot0.kS = ElevatorConstants.kS; - slot0.kV = ElevatorConstants.kV; - slot0.kA = ElevatorConstants.kA; - slot0.kP = ElevatorConstants.kP; - slot0.kI = ElevatorConstants.kI; - slot0.kD = ElevatorConstants.kD; - slot0.kG = ElevatorConstants.kG; - - StatusCode status = StatusCode.StatusCodeNotInitialized; - - for (int i = 0; i < 5; i++) { - status = mElevatorMotorA.getConfigurator().apply(mConfig); - - if (status.isOK()) - break; - } - - if (status.isError()) - System.err.println("Failed to configure elevator motors: " + status.toString()); - - mElevatorMotorB.setControl(new Follower(mElevatorMotorA.getDeviceID(), true)); - mElevatorMotorA.setPosition(0); - mElevatorMotorB.setPosition(0); - } - - public Command setElevatorTarget(double height) { - return run(() -> { - mSetHeight = height; - mElevatorMotorA.setControl(mVoltage.withPosition(height).withSlot(0)); - }); - } - - public boolean isAtHeight() { - return MathUtil.isNear(mSetHeight, mElevatorMotorA.getPosition().getValueAsDouble(), ElevatorConstants.kPositionTolerance); - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/subsystems/EndEffector.java b/2025-Robot-Code/src/main/java/frc/robot/subsystems/EndEffector.java deleted file mode 100644 index 7b29e1d..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/subsystems/EndEffector.java +++ /dev/null @@ -1,249 +0,0 @@ -package frc.robot.subsystems; - -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.Commands; -import edu.wpi.first.wpilibj2.command.SubsystemBase; -import edu.wpi.first.wpilibj2.command.button.CommandXboxController; -import frc.robot.Constants.EndEffectorConstants; -import frc.robot.Constants.OperatorConstants; -import edu.wpi.first.wpilibj.DigitalInput; -import edu.wpi.first.wpilibj.Timer; -import edu.wpi.first.wpilibj.GenericHID.RumbleType; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; - -import static edu.wpi.first.units.Units.Amps; - -import java.util.function.BooleanSupplier; - -import com.ctre.phoenix6.StatusCode; -import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.controls.TorqueCurrentFOC; -import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.signals.NeutralModeValue; - -public class EndEffector extends SubsystemBase { - private final DigitalInput mEntranceLineBreaker = new DigitalInput(EndEffectorConstants.kEntranceBreakerPort); - private final DigitalInput mExitLineBreaker = new DigitalInput(EndEffectorConstants.kExitBreakerPort); - private final TalonFX mEffectorMotor = new TalonFX(EndEffectorConstants.kMotorPort, "rio"); - private final TorqueCurrentFOC mTorqueCurrent = new TorqueCurrentFOC(Amps.of(20)); - - private final CommandXboxController mControllerToRumble; - private final Timer mRumbleTimer = new Timer(); - - private boolean mCoralInPosition = false; - private boolean mHasCoral = false; - private boolean mFirstTime = true; - - public EndEffector(CommandXboxController controller) { - TalonFXConfiguration config = new TalonFXConfiguration(); - config.CurrentLimits.withSupplyCurrentLimit(70); - config.CurrentLimits.withStatorCurrentLimit(120); - - StatusCode status = StatusCode.StatusCodeNotInitialized; - for (int i = 0; i < 5; i++) { - status = mEffectorMotor.getConfigurator().apply(config); - if (status.isOK()) - break; - } - if (!status.isOK()) - System.err.println("Failed to configure algae remover motor: " + status.toString()); - - mEffectorMotor.setNeutralMode(NeutralModeValue.Brake); - mControllerToRumble = controller; - } - - @Override - public void periodic() { - SmartDashboard.putBoolean("Entrance", entranceDetected()); - SmartDashboard.putBoolean("Exit", exitDetected()); - - if (mCoralInPosition) - mRumbleTimer.start(); - else { - mRumbleTimer.stop(); - mRumbleTimer.reset(); - } - - mControllerToRumble.setRumble(RumbleType.kBothRumble, - mCoralInPosition && !mRumbleTimer.hasElapsed(0.5) ? OperatorConstants.kCoralRumbleStrength : 0); - } - - public Command algaeIntake() { - return runOnce(() -> { - mEffectorMotor.set(EndEffectorConstants.kIdleSpeed); - mEffectorMotor.setControl(mTorqueCurrent); - }); - } - - public Command teleIntake() { - return runOnce(() -> { - if (!entranceDetected() && !exitDetected()) { - mEffectorMotor.set(EndEffectorConstants.kIdleSpeed); - SmartDashboard.putString("End Effector Branch", "No Coral"); - mCoralInPosition = false; - mHasCoral = false; - mFirstTime = true; - } else if (entranceDetected() && exitDetected()) { - if (mFirstTime) { - mEffectorMotor.set(EndEffectorConstants.kIntakeSpeed / 2); - mCoralInPosition = false; - mHasCoral = true; - SmartDashboard.putString("End Effector Branch", "First Time!"); - } else { - mEffectorMotor.stopMotor(); - mCoralInPosition = true; - mHasCoral = true; - SmartDashboard.putString("End Effector Branch", "In Position"); - } - } else if (entranceDetected() && !exitDetected()) { - mEffectorMotor.set(EndEffectorConstants.kIntakeSpeed); - mCoralInPosition = false; - mHasCoral = true; - SmartDashboard.putString("End Effector Branch", "Only At Entrance"); - } else if (!entranceDetected() && exitDetected()) { - mEffectorMotor.set(-EndEffectorConstants.kDriveBackSpeed); - mCoralInPosition = false; - mHasCoral = true; - mFirstTime = false; - SmartDashboard.putString("End Effector Branch", "Only At Exit"); - } else { - SmartDashboard.putString("End Effector Branch", "Invalid State"); - } - }).andThen(Commands.waitSeconds(0.05)); - } - - public Command autoIntake() { - return run(() -> { - if (!entranceDetected() && !exitDetected()) { - mEffectorMotor.set(EndEffectorConstants.kIdleSpeed); - SmartDashboard.putString("End Effector Branch", "No Coral"); - mCoralInPosition = false; - mHasCoral = false; - mFirstTime = true; - } else if (entranceDetected() && !exitDetected()) { - mEffectorMotor.set(EndEffectorConstants.kIntakeSpeed); - mCoralInPosition = false; - mHasCoral = true; - SmartDashboard.putString("End Effector Branch", "suck && !vomit"); - } else if (entranceDetected() && exitDetected()) { - if (mFirstTime) { - mEffectorMotor.set(EndEffectorConstants.kIntakeSpeed / 2); - mCoralInPosition = false; - mHasCoral = true; - SmartDashboard.putString("End Effector Branch", "First Time!"); - } else { - mEffectorMotor.stopMotor(); - mCoralInPosition = true; - mHasCoral = true; - SmartDashboard.putString("End Effector Branch", "In Position"); - } - } else if (!entranceDetected() && exitDetected()) { - mEffectorMotor.set(-EndEffectorConstants.kIntakeSpeed); - mCoralInPosition = false; - mHasCoral = true; - mFirstTime = false; - SmartDashboard.putString("End Effector Branch", "!suck && vomit"); - } - }).finallyDo(() -> { - mEffectorMotor.stopMotor(); - mCoralInPosition = false; - mHasCoral = false; - mFirstTime = true; - }); - } - - // getter for mHasCoral - public boolean hasCoral() { - return mHasCoral; - } - - // getter for mCoralInPosition - public boolean coralInPosition() { - return mCoralInPosition; - } - - public boolean entranceDetected() { - return !mEntranceLineBreaker.get(); - } - - public boolean exitDetected() { - return !mExitLineBreaker.get(); - } - - public Command autoScoreCoral() { - return runOnce(() -> { - mHasCoral = false; - mCoralInPosition = false; - mFirstTime = true; - mEffectorMotor.set(EndEffectorConstants.kFastEjectSpeed); - }); - } - - public Command scoreCoral(BooleanSupplier ejectFast) { - return run(() -> { - mHasCoral = false; - mCoralInPosition = false; - mFirstTime = true; - mEffectorMotor.set(ejectFast.getAsBoolean() ? EndEffectorConstants.kFastEjectSpeed - : EndEffectorConstants.kDefaultEjectSpeed); - }); - } - public Command scoreL1() { - return run(() -> { - mHasCoral = false; - mCoralInPosition = false; - mFirstTime = true; - mEffectorMotor.set(EndEffectorConstants.kL1EjectSpeed); - }); - } - public Command scoreBarge() { - return run(() -> { - mHasCoral = false; - mCoralInPosition = false; - mFirstTime = true; - mEffectorMotor.set(-EndEffectorConstants.kAlgaeBargeSpeed); - }); - } - - public Command scoreProcessor() { - return run(() -> { - mHasCoral = false; - mCoralInPosition = false; - mFirstTime = true; - mEffectorMotor.set(-EndEffectorConstants.kAlgaeProcessorSpeed); - }); - } - - public Command scoreSafe(BooleanSupplier elevatorIsAtHeight) { - return Commands.sequence( - Commands.waitUntil(elevatorIsAtHeight), - Commands.waitSeconds(0.15), - runOnce(() -> mEffectorMotor.set(EndEffectorConstants.kAutoEjectSpeed)), - Commands.race(Commands.waitSeconds(0.2), Commands.waitUntil(mExitLineBreaker::get)), - runOnce(() -> { - mEffectorMotor.stopMotor(); - mHasCoral = entranceDetected() || exitDetected(); - mFirstTime = true; - mCoralInPosition = false; - })); - } - - public void enableInit() { - if (entranceDetected() && exitDetected()) { - mFirstTime = false; - mCoralInPosition = true; - mHasCoral = true; - } else { - mHasCoral = entranceDetected() || exitDetected(); - mFirstTime = true; - mCoralInPosition = false; - } - } - - public Command autoIntakeFast() { - return Commands.race(Commands.waitSeconds(0.4), Commands.waitUntil(() -> exitDetected()), autoIntake()); - } - public Command autoPostIntake(Command elevatorl3) { - return autoIntake().alongWith(Commands.waitUntil(this::exitDetected).andThen(elevatorl3)); - } -} diff --git a/2025-Robot-Code/src/main/java/frc/robot/subsystems/Vision.java b/2025-Robot-Code/src/main/java/frc/robot/subsystems/Vision.java deleted file mode 100644 index 2b56a03..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/subsystems/Vision.java +++ /dev/null @@ -1,133 +0,0 @@ -package frc.robot.subsystems; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import org.photonvision.PhotonCamera; - -import edu.wpi.first.apriltag.AprilTagFieldLayout; -import edu.wpi.first.apriltag.AprilTagFields; -import edu.wpi.first.math.VecBuilder; -import edu.wpi.first.math.geometry.Pose3d; -import edu.wpi.first.math.geometry.Transform3d; -import edu.wpi.first.wpilibj.Filesystem; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj2.command.SubsystemBase; -import frc.robot.VisionHelper; -import frc.robot.Constants.VisionConstants; - -public class Vision extends SubsystemBase { - static AprilTagFieldLayout mFieldLayout; - static boolean useCustomField = false; - static final double linearStdDevBaseline = 0.02; - static final double angularStdDevBaseline = 0.06; - - public static record PoseObservation( - double timestamp, Pose3d pose, double ambiguity, int tagCount, double averageTagDistance) { - } - - static { - try { - mFieldLayout = new AprilTagFieldLayout( - Path.of(Filesystem.getDeployDirectory().getAbsolutePath() + "/weldedlayout.json")); - useCustomField = true; - } catch (Exception e) { - // TODO: handle exception - mFieldLayout = AprilTagFieldLayout.loadField(AprilTagFields.k2025ReefscapeWelded); - } - SmartDashboard.putBoolean("Field Config", useCustomField); - } - final PhotonCamera mCamera1 = new PhotonCamera(VisionConstants.kCamera1Name); - final PhotonCamera mCamera2 = new PhotonCamera(VisionConstants.kCamera2Name); - - public ArrayList getVisionResults() { - ArrayList outputs = new ArrayList<>(); - for (var observation : getObservations(mCamera1, VisionConstants.kRobotToCam1)) { - double stdDevFactor = Math.pow(observation.averageTagDistance(), 2.0) / observation.tagCount(); - double linearStdDev = linearStdDevBaseline * stdDevFactor; - double angularStdDev = angularStdDevBaseline * stdDevFactor; - outputs.add(new VisionHelper( - observation.pose.toPose2d(), observation.timestamp(), - VecBuilder.fill(linearStdDev, linearStdDev, angularStdDev))); - } - for (var observation : getObservations(mCamera2, VisionConstants.kRobotToCam2)) { - double stdDevFactor = Math.pow(observation.averageTagDistance(), 2.0) / observation.tagCount(); - double linearStdDev = linearStdDevBaseline * stdDevFactor; - double angularStdDev = angularStdDevBaseline * stdDevFactor; - outputs.add(new VisionHelper( - observation.pose.toPose2d(), observation.timestamp(), - VecBuilder.fill(linearStdDev, linearStdDev, angularStdDev))); - } - return outputs; - } - - public List getObservations(PhotonCamera camera, Transform3d robotToCamera) { - // Read new camera observations - Set tagIds = new HashSet<>(); - List poseObservations = new LinkedList<>(); - for (var result : camera.getAllUnreadResults()) { - // Add pose observation - if (result.multitagResult.isPresent()) { // Multitag result - var multitagResult = result.multitagResult.get(); - - // Calculate robot pose - Transform3d fieldToCamera = multitagResult.estimatedPose.best; - Transform3d fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); - Pose3d robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); - - // Calculate average tag distance - double totalTagDistance = 0.0; - for (var target : result.targets) { - totalTagDistance += target.bestCameraToTarget.getTranslation().getNorm(); - } - - // Add tag IDs - tagIds.addAll(multitagResult.fiducialIDsUsed); - - // Add observation - poseObservations.add( - new PoseObservation( - result.getTimestampSeconds(), // Timestamp - robotPose, // 3D pose estimate - multitagResult.estimatedPose.ambiguity, // Ambiguity - multitagResult.fiducialIDsUsed.size(), // Tag count - totalTagDistance / result.targets.size() // Average tag distance - )); - - } else if (!result.targets.isEmpty()) { // Single tag result - var target = result.targets.get(0); - - // Calculate robot pose - var tagPose = mFieldLayout.getTagPose(target.fiducialId); - if (tagPose.isPresent()) { - Transform3d fieldToTarget = new Transform3d(tagPose.get().getTranslation(), - tagPose.get().getRotation()); - Transform3d cameraToTarget = target.bestCameraToTarget; - Transform3d fieldToCamera = fieldToTarget.plus(cameraToTarget.inverse()); - Transform3d fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); - Pose3d robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); - - // Add tag ID - tagIds.add((short) target.fiducialId); - - // Add observation - poseObservations.add( - new PoseObservation( - result.getTimestampSeconds(), // Timestamp - robotPose, // 3D pose estimate - target.poseAmbiguity, // Ambiguity - 1, // Tag count - cameraToTarget.getTranslation().getNorm() // Average tag distance - )); - } - } - } - - // Save pose observations to inputs object - return poseObservations; - } -} \ No newline at end of file diff --git a/2025-Robot-Code/src/main/java/frc/robot/util/Elastic.java b/2025-Robot-Code/src/main/java/frc/robot/util/Elastic.java deleted file mode 100644 index 25c8f81..0000000 --- a/2025-Robot-Code/src/main/java/frc/robot/util/Elastic.java +++ /dev/null @@ -1,390 +0,0 @@ -// Copyright (c) 2023-2025 Gold87 and other Elastic contributors -// This software can be modified and/or shared under the terms -// defined by the Elastic license: -// https://github.com/Gold872/elastic-dashboard/blob/main/LICENSE - -package frc.robot.util; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import edu.wpi.first.networktables.NetworkTableInstance; -import edu.wpi.first.networktables.PubSubOption; -import edu.wpi.first.networktables.StringPublisher; -import edu.wpi.first.networktables.StringTopic; - -public final class Elastic { - private static final StringTopic notificationTopic = - NetworkTableInstance.getDefault().getStringTopic("/Elastic/RobotNotifications"); - private static final StringPublisher notificationPublisher = - notificationTopic.publish(PubSubOption.sendAll(true), PubSubOption.keepDuplicates(true)); - private static final StringTopic selectedTabTopic = - NetworkTableInstance.getDefault().getStringTopic("/Elastic/SelectedTab"); - private static final StringPublisher selectedTabPublisher = - selectedTabTopic.publish(PubSubOption.keepDuplicates(true)); - private static final ObjectMapper objectMapper = new ObjectMapper(); - - /** - * Sends an notification to the Elastic dashboard. The notification is serialized as a JSON string - * before being published. - * - * @param notification the {@link Notification} object containing notification details - */ - public static void sendNotification(Notification notification) { - try { - notificationPublisher.set(objectMapper.writeValueAsString(notification)); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - } - - /** - * Selects the tab of the dashboard with the given name. If no tab matches the name, this will - * have no effect on the widgets or tabs in view. - * - *

If the given name is a number, Elastic will select the tab whose index equals the number - * provided. - * - * @param tabName the name of the tab to select - */ - public static void selectTab(String tabName) { - selectedTabPublisher.set(tabName); - } - - /** - * Selects the tab of the dashboard at the given index. If this index is greater than or equal to - * the number of tabs, this will have no effect. - * - * @param tabIndex the index of the tab to select. - */ - public static void selectTab(int tabIndex) { - selectTab(Integer.toString(tabIndex)); - } - - /** - * Represents an notification object to be sent to the Elastic dashboard. This object holds - * properties such as level, title, description, display time, and dimensions to control how the - * notification is displayed on the dashboard. - */ - public static class Notification { - @JsonProperty("level") - private NotificationLevel level; - - @JsonProperty("title") - private String title; - - @JsonProperty("description") - private String description; - - @JsonProperty("displayTime") - private int displayTimeMillis; - - @JsonProperty("width") - private double width; - - @JsonProperty("height") - private double height; - - /** - * Creates a new Notification with all default parameters. This constructor is intended to be - * used with the chainable decorator methods - * - *

Title and description fields are empty. - */ - public Notification() { - this(NotificationLevel.INFO, "", ""); - } - - /** - * Creates a new Notification with all properties specified. - * - * @param level the level of the notification (e.g., INFO, WARNING, ERROR) - * @param title the title text of the notification - * @param description the descriptive text of the notification - * @param displayTimeMillis the time in milliseconds for which the notification is displayed - * @param width the width of the notification display area - * @param height the height of the notification display area, inferred if below zero - */ - public Notification( - NotificationLevel level, - String title, - String description, - int displayTimeMillis, - double width, - double height) { - this.level = level; - this.title = title; - this.displayTimeMillis = displayTimeMillis; - this.description = description; - this.height = height; - this.width = width; - } - - /** - * Creates a new Notification with default display time and dimensions. - * - * @param level the level of the notification - * @param title the title text of the notification - * @param description the descriptive text of the notification - */ - public Notification(NotificationLevel level, String title, String description) { - this(level, title, description, 3000, 350, -1); - } - - /** - * Creates a new Notification with a specified display time and default dimensions. - * - * @param level the level of the notification - * @param title the title text of the notification - * @param description the descriptive text of the notification - * @param displayTimeMillis the display time in milliseconds - */ - public Notification( - NotificationLevel level, String title, String description, int displayTimeMillis) { - this(level, title, description, displayTimeMillis, 350, -1); - } - - /** - * Creates a new Notification with specified dimensions and default display time. If the height - * is below zero, it is automatically inferred based on screen size. - * - * @param level the level of the notification - * @param title the title text of the notification - * @param description the descriptive text of the notification - * @param width the width of the notification display area - * @param height the height of the notification display area, inferred if below zero - */ - public Notification( - NotificationLevel level, String title, String description, double width, double height) { - this(level, title, description, 3000, width, height); - } - - /** - * Updates the level of this notification - * - * @param level the level to set the notification to - */ - public void setLevel(NotificationLevel level) { - this.level = level; - } - - /** - * @return the level of this notification - */ - public NotificationLevel getLevel() { - return level; - } - - /** - * Updates the title of this notification - * - * @param title the title to set the notification to - */ - public void setTitle(String title) { - this.title = title; - } - - /** - * Gets the title of this notification - * - * @return the title of this notification - */ - public String getTitle() { - return title; - } - - /** - * Updates the description of this notification - * - * @param description the description to set the notification to - */ - public void setDescription(String description) { - this.description = description; - } - - public String getDescription() { - return description; - } - - /** - * Updates the display time of the notification - * - * @param seconds the number of seconds to display the notification for - */ - public void setDisplayTimeSeconds(double seconds) { - setDisplayTimeMillis((int) Math.round(seconds * 1000)); - } - - /** - * Updates the display time of the notification in milliseconds - * - * @param displayTimeMillis the number of milliseconds to display the notification for - */ - public void setDisplayTimeMillis(int displayTimeMillis) { - this.displayTimeMillis = displayTimeMillis; - } - - /** - * Gets the display time of the notification in milliseconds - * - * @return the number of milliseconds the notification is displayed for - */ - public int getDisplayTimeMillis() { - return displayTimeMillis; - } - - /** - * Updates the width of the notification - * - * @param width the width to set the notification to - */ - public void setWidth(double width) { - this.width = width; - } - - /** - * Gets the width of the notification - * - * @return the width of the notification - */ - public double getWidth() { - return width; - } - - /** - * Updates the height of the notification - * - *

If the height is set to -1, the height will be determined automatically by the dashboard - * - * @param height the height to set the notification to - */ - public void setHeight(double height) { - this.height = height; - } - - /** - * Gets the height of the notification - * - * @return the height of the notification - */ - public double getHeight() { - return height; - } - - /** - * Modifies the notification's level and returns itself to allow for method chaining - * - * @param level the level to set the notification to - * @return the current notification - */ - public Notification withLevel(NotificationLevel level) { - this.level = level; - return this; - } - - /** - * Modifies the notification's title and returns itself to allow for method chaining - * - * @param title the title to set the notification to - * @return the current notification - */ - public Notification withTitle(String title) { - setTitle(title); - return this; - } - - /** - * Modifies the notification's description and returns itself to allow for method chaining - * - * @param description the description to set the notification to - * @return the current notification - */ - public Notification withDescription(String description) { - setDescription(description); - return this; - } - - /** - * Modifies the notification's display time and returns itself to allow for method chaining - * - * @param seconds the number of seconds to display the notification for - * @return the current notification - */ - public Notification withDisplaySeconds(double seconds) { - return withDisplayMilliseconds((int) Math.round(seconds * 1000)); - } - - /** - * Modifies the notification's display time and returns itself to allow for method chaining - * - * @param displayTimeMillis the number of milliseconds to display the notification for - * @return the current notification - */ - public Notification withDisplayMilliseconds(int displayTimeMillis) { - setDisplayTimeMillis(displayTimeMillis); - return this; - } - - /** - * Modifies the notification's width and returns itself to allow for method chaining - * - * @param width the width to set the notification to - * @return the current notification - */ - public Notification withWidth(double width) { - setWidth(width); - return this; - } - - /** - * Modifies the notification's height and returns itself to allow for method chaining - * - * @param height the height to set the notification to - * @return the current notification - */ - public Notification withHeight(double height) { - setHeight(height); - return this; - } - - /** - * Modifies the notification's height and returns itself to allow for method chaining - * - *

This will set the height to -1 to have it automatically determined by the dashboard - * - * @return the current notification - */ - public Notification withAutomaticHeight() { - setHeight(-1); - return this; - } - - /** - * Modifies the notification to disable the auto dismiss behavior - * - *

This sets the display time to 0 milliseconds - * - *

The auto dismiss behavior can be re-enabled by setting the display time to a number - * greater than 0 - * - * @return the current notification - */ - public Notification withNoAutoDismiss() { - setDisplayTimeMillis(0); - return this; - } - - /** - * Represents the possible levels of notifications for the Elastic dashboard. These levels are - * used to indicate the severity or type of notification. - */ - public enum NotificationLevel { - /** Informational Message */ - INFO, - /** Warning message */ - WARNING, - /** Error message */ - ERROR - } - } -} diff --git a/2025-Robot-Code/tuner-project.json b/2025-Robot-Code/tuner-project.json deleted file mode 100644 index be9cc60..0000000 --- a/2025-Robot-Code/tuner-project.json +++ /dev/null @@ -1 +0,0 @@ -{"Version":"1.0.0.0","LastState":11,"Modules":[{"ModuleName":"Front Left","ModuleId":0,"Encoder":{"Id":0,"Name":"Front Left","Model":"CANCoder","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"SteerMotor":{"Id":1,"Name":"FL Steer","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"DriveMotor":{"Id":0,"Name":"FL Drive","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"IsEncoderInverted":false,"IsSteerInverted":true,"SelectedEncoderType":"CANcoder","EncoderOffset":0.379638671875,"DriveMotorSelectionState":1,"SteerMotorSelectionState":1,"SteerEncoderSelectionState":1,"IsModuleValidationComplete":true,"ValidatedSteerId":1,"ValidatedDriveId":0,"ValidatedEncoderId":0},{"ModuleName":"Front Right","ModuleId":1,"Encoder":{"Id":2,"Name":"Front Right","Model":"CANCoder","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"SteerMotor":{"Id":5,"Name":"FR Steer","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"DriveMotor":{"Id":4,"Name":"FR Drive","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"IsEncoderInverted":false,"IsSteerInverted":true,"SelectedEncoderType":"CANcoder","EncoderOffset":0.350830078125,"DriveMotorSelectionState":1,"SteerMotorSelectionState":1,"SteerEncoderSelectionState":1,"IsModuleValidationComplete":true,"ValidatedSteerId":5,"ValidatedDriveId":4,"ValidatedEncoderId":2},{"ModuleName":"Back Left","ModuleId":2,"Encoder":{"Id":1,"Name":"Back Left","Model":"CANCoder","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"SteerMotor":{"Id":3,"Name":"BL Steer","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"DriveMotor":{"Id":2,"Name":"BL Drive","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"IsEncoderInverted":false,"IsSteerInverted":true,"SelectedEncoderType":"CANcoder","EncoderOffset":0.26708984375,"DriveMotorSelectionState":1,"SteerMotorSelectionState":1,"SteerEncoderSelectionState":1,"IsModuleValidationComplete":true,"ValidatedSteerId":3,"ValidatedDriveId":2,"ValidatedEncoderId":1},{"ModuleName":"Back Right","ModuleId":3,"Encoder":{"Id":3,"Name":"Back Right","Model":"CANCoder","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"SteerMotor":{"Id":7,"Name":"BR Steer","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"DriveMotor":{"Id":6,"Name":"BR Drive","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"IsEncoderInverted":false,"IsSteerInverted":true,"SelectedEncoderType":"CANcoder","EncoderOffset":0.498046875,"DriveMotorSelectionState":1,"SteerMotorSelectionState":1,"SteerEncoderSelectionState":1,"IsModuleValidationComplete":true,"ValidatedSteerId":7,"ValidatedDriveId":6,"ValidatedEncoderId":3}],"SwerveOptions":{"kSpeedAt12Volts":9.462920591575315,"Gyro":{"Id":0,"Name":"Pigeon 2 vers. S (Device ID 0)","Model":"Pigeon 2 vers. S","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"IsValidGyroCANbus":true,"VerticalTrackSizeInches":23.729,"HorizontalTrackSizeInches":23.729,"WheelRadiusInches":4.0,"IsLeftSideInverted":false,"IsRightSideInverted":true,"SwerveModuleType":4,"SwerveModuleConfiguration":{"ModuleBrand":4,"DriveRatio":6.746031746031747,"SteerRatio":21.428571428571427,"CouplingRatio":3.5714285714285716,"CustomName":"L2"},"HasVerifiedSteer":true,"SelectedModuleManufacturer":"Swerve Drive Specialties (SDS)","HasVerifiedDrive":true,"IsValidConfiguration":true}} \ No newline at end of file diff --git a/2025-Robot-Code/tuner-swerve-project.json b/2025-Robot-Code/tuner-swerve-project.json deleted file mode 100644 index 7282707..0000000 --- a/2025-Robot-Code/tuner-swerve-project.json +++ /dev/null @@ -1 +0,0 @@ -{"Version":"1.0.0.0","LastState":11,"Modules":[{"ModuleName":"Front Left","ModuleId":0,"Encoder":{"Id":0,"Name":"Front Left Pod","Model":"CANCoder","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"SteerMotor":{"Id":1,"Name":"FL Steer","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"DriveMotor":{"Id":0,"Name":"FL Drive","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"IsEncoderInverted":false,"IsSteerInverted":true,"SelectedEncoderType":"CANcoder","EncoderOffset":0.49609375,"DriveMotorSelectionState":1,"SteerMotorSelectionState":1,"SteerEncoderSelectionState":1,"IsModuleValidationComplete":true,"ValidatedSteerId":1,"ValidatedDriveId":0,"ValidatedEncoderId":0},{"ModuleName":"Front Right","ModuleId":1,"Encoder":{"Id":2,"Name":"Front Right Pod","Model":"CANCoder","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"SteerMotor":{"Id":5,"Name":"FR Steer","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"DriveMotor":{"Id":4,"Name":"FR Drive","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"IsEncoderInverted":false,"IsSteerInverted":true,"SelectedEncoderType":"CANcoder","EncoderOffset":0.26904296875,"DriveMotorSelectionState":1,"SteerMotorSelectionState":1,"SteerEncoderSelectionState":1,"IsModuleValidationComplete":true,"ValidatedSteerId":5,"ValidatedDriveId":4,"ValidatedEncoderId":2},{"ModuleName":"Back Left","ModuleId":2,"Encoder":{"Id":1,"Name":"Back Left Pod","Model":"CANCoder","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"SteerMotor":{"Id":3,"Name":"BL Steer","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"DriveMotor":{"Id":2,"Name":"BL Drive","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"IsEncoderInverted":false,"IsSteerInverted":true,"SelectedEncoderType":"CANcoder","EncoderOffset":0.34912109375,"DriveMotorSelectionState":1,"SteerMotorSelectionState":1,"SteerEncoderSelectionState":1,"IsModuleValidationComplete":true,"ValidatedSteerId":3,"ValidatedDriveId":2,"ValidatedEncoderId":1},{"ModuleName":"Back Right","ModuleId":3,"Encoder":{"Id":4,"Name":"Back Right Pod","Model":"CANCoder","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"SteerMotor":{"Id":7,"Name":"BR Steer","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"DriveMotor":{"Id":6,"Name":"BR Drive","Model":"Talon FX vers. C","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":{"Name":"WCP Kraken x60","FreeSpeedRps":96.7,"SlipCurrentLimit":120,"StatorCurrentLimit":60},"IsStandaloneFx":false},"IsEncoderInverted":false,"IsSteerInverted":true,"SelectedEncoderType":"CANcoder","EncoderOffset":0.38232421875,"DriveMotorSelectionState":1,"SteerMotorSelectionState":1,"SteerEncoderSelectionState":1,"IsModuleValidationComplete":true,"ValidatedSteerId":7,"ValidatedDriveId":6,"ValidatedEncoderId":4}],"SwerveOptions":{"kSpeedAt12Volts":4.731460295787658,"Gyro":{"Id":0,"Name":"Pigeon 2 vers. S (Device ID 0)","Model":"Pigeon 2 vers. S","CANbus":"95420E7250374E5320202047101110FF","CANbusFriendly":"canivore0","SelectedMotorType":null,"IsStandaloneFx":false},"IsValidGyroCANbus":true,"VerticalTrackSizeInches":23.729,"HorizontalTrackSizeInches":23.729,"WheelRadiusInches":2.0,"IsLeftSideInverted":false,"IsRightSideInverted":true,"SwerveModuleType":4,"SwerveModuleConfiguration":{"ModuleBrand":4,"DriveRatio":6.746031746031747,"SteerRatio":21.428571428571427,"CouplingRatio":3.5714285714285716,"CustomName":"L2"},"HasVerifiedSteer":true,"SelectedModuleManufacturer":"Swerve Drive Specialties (SDS)","HasVerifiedDrive":true,"IsValidConfiguration":true}} \ No newline at end of file diff --git a/2025-Robot-Code/vendordeps/PathplannerLib-2025.2.6.json b/2025-Robot-Code/vendordeps/PathplannerLib-2025.2.6.json deleted file mode 100644 index 95ba203..0000000 --- a/2025-Robot-Code/vendordeps/PathplannerLib-2025.2.6.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "fileName": "PathplannerLib-2025.2.6.json", - "name": "PathplannerLib", - "version": "2025.2.6", - "uuid": "1b42324f-17c6-4875-8e77-1c312bc8c786", - "frcYear": "2025", - "mavenUrls": [ - "https://3015rangerrobotics.github.io/pathplannerlib/repo" - ], - "jsonUrl": "https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json", - "javaDependencies": [ - { - "groupId": "com.pathplanner.lib", - "artifactId": "PathplannerLib-java", - "version": "2025.2.6" - } - ], - "jniDependencies": [], - "cppDependencies": [ - { - "groupId": "com.pathplanner.lib", - "artifactId": "PathplannerLib-cpp", - "version": "2025.2.6", - "libName": "PathplannerLib", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "osxuniversal", - "linuxathena", - "linuxarm32", - "linuxarm64" - ] - } - ] -} \ No newline at end of file diff --git a/2025-Robot-Code/vendordeps/Phoenix6-frc2025-latest.json b/2025-Robot-Code/vendordeps/Phoenix6-frc2025-latest.json deleted file mode 100644 index d7bea57..0000000 --- a/2025-Robot-Code/vendordeps/Phoenix6-frc2025-latest.json +++ /dev/null @@ -1,449 +0,0 @@ -{ - "fileName": "Phoenix6-frc2025-latest.json", - "name": "CTRE-Phoenix (v6)", - "version": "25.3.2", - "frcYear": "2025", - "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", - "mavenUrls": [ - "https://maven.ctr-electronics.com/release/" - ], - "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2025-latest.json", - "conflictsWith": [ - { - "uuid": "e7900d8d-826f-4dca-a1ff-182f658e98af", - "errorMessage": "Users can not have both the replay and regular Phoenix 6 vendordeps in their robot program.", - "offlineFileName": "Phoenix6-replay-frc2025-latest.json" - } - ], - "javaDependencies": [ - { - "groupId": "com.ctre.phoenix6", - "artifactId": "wpiapi-java", - "version": "25.3.2" - } - ], - "jniDependencies": [ - { - "groupId": "com.ctre.phoenix6", - "artifactId": "api-cpp", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "linuxathena" - ], - "simMode": "hwsim" - }, - { - "groupId": "com.ctre.phoenix6", - "artifactId": "tools", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "linuxathena" - ], - "simMode": "hwsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "api-cpp-sim", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "tools-sim", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simTalonSRX", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simVictorSPX", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simPigeonIMU", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simCANCoder", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProTalonFX", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProTalonFXS", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProCANcoder", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProPigeon2", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProCANrange", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProCANdi", - "version": "25.3.2", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - } - ], - "cppDependencies": [ - { - "groupId": "com.ctre.phoenix6", - "artifactId": "wpiapi-cpp", - "version": "25.3.2", - "libName": "CTRE_Phoenix6_WPI", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "linuxathena" - ], - "simMode": "hwsim" - }, - { - "groupId": "com.ctre.phoenix6", - "artifactId": "tools", - "version": "25.3.2", - "libName": "CTRE_PhoenixTools", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "linuxathena" - ], - "simMode": "hwsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "wpiapi-cpp-sim", - "version": "25.3.2", - "libName": "CTRE_Phoenix6_WPISim", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "tools-sim", - "version": "25.3.2", - "libName": "CTRE_PhoenixTools_Sim", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simTalonSRX", - "version": "25.3.2", - "libName": "CTRE_SimTalonSRX", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simVictorSPX", - "version": "25.3.2", - "libName": "CTRE_SimVictorSPX", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simPigeonIMU", - "version": "25.3.2", - "libName": "CTRE_SimPigeonIMU", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simCANCoder", - "version": "25.3.2", - "libName": "CTRE_SimCANCoder", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProTalonFX", - "version": "25.3.2", - "libName": "CTRE_SimProTalonFX", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProTalonFXS", - "version": "25.3.2", - "libName": "CTRE_SimProTalonFXS", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProCANcoder", - "version": "25.3.2", - "libName": "CTRE_SimProCANcoder", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProPigeon2", - "version": "25.3.2", - "libName": "CTRE_SimProPigeon2", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProCANrange", - "version": "25.3.2", - "libName": "CTRE_SimProCANrange", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simProCANdi", - "version": "25.3.2", - "libName": "CTRE_SimProCANdi", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - } - ] -} \ No newline at end of file diff --git a/2025-Robot-Code/vendordeps/photonlib.json b/2025-Robot-Code/vendordeps/photonlib.json deleted file mode 100644 index 2d7b1d8..0000000 --- a/2025-Robot-Code/vendordeps/photonlib.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "fileName": "photonlib.json", - "name": "photonlib", - "version": "v2025.3.1", - "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004", - "frcYear": "2025", - "mavenUrls": [ - "https://maven.photonvision.org/repository/internal", - "https://maven.photonvision.org/repository/snapshots" - ], - "jsonUrl": "https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json", - "jniDependencies": [ - { - "groupId": "org.photonvision", - "artifactId": "photontargeting-cpp", - "version": "v2025.3.1", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxathena", - "linuxx86-64", - "osxuniversal" - ] - } - ], - "cppDependencies": [ - { - "groupId": "org.photonvision", - "artifactId": "photonlib-cpp", - "version": "v2025.3.1", - "libName": "photonlib", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxathena", - "linuxx86-64", - "osxuniversal" - ] - }, - { - "groupId": "org.photonvision", - "artifactId": "photontargeting-cpp", - "version": "v2025.3.1", - "libName": "photontargeting", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxathena", - "linuxx86-64", - "osxuniversal" - ] - } - ], - "javaDependencies": [ - { - "groupId": "org.photonvision", - "artifactId": "photonlib-java", - "version": "v2025.3.1" - }, - { - "groupId": "org.photonvision", - "artifactId": "photontargeting-java", - "version": "v2025.3.1" - } - ] -} \ No newline at end of file diff --git a/AdvantageKit-License.md b/AdvantageKit-License.md new file mode 100644 index 0000000..01de6ac --- /dev/null +++ b/AdvantageKit-License.md @@ -0,0 +1,26 @@ +Copyright (c) 2021-2025 Littleton Robotics. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +- Neither the name of Littleton Robotics, FRC 6328 ("Mechanical Advantage"), + AdvantageKit, nor the names of other AdvantageKit contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY LITTLETON ROBOTICS AND OTHER ADVANTAGEKIT +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY NONINFRINGEMENT +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +LITTLETON ROBOTICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/AdvantageScope Swerve Calibration.json b/AdvantageScope Swerve Calibration.json new file mode 100644 index 0000000..f412ed2 --- /dev/null +++ b/AdvantageScope Swerve Calibration.json @@ -0,0 +1,463 @@ +{ + "hubs": [ + { + "x": 139, + "y": 95, + "width": 1100, + "height": 650, + "state": { + "sidebar": { + "width": 300, + "expanded": [ + "/Drive", + "/RealOutputs", + "/RealOutputs/SwerveStates", + "/RealOutputs/SwerveChassisSpeeds", + "/RealOutputs/Odometry" + ] + }, + "tabs": { + "selected": 1, + "tabs": [ + { + "type": 0, + "title": "", + "controller": null, + "controllerUUID": "grimvlgu9aluj8btvwotco2wpj0pto2h", + "renderer": "#/", + "controlsHeight": 0 + }, + { + "type": 9, + "title": "Drive Overview", + "controller": { + "sources": [ + { + "type": "states", + "logKey": "/RealOutputs/SwerveStates/Measured", + "logType": "SwerveModuleState[]", + "visible": true, + "options": { + "color": "#ff0000", + "arrangement": "0,1,2,3" + } + }, + { + "type": "states", + "logKey": "/RealOutputs/SwerveStates/SetpointsOptimized", + "logType": "SwerveModuleState[]", + "visible": true, + "options": { + "color": "#00ffff", + "arrangement": "0,1,2,3" + } + }, + { + "type": "chassisSpeeds", + "logKey": "/RealOutputs/SwerveChassisSpeeds/Measured", + "logType": "ChassisSpeeds", + "visible": true, + "options": { + "color": "#ff0000" + } + }, + { + "type": "chassisSpeeds", + "logKey": "/RealOutputs/SwerveChassisSpeeds/Setpoints", + "logType": "ChassisSpeeds", + "visible": true, + "options": { + "color": "#00ffff" + } + }, + { + "type": "rotation", + "logKey": "/RealOutputs/Odometry/Robot/rotation", + "logType": "Rotation2d", + "visible": true, + "options": {} + } + ], + "maxSpeed": 5, + "sizeX": 0.65, + "sizeY": 0.65, + "orientation": 1 + }, + "controllerUUID": "prdx7t2eedan6n46dxrjfu7eisf16f9o", + "renderer": null, + "controlsHeight": 200 + }, + { + "type": 3, + "title": "Field", + "controller": { + "sources": [ + { + "type": "robot", + "logKey": "/RealOutputs/Odometry/Robot", + "logType": "Pose2d", + "visible": true, + "options": { + "model": "Crab Bot" + } + }, + { + "type": "trajectory", + "logKey": "/RealOutputs/Odometry/Trajectory", + "logType": "Pose2d[]", + "visible": true, + "options": { + "color": "#ff8c00", + "size": "normal" + } + }, + { + "type": "ghost", + "logKey": "/RealOutputs/Odometry/TrajectorySetpoint", + "logType": "Pose2d", + "visible": true, + "options": { + "model": "Crab Bot", + "color": "#ff8c00" + } + } + ], + "game": "2025 Field", + "origin": "blue" + }, + "controllerUUID": "psf0y633oclnjyocus23hcnq1d4tpyte", + "renderer": { + "cameraIndex": -1, + "orbitFov": 50, + "cameraPosition": [ + 1.4695761589768238e-15, + 5.999999999999999, + -12 + ], + "cameraTarget": [ + 0, + 0.5, + 0 + ] + }, + "controlsHeight": 200 + }, + { + "type": 1, + "title": "Turn Calibration", + "controller": { + "leftSources": [ + { + "type": "stepped", + "logKey": "/Drive/Module0/TurnPosition/value", + "logType": "Number", + "visible": true, + "options": { + "color": "#e5b31b", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/Drive/Module1/TurnPosition/value", + "logType": "Number", + "visible": true, + "options": { + "color": "#af2437", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/Drive/Module2/TurnPosition/value", + "logType": "Number", + "visible": true, + "options": { + "color": "#80588e", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/Drive/Module3/TurnPosition/value", + "logType": "Number", + "visible": true, + "options": { + "color": "#e48b32", + "size": "normal" + } + } + ], + "rightSources": [], + "discreteSources": [], + "leftLockedRange": null, + "rightLockedRange": null, + "leftUnitConversion": { + "type": null, + "factor": 1 + }, + "rightUnitConversion": { + "type": null, + "factor": 1 + }, + "leftFilter": 0, + "rightFilter": 0 + }, + "controllerUUID": "ol8lk80m83ma3aegae849d6k1d29sp7d", + "renderer": null, + "controlsHeight": 200 + }, + { + "type": 1, + "title": "Drive Calibration", + "controller": { + "leftSources": [ + { + "type": "stepped", + "logKey": "/Drive/Module0/DrivePositionRad", + "logType": "Number", + "visible": true, + "options": { + "color": "#e5b31b", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/Drive/Module1/DrivePositionRad", + "logType": "Number", + "visible": true, + "options": { + "color": "#af2437", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/Drive/Module2/DrivePositionRad", + "logType": "Number", + "visible": true, + "options": { + "color": "#80588e", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/Drive/Module3/DrivePositionRad", + "logType": "Number", + "visible": true, + "options": { + "color": "#e48b32", + "size": "normal" + } + } + ], + "rightSources": [], + "discreteSources": [], + "leftLockedRange": null, + "rightLockedRange": null, + "leftUnitConversion": { + "type": null, + "factor": 1 + }, + "rightUnitConversion": { + "type": null, + "factor": 1 + }, + "leftFilter": 0, + "rightFilter": 0 + }, + "controllerUUID": "7jj1f83nsv59dd2ou11ls3ccz5tq1293", + "renderer": null, + "controlsHeight": 200 + }, + { + "type": 1, + "title": "Turn PID Tuning", + "controller": { + "leftSources": [ + { + "type": "stepped", + "logKey": "/RealOutputs/SwerveStates/Measured/0/angle/value", + "logType": "Number", + "visible": true, + "options": { + "color": "#2b66a2", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/RealOutputs/SwerveStates/SetpointsOptimized/0/angle/value", + "logType": "Number", + "visible": true, + "options": { + "color": "#e5b31b", + "size": "normal" + } + } + ], + "rightSources": [], + "discreteSources": [], + "leftLockedRange": null, + "rightLockedRange": null, + "leftUnitConversion": { + "type": null, + "factor": 1 + }, + "rightUnitConversion": { + "type": null, + "factor": 1 + }, + "leftFilter": 0, + "rightFilter": 0 + }, + "controllerUUID": "kj6tf6sxm5g04wnjrhed6mx2wpccmqtn", + "renderer": null, + "controlsHeight": 200 + }, + { + "type": 1, + "title": "Drive PID Tuning", + "controller": { + "leftSources": [ + { + "type": "stepped", + "logKey": "/RealOutputs/SwerveStates/Measured/0/speed", + "logType": "Number", + "visible": true, + "options": { + "color": "#2b66a2", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/RealOutputs/SwerveStates/SetpointsOptimized/0/speed", + "logType": "Number", + "visible": true, + "options": { + "color": "#e5b31b", + "size": "normal" + } + } + ], + "rightSources": [], + "discreteSources": [], + "leftLockedRange": null, + "rightLockedRange": null, + "leftUnitConversion": { + "type": null, + "factor": 1 + }, + "rightUnitConversion": { + "type": null, + "factor": 1 + }, + "leftFilter": 0, + "rightFilter": 0 + }, + "controllerUUID": "bctxg9pmwpo31m9bv9ofr92oqqtbpqzp", + "renderer": null, + "controlsHeight": 200 + }, + { + "type": 1, + "title": "Max Speed Measurement", + "controller": { + "leftSources": [ + { + "type": "stepped", + "logKey": "/RealOutputs/SwerveChassisSpeeds/Measured/vx", + "logType": "Number", + "visible": true, + "options": { + "color": "#2b66a2", + "size": "normal" + } + }, + { + "type": "stepped", + "logKey": "/RealOutputs/SwerveChassisSpeeds/Measured/vy", + "logType": "Number", + "visible": true, + "options": { + "color": "#e5b31b", + "size": "normal" + } + } + ], + "rightSources": [], + "discreteSources": [], + "leftLockedRange": null, + "rightLockedRange": null, + "leftUnitConversion": { + "type": null, + "factor": 1 + }, + "rightUnitConversion": { + "type": null, + "factor": 1 + }, + "leftFilter": 0, + "rightFilter": 0 + }, + "controllerUUID": "oy3vmjuhr7g36evikwnmjhfacl30mzn5", + "renderer": null, + "controlsHeight": 200 + }, + { + "type": 1, + "title": "Slip Current Measurement", + "controller": { + "leftSources": [ + { + "type": "stepped", + "logKey": "/Drive/Module0/DriveCurrentAmps", + "logType": "Number", + "visible": true, + "options": { + "color": "#2b66a2", + "size": "normal" + } + } + ], + "rightSources": [ + { + "type": "stepped", + "logKey": "/Drive/Module0/DriveVelocityRadPerSec", + "logType": "Number", + "visible": true, + "options": { + "color": "#e5b31b", + "size": "normal" + } + } + ], + "discreteSources": [], + "leftLockedRange": null, + "rightLockedRange": null, + "leftUnitConversion": { + "type": null, + "factor": 1 + }, + "rightUnitConversion": { + "type": null, + "factor": 1 + }, + "leftFilter": 0, + "rightFilter": 0 + }, + "controllerUUID": "efudylbvebbv1ga2kosknov0uegmtj7h", + "renderer": null, + "controlsHeight": 200 + } + ] + } + } + } + ], + "satellites": [], + "version": "4.0.0-beta-3" +} diff --git a/2025-Robot-Code/WPILib-License.md b/WPILib-License.md similarity index 60% rename from 2025-Robot-Code/WPILib-License.md rename to WPILib-License.md index 645e542..051080d 100644 --- a/2025-Robot-Code/WPILib-License.md +++ b/WPILib-License.md @@ -1,16 +1,17 @@ -Copyright (c) 2009-2024 FIRST and other WPILib contributors +Copyright (c) 2009-2025 FIRST and other WPILib contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of FIRST, WPILib, nor the names of other WPILib - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. + +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +- Neither the name of FIRST, WPILib, nor the names of other WPILib + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY FIRST AND OTHER WPILIB CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..6875f07 --- /dev/null +++ b/build.gradle @@ -0,0 +1,219 @@ +plugins { + id "java" + id "edu.wpi.first.GradleRIO" version "2025.3.2" + id "com.peterabeles.gversion" version "1.10" + id "com.diffplug.spotless" version "6.12.0" + id "io.freefair.lombok" version "8.4" +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +def ROBOT_MAIN_CLASS = "frc.robot.Main" + +// Define my targets (RoboRIO) and artifacts (deployable files) +// This is added by GradleRIO's backing project DeployUtils. +deploy { + targets { + roborio(getTargetTypeClass('RoboRIO')) { + // Team number is loaded either from the .wpilib/wpilib_preferences.json + // or from command line. If not found an exception will be thrown. + // You can use getTeamOrDefault(team) instead of getTeamNumber if you + // want to store a team number in this file. + team = project.frc.getTeamNumber() + debug = project.frc.getDebugOrDefault(false) + + artifacts { + // First part is artifact name, 2nd is artifact type + // getTargetTypeClass is a shortcut to get the class type using a string + + frcJava(getArtifactTypeClass('FRCJavaArtifact')) { + jvmArgs.add("-XX:+UnlockExperimentalVMOptions") + jvmArgs.add("-XX:GCTimeRatio=5") + jvmArgs.add("-XX:+UseSerialGC") + jvmArgs.add("-XX:MaxGCPauseMillis=50") + + // The options below may improve performance, but should only be enabled on the RIO 2 + // + final MAX_JAVA_HEAP_SIZE_MB = 100; + jvmArgs.add("-Xmx" + MAX_JAVA_HEAP_SIZE_MB + "M") + jvmArgs.add("-Xms" + MAX_JAVA_HEAP_SIZE_MB + "M") + jvmArgs.add("-XX:+AlwaysPreTouch") + } + + // Static files artifact + frcStaticFileDeploy(getArtifactTypeClass('FileTreeArtifact')) { + files = project.fileTree('src/main/deploy') + directory = '/home/lvuser/deploy' + // Change to true to delete files on roboRIO that no + // longer exist in deploy directory on roboRIO + deleteOldFiles = true + } + } + } + } +} + +def deployArtifact = deploy.targets.roborio.artifacts.frcJava + +// Set to true to use debug for JNI. +wpi.java.debugJni = false + +// Set this to true to enable desktop support. +def includeDesktopSupport = true + +// Configuration for AdvantageKit +task(replayWatch, type: JavaExec) { + mainClass = "org.littletonrobotics.junction.ReplayWatch" + classpath = sourceSets.main.runtimeClasspath +} + +// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries. +// Also defines JUnit 4. +dependencies { + annotationProcessor wpi.java.deps.wpilibAnnotations() + implementation wpi.java.deps.wpilib() + implementation wpi.java.vendor.java() + + roborioDebug wpi.java.deps.wpilibJniDebug(wpi.platforms.roborio) + roborioDebug wpi.java.vendor.jniDebug(wpi.platforms.roborio) + + roborioRelease wpi.java.deps.wpilibJniRelease(wpi.platforms.roborio) + roborioRelease wpi.java.vendor.jniRelease(wpi.platforms.roborio) + + nativeDebug wpi.java.deps.wpilibJniDebug(wpi.platforms.desktop) + nativeDebug wpi.java.vendor.jniDebug(wpi.platforms.desktop) + simulationDebug wpi.sim.enableDebug() + + nativeRelease wpi.java.deps.wpilibJniRelease(wpi.platforms.desktop) + nativeRelease wpi.java.vendor.jniRelease(wpi.platforms.desktop) + simulationRelease wpi.sim.enableRelease() + + testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + + def akitJson = new groovy.json.JsonSlurper().parseText(new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text) + annotationProcessor "org.littletonrobotics.akit:akit-autolog:$akitJson.version" +} + +test { + useJUnitPlatform() + systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' +} + +// Simulation configuration (e.g. environment variables). +// +// The sim GUI is *disabled* by default to support running +// AdvantageKit log replay from the command line. Set the +// value to "true" to enable the sim GUI by default (this +// is the standard WPILib behavior). +wpi.sim.addGui().defaultEnabled = false +wpi.sim.addDriverstation() + +// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar') +// in order to make them all available at runtime. Also adding the manifest so WPILib +// knows where to look for our Robot Class. +jar { + from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } + from sourceSets.main.allSource + manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS) + duplicatesStrategy = DuplicatesStrategy.INCLUDE +} + +// Configure jar and deploy tasks +deployArtifact.jarTask = jar +wpi.java.configureExecutableTasks(jar) +wpi.java.configureTestTasks(test) + +// Configure string concat to always inline compile +tasks.withType(JavaCompile) { + options.compilerArgs.add '-XDstringConcat=inline' +} + +// Create version file +project.compileJava.dependsOn(createVersionFile) +gversion { + srcDir = "src/main/java/" + classPackage = "frc.robot" + className = "BuildConstants" + dateFormat = "yyyy-MM-dd HH:mm:ss z" + timeZone = "America/New_York" + indent = " " +} + +// Create commit with working changes on event branches +task(eventDeploy) { + doLast { + if (project.gradle.startParameter.taskNames.any({ it.toLowerCase().contains("deploy") })) { + def branchPrefix = "event" + def branch = 'git branch --show-current'.execute().text.trim() + def commitMessage = "Update at '${new Date().toString()}'" + + if (branch.startsWith(branchPrefix)) { + exec { + workingDir(projectDir) + executable 'git' + args 'add', '-A' + } + exec { + workingDir(projectDir) + executable 'git' + args 'commit', '-m', commitMessage + ignoreExitValue = true + } + + println "Committed to branch: '$branch'" + println "Commit message: '$commitMessage'" + } else { + println "Not on an event branch, skipping commit" + } + } else { + println "Not running deploy task, skipping commit" + } + } +} +createVersionFile.dependsOn(eventDeploy) + +// Spotless formatting +project.compileJava.dependsOn(spotlessApply) +spotless { + java { + target fileTree(".") { + include "**/*.java" + exclude "**/build/**", "**/build-*/**" + } + toggleOffOn() + googleJavaFormat() + removeUnusedImports() + trimTrailingWhitespace() + endWithNewline() + } + groovyGradle { + target fileTree(".") { + include "**/*.gradle" + exclude "**/build/**", "**/build-*/**" + } + greclipse() + indentWithSpaces(4) + trimTrailingWhitespace() + endWithNewline() + } + json { + target fileTree(".") { + include "**/*.json" + exclude "**/build/**", "**/build-*/**" + } + gson().indentWithSpaces(2) + } + format "misc", { + target fileTree(".") { + include "**/*.md", "**/.gitignore" + exclude "**/build/**", "**/build-*/**" + } + trimTrailingWhitespace() + indentWithSpaces(2) + endWithNewline() + } +} diff --git a/deploy/pathplanner/navgrid.json b/deploy/pathplanner/navgrid.json deleted file mode 100644 index 23e0db9..0000000 --- a/deploy/pathplanner/navgrid.json +++ /dev/null @@ -1 +0,0 @@ -{"field_size":{"x":17.548,"y":8.052},"nodeSizeMeters":0.3,"grid":[[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true]]} \ No newline at end of file diff --git a/2025-Robot-Code/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from 2025-Robot-Code/gradle/wrapper/gradle-wrapper.jar rename to gradle/wrapper/gradle-wrapper.jar diff --git a/2025-Robot-Code/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from 2025-Robot-Code/gradle/wrapper/gradle-wrapper.properties rename to gradle/wrapper/gradle-wrapper.properties diff --git a/2025-Robot-Code/gradlew b/gradlew similarity index 96% rename from 2025-Robot-Code/gradlew rename to gradlew index f5feea6..1aa94a4 100644 --- a/2025-Robot-Code/gradlew +++ b/gradlew @@ -15,8 +15,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# SPDX-License-Identifier: Apache-2.0 -# ############################################################################## # @@ -57,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -86,8 +84,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/2025-Robot-Code/gradlew.bat b/gradlew.bat similarity index 91% rename from 2025-Robot-Code/gradlew.bat rename to gradlew.bat index 9d21a21..896a53f 100644 --- a/2025-Robot-Code/gradlew.bat +++ b/gradlew.bat @@ -13,8 +13,6 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -45,11 +43,13 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +where java.exe + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. goto fail @@ -59,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. goto fail diff --git a/2025-Robot-Code/settings.gradle b/settings.gradle similarity index 100% rename from 2025-Robot-Code/settings.gradle rename to settings.gradle diff --git a/src/main/deploy/pathplanner/navgrid.json b/src/main/deploy/pathplanner/navgrid.json new file mode 100644 index 0000000..bbd9194 --- /dev/null +++ b/src/main/deploy/pathplanner/navgrid.json @@ -0,0 +1,1656 @@ +{ + "field_size": { + "x": 17.548, + "y": 8.052 + }, + "nodeSizeMeters": 0.3, + "grid": [ + [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true + ], + [ + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true + ], + [ + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true + ], + [ + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ] + ] +} diff --git a/src/main/deploy/pathplanner/settings.json b/src/main/deploy/pathplanner/settings.json new file mode 100644 index 0000000..a08ec4a --- /dev/null +++ b/src/main/deploy/pathplanner/settings.json @@ -0,0 +1,32 @@ +{ + "robotWidth": 0.9, + "robotLength": 0.9, + "holonomicMode": true, + "pathFolders": [], + "autoFolders": [], + "defaultMaxVel": 4.73, + "defaultMaxAccel": 5.0, + "defaultMaxAngVel": 540.0, + "defaultMaxAngAccel": 720.0, + "defaultNominalVoltage": 12.0, + "robotMass": 74.088, + "robotMOI": 6.883, + "robotTrackwidth": 0.546, + "driveWheelRadius": 0.048, + "driveGearing": 5.143, + "maxDriveSpeed": 5.45, + "driveMotorType": "krakenX60FOC", + "driveCurrentLimit": 60.0, + "wheelCOF": 1.2, + "flModuleX": 0.273, + "flModuleY": 0.273, + "frModuleX": 0.273, + "frModuleY": -0.273, + "blModuleX": -0.273, + "blModuleY": 0.273, + "brModuleX": -0.273, + "brModuleY": -0.273, + "bumperOffsetX": 0.0, + "bumperOffsetY": 0.0, + "robotFeatures": [] +} diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java new file mode 100644 index 0000000..7a782a5 --- /dev/null +++ b/src/main/java/frc/robot/Constants.java @@ -0,0 +1,36 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot; + +import com.ctre.phoenix6.CANBus; +import edu.wpi.first.wpilibj.RobotBase; + +/** + * This class defines the runtime mode used by AdvantageKit. The mode is always "real" when running + * on a roboRIO. Change the value of "simMode" to switch between "sim" (physics sim) and "replay" + * (log replay from a file). + */ +public final class Constants { + public static final CANBus kRIOBus = new CANBus("rio"), kCanivore = new CANBus("canivore0"); + + public static final Mode simMode = Mode.SIM; + public static final Mode currentMode = RobotBase.isReal() ? Mode.REAL : simMode; + + public static enum Mode { + /** Running on a real robot. */ + REAL, + + /** Running a physics simulator. */ + SIM, + + /** Replaying from a log file. */ + REPLAY + } + + public static final double MAX_SYNC_WAIT = 0.015, MAX_INITIAL_SYNC_WAIT = 1; +} diff --git a/src/main/java/frc/robot/FieldConstants.java b/src/main/java/frc/robot/FieldConstants.java new file mode 100644 index 0000000..eff9b46 --- /dev/null +++ b/src/main/java/frc/robot/FieldConstants.java @@ -0,0 +1,233 @@ +// Copyright (c) 2025 FRC 6328 +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file at +// the root directory of this project. + +package frc.robot; + +import edu.wpi.first.math.geometry.*; +import edu.wpi.first.math.util.Units; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Contains various field dimensions and useful reference points. All units are in meters and poses + * have a blue alliance origin. + */ +public class FieldConstants { + public static final double fieldLength = Units.inchesToMeters(690.876); + public static final double fieldWidth = Units.inchesToMeters(317); + public static final Translation2d fieldCenter = + new Translation2d(fieldLength / 2, fieldWidth / 2); + public static final double startingLineX = + Units.inchesToMeters(299.438); // Measured from the inside of starting + // line + + public static class Processor { + public static final Pose2d centerFace = + new Pose2d(Units.inchesToMeters(235.726), 0, Rotation2d.fromDegrees(90)); + } + + public static class Barge { + public static final Translation2d farCage = + new Translation2d(Units.inchesToMeters(345.428), Units.inchesToMeters(286.779)); + public static final Translation2d middleCage = + new Translation2d(Units.inchesToMeters(345.428), Units.inchesToMeters(242.855)); + public static final Translation2d closeCage = + new Translation2d(Units.inchesToMeters(345.428), Units.inchesToMeters(199.947)); + + // Measured from floor to bottom of cage + public static final double deepHeight = Units.inchesToMeters(3.125); + public static final double shallowHeight = Units.inchesToMeters(30.125); + } + + public static class CoralStation { + public static final Pose2d leftCenterFace = + new Pose2d( + Units.inchesToMeters(33.526), + Units.inchesToMeters(291.176), + Rotation2d.fromDegrees(90 - 144.011)); + public static final Pose2d rightCenterFace = + new Pose2d( + Units.inchesToMeters(33.526), + Units.inchesToMeters(25.824), + Rotation2d.fromDegrees(144.011 - 90)); + } + + public static class Reef { + public static final Translation2d centerOfReef = + new Translation2d(Units.inchesToMeters(176.746), Units.inchesToMeters(158.501)); + public static final double faceToZoneLine = + Units.inchesToMeters(12); // Side of the reef to the inside of the + // reef zone line + + public static final Pose2d[] centerFaces = + new Pose2d[12]; // Starting facing the driver station in clockwise + // order + public static final List> branchPositions = + new ArrayList<>(); // Starting at the right + // branch facing the + // driver station in + // clockwise order + + static { + // Initialize faces + centerFaces[0] = + new Pose2d( + Units.inchesToMeters(144.003), + Units.inchesToMeters(158.500), + Rotation2d.fromDegrees(180)); + centerFaces[1] = + new Pose2d( + Units.inchesToMeters(160.373), + Units.inchesToMeters(186.857), + Rotation2d.fromDegrees(120)); + centerFaces[2] = + new Pose2d( + Units.inchesToMeters(193.116), + Units.inchesToMeters(186.858), + Rotation2d.fromDegrees(60)); + centerFaces[3] = + new Pose2d( + Units.inchesToMeters(209.489), + Units.inchesToMeters(158.502), + Rotation2d.fromDegrees(0)); + centerFaces[4] = + new Pose2d( + Units.inchesToMeters(193.118), + Units.inchesToMeters(130.145), + Rotation2d.fromDegrees(-60)); + centerFaces[5] = + new Pose2d( + Units.inchesToMeters(160.375), + Units.inchesToMeters(130.144), + Rotation2d.fromDegrees(-120)); + + centerFaces[6] = centerFaces[0].rotateAround(fieldCenter, Rotation2d.k180deg); + centerFaces[7] = centerFaces[1].rotateAround(fieldCenter, Rotation2d.k180deg); + centerFaces[8] = centerFaces[2].rotateAround(fieldCenter, Rotation2d.k180deg); + centerFaces[9] = centerFaces[3].rotateAround(fieldCenter, Rotation2d.k180deg); + centerFaces[10] = centerFaces[4].rotateAround(fieldCenter, Rotation2d.k180deg); + centerFaces[11] = centerFaces[5].rotateAround(fieldCenter, Rotation2d.k180deg); + + // Initialize branch positions + for (int face = 0; face < centerFaces.length; face++) { + Map fillRight = new HashMap<>(); + Map fillLeft = new HashMap<>(); + for (var level : ReefHeight.values()) { + Pose2d poseDirection = new Pose2d(); + if (face < 6) { + poseDirection = new Pose2d(centerOfReef, centerFaces[face].getRotation()); + } else { + poseDirection = + new Pose2d( + centerOfReef.rotateAround(fieldCenter, Rotation2d.k180deg), + centerFaces[face].getRotation()); + } + + double adjustX = Units.inchesToMeters(30.738); // Depth of branch from reef face + double adjustY = Units.inchesToMeters(6.469); // Offset from reef face + // centerline to branch + + fillRight.put( + level, + new Pose3d( + new Translation3d( + poseDirection + .transformBy(new Transform2d(adjustX, adjustY, new Rotation2d())) + .getX(), + poseDirection + .transformBy(new Transform2d(adjustX, adjustY, new Rotation2d())) + .getY(), + level.height), + new Rotation3d( + 0, + Units.degreesToRadians(level.pitch), + poseDirection.getRotation().getRadians()))); + fillLeft.put( + level, + new Pose3d( + new Translation3d( + poseDirection + .transformBy(new Transform2d(adjustX, -adjustY, new Rotation2d())) + .getX(), + poseDirection + .transformBy(new Transform2d(adjustX, -adjustY, new Rotation2d())) + .getY(), + level.height), + new Rotation3d( + 0, + Units.degreesToRadians(level.pitch), + poseDirection.getRotation().getRadians()))); + } + branchPositions.add(fillRight); + branchPositions.add(fillLeft); + } + } + } + + public static class StagingPositions { + // Measured from the center of the ice cream + public static final Pose2d leftIceCream = + new Pose2d(Units.inchesToMeters(48), Units.inchesToMeters(230.5), new Rotation2d()); + public static final Pose2d middleIceCream = + new Pose2d(Units.inchesToMeters(48), Units.inchesToMeters(158.5), new Rotation2d()); + public static final Pose2d rightIceCream = + new Pose2d(Units.inchesToMeters(48), Units.inchesToMeters(86.5), new Rotation2d()); + } + + public enum ReefHeight { + L4(Units.inchesToMeters(72), -90), + L3(Units.inchesToMeters(47.625), -35), + L2(Units.inchesToMeters(31.875), -35), + L1(Units.inchesToMeters(18), 0); + + ReefHeight(double height, double pitch) { + this.height = height; + this.pitch = pitch; // in degrees + } + + public final double height; + public final double pitch; + } + + public static Pose2d getNearestReefFace(Pose2d currentPose) { + return currentPose.nearest(List.of(FieldConstants.Reef.centerFaces)); + } + + public enum ReefSide { + LEFT, + RIGHT + } + + public static Pose2d getNearestReefBranch(Pose2d currentPose, ReefSide side) { + return FieldConstants.Reef.branchPositions + .get( + List.of(FieldConstants.Reef.centerFaces).indexOf(getNearestReefFace(currentPose)) * 2 + + (side == ReefSide.LEFT ? 1 : 0)) + .get(FieldConstants.ReefHeight.L1) + .toPose2d(); + } + + public static Pose2d getNearestCoralStation(Pose2d currentPose) { + if (currentPose.getTranslation().getX() > FieldConstants.fieldLength / 2) { + if (currentPose.getTranslation().getY() > FieldConstants.fieldWidth / 2) { + return FieldConstants.CoralStation.rightCenterFace.rotateAround( + FieldConstants.fieldCenter, Rotation2d.k180deg); + } else { + return FieldConstants.CoralStation.leftCenterFace.rotateAround( + FieldConstants.fieldCenter, Rotation2d.k180deg); + } + } else { + if (currentPose.getTranslation().getY() > FieldConstants.fieldWidth / 2) { + return FieldConstants.CoralStation.leftCenterFace; + } else { + return FieldConstants.CoralStation.rightCenterFace; + } + } + } +} diff --git a/src/main/java/frc/robot/Main.java b/src/main/java/frc/robot/Main.java new file mode 100644 index 0000000..6ab9def --- /dev/null +++ b/src/main/java/frc/robot/Main.java @@ -0,0 +1,28 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot; + +import edu.wpi.first.wpilibj.RobotBase; + +/** + * Do NOT add any static variables to this class, or any initialization at all. Unless you know what + * you are doing, do not modify this file except to change the parameter class to the startRobot + * call. + */ +public final class Main { + private Main() {} + + /** + * Main initialization function. Do not perform any initialization here. + * + *

If you change your main robot class, change the parameter type. + */ + public static void main(String... args) { + RobotBase.startRobot(Robot::new); + } +} diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java new file mode 100644 index 0000000..aa92ca3 --- /dev/null +++ b/src/main/java/frc/robot/Robot.java @@ -0,0 +1,185 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot; + +import com.ctre.phoenix6.swerve.SwerveModuleConstants; +import com.ctre.phoenix6.swerve.SwerveModuleConstants.DriveMotorArrangement; +import com.ctre.phoenix6.swerve.SwerveModuleConstants.SteerMotorArrangement; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.CommandScheduler; +import frc.robot.autopilot.Quadrant; +import frc.robot.generated.TunerConstants; +import org.littletonrobotics.junction.LogFileUtil; +import org.littletonrobotics.junction.LoggedRobot; +import org.littletonrobotics.junction.Logger; +import org.littletonrobotics.junction.networktables.NT4Publisher; +import org.littletonrobotics.junction.wpilog.WPILOGReader; +import org.littletonrobotics.junction.wpilog.WPILOGWriter; + +/** + * The VM is configured to automatically run this class, and to call the functions corresponding to + * each mode, as described in the TimedRobot documentation. If you change the name of this class or + * the package after creating this project, you must also update the build.gradle file in the + * project. + */ +public class Robot extends LoggedRobot { + private Command autonomousCommand; + private final RobotContainer robotContainer; + + public Robot() { + // Record metadata + Logger.recordMetadata("ProjectName", BuildConstants.MAVEN_NAME); + Logger.recordMetadata("BuildDate", BuildConstants.BUILD_DATE); + Logger.recordMetadata("GitSHA", BuildConstants.GIT_SHA); + Logger.recordMetadata("GitDate", BuildConstants.GIT_DATE); + Logger.recordMetadata("GitBranch", BuildConstants.GIT_BRANCH); + switch (BuildConstants.DIRTY) { + case 0: + Logger.recordMetadata("GitDirty", "All changes committed"); + break; + case 1: + Logger.recordMetadata("GitDirty", "Uncomitted changes"); + break; + default: + Logger.recordMetadata("GitDirty", "Unknown"); + break; + } + + // Set up data receivers & replay source + switch (Constants.currentMode) { + case REAL: + // Running on a real robot, log to a USB stick ("/U/logs") + Logger.addDataReceiver(new WPILOGWriter()); + Logger.addDataReceiver(new NT4Publisher()); + break; + + case SIM: + // Running a physics simulator, log to NT + Logger.addDataReceiver(new NT4Publisher()); + break; + + case REPLAY: + // Replaying a log, set up replay source + setUseTiming(false); // Run as fast as possible + String logPath = LogFileUtil.findReplayLog(); + Logger.setReplaySource(new WPILOGReader(logPath)); + Logger.addDataReceiver(new WPILOGWriter(LogFileUtil.addPathSuffix(logPath, "_sim"))); + break; + } + + // Start AdvantageKit logger + Logger.start(); + + // Check for valid swerve config + var modules = + new SwerveModuleConstants[] { + TunerConstants.FrontLeft, + TunerConstants.FrontRight, + TunerConstants.BackLeft, + TunerConstants.BackRight + }; + for (var constants : modules) { + if (constants.DriveMotorType != DriveMotorArrangement.TalonFX_Integrated + || constants.SteerMotorType != SteerMotorArrangement.TalonFX_Integrated) { + throw new RuntimeException( + "You are using an unsupported swerve configuration, which this template does not support without manual customization. The 2025 release of Phoenix supports some swerve configurations which were not available during 2025 beta testing, preventing any development and support from the AdvantageKit developers."); + } + } + + // Instantiate our RobotContainer. This will perform all our button bindings, + // and put our autonomous chooser on the dashboard. + robotContainer = new RobotContainer(); + } + + /** This function is called periodically during all modes. */ + @Override + public void robotPeriodic() { + // Optionally switch the thread to high priority to improve loop + // timing (see the template project documentation for details) + // Threads.setCurrentThreadPriority(true, 99); + + // Runs the Scheduler. This is responsible for polling buttons, adding + // newly-scheduled commands, running already-scheduled commands, removing + // finished or interrupted commands, and running subsystem periodic() methods. + // This must be called from the robot's periodic block in order for anything in + // the Command-based framework to work. + CommandScheduler.getInstance().run(); + + robotContainer.periodic(); + + // Return to non-RT thread priority (do not modify the first argument) + // Threads.setCurrentThreadPriority(false, 10); + } + + /** This function is called once when the robot is disabled. */ + @Override + public void disabledInit() { + new Thread( + () -> { + System.out.println("Initializing inter-quadrant pathfinds"); + + Quadrant.initializeAllPaths(); + + System.out.println("Finished initializing inter-quadrant pathfinds"); + }); + } + + /** This function is called periodically when disabled. */ + @Override + public void disabledPeriodic() {} + + /** This autonomous runs the autonomous command selected by your {@link RobotContainer} class. */ + @Override + public void autonomousInit() { + autonomousCommand = robotContainer.getAutonomousCommand(); + + // schedule the autonomous command (example) + if (autonomousCommand != null) { + autonomousCommand.schedule(); + } + } + + /** This function is called periodically during autonomous. */ + @Override + public void autonomousPeriodic() {} + + /** This function is called once when teleop is enabled. */ + @Override + public void teleopInit() { + // This makes sure that the autonomous stops running when + // teleop starts running. If you want the autonomous to + // continue until interrupted by another command, remove + // this line or comment it out. + if (autonomousCommand != null) { + autonomousCommand.cancel(); + } + } + + /** This function is called periodically during operator control. */ + @Override + public void teleopPeriodic() {} + + /** This function is called once when test mode is enabled. */ + @Override + public void testInit() { + // Cancels all running commands at the start of test mode. + CommandScheduler.getInstance().cancelAll(); + } + + /** This function is called periodically during test mode. */ + @Override + public void testPeriodic() {} + + /** This function is called once when the robot is first started up. */ + @Override + public void simulationInit() {} + + /** This function is called periodically whilst in simulation. */ + @Override + public void simulationPeriodic() {} +} diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java new file mode 100644 index 0000000..3bec75b --- /dev/null +++ b/src/main/java/frc/robot/RobotContainer.java @@ -0,0 +1,207 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot; + +import com.pathplanner.lib.auto.AutoBuilder; +import edu.wpi.first.wpilibj.GenericHID; +import edu.wpi.first.wpilibj.XboxController; +import edu.wpi.first.wpilibj.smartdashboard.Field2d; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; +import edu.wpi.first.wpilibj2.command.button.CommandXboxController; +import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; +import frc.robot.Constants.Mode; +import frc.robot.commands.DriveCommands; +import frc.robot.generated.TunerConstants; +import frc.robot.subsystems.Superstructure; +import frc.robot.subsystems.algae_arm.AlgaeArm; +import frc.robot.subsystems.drive.Drive; +import frc.robot.subsystems.drive.GyroIO; +import frc.robot.subsystems.drive.GyroIOPigeon2; +import frc.robot.subsystems.drive.ModuleIO; +import frc.robot.subsystems.drive.ModuleIOSim; +import frc.robot.subsystems.drive.ModuleIOTalonFX; +import frc.robot.subsystems.elevator.Elevator; +import frc.robot.subsystems.elevator.Elevator.Setpoint; +import frc.robot.subsystems.elevator.ElevatorIO; +import frc.robot.subsystems.elevator.ElevatorIOTalonFX; +import frc.robot.subsystems.end_effector.BeamBreakIO; +import frc.robot.subsystems.end_effector.EndEffector; +import frc.robot.subsystems.vision.Vision; +import frc.robot.subsystems.vision.VisionConstants; +import frc.robot.subsystems.vision.VisionIO; +import frc.robot.subsystems.vision.VisionIOPhotonVision; +import frc.robot.subsystems.vision.VisionIOPhotonVisionSim; +import frc.robot.util.io.talon.TalonFXIO; +import org.littletonrobotics.junction.networktables.LoggedDashboardChooser; + +/** + * This class is where the bulk of the robot should be declared. Since Command-based is a + * "declarative" paradigm, very little robot logic should actually be handled in the {@link Robot} + * periodic methods (other than the scheduler calls). Instead, the structure of the robot (including + * subsystems, commands, and button mappings) should be declared here. + */ +public class RobotContainer { + // Subsystems + private final Drive drive; + + @SuppressWarnings("unused") + private final Vision vision; + + private final EndEffector endEffector; + private final Elevator elevator; + private final AlgaeArm algaeArm; + + private final Superstructure superstructure; + + private final RobotSimState simState = + Constants.currentMode == Mode.SIM ? new RobotSimState() : null; + + // Controller + private final CommandXboxController controller = new CommandXboxController(0); + + // Dashboard inputs + private final LoggedDashboardChooser autoChooser; + private final Field2d field = new Field2d(); + + /** The container for the robot. Contains subsystems, OI devices, and commands. */ + public RobotContainer() { + switch (Constants.currentMode) { + case REAL: + // Real robot, instantiate hardware IO implementations + drive = + new Drive( + new GyroIOPigeon2(), + new ModuleIOTalonFX(TunerConstants.FrontLeft), + new ModuleIOTalonFX(TunerConstants.FrontRight), + new ModuleIOTalonFX(TunerConstants.BackLeft), + new ModuleIOTalonFX(TunerConstants.BackRight)); + vision = + new Vision( + drive::addVisionMeasurement, + new VisionIOPhotonVision( + VisionConstants.camera0Name, VisionConstants.robotToCamera0), + new VisionIOPhotonVision( + VisionConstants.camera1Name, VisionConstants.robotToCamera1)); + endEffector = EndEffector.createReal(); + elevator = new Elevator(new ElevatorIOTalonFX()); + algaeArm = AlgaeArm.createReal(); + break; + + case SIM: + // Sim robot, instantiate physics sim IO implementations + drive = + new Drive( + new GyroIO() {}, + new ModuleIOSim(TunerConstants.FrontLeft), + new ModuleIOSim(TunerConstants.FrontRight), + new ModuleIOSim(TunerConstants.BackLeft), + new ModuleIOSim(TunerConstants.BackRight)); + vision = + new Vision( + drive::addVisionMeasurement, + new VisionIOPhotonVisionSim( + VisionConstants.camera0Name, VisionConstants.robotToCamera0, drive::getPose), + new VisionIOPhotonVisionSim( + VisionConstants.camera1Name, VisionConstants.robotToCamera1, drive::getPose)); + endEffector = EndEffector.createSim(simState); + // TODO: implement this fully + elevator = new Elevator(new ElevatorIO() {}); + algaeArm = AlgaeArm.createSim(); + break; + + default: + // Replayed robot, disable IO implementations + drive = + new Drive( + new GyroIO() {}, + new ModuleIO() {}, + new ModuleIO() {}, + new ModuleIO() {}, + new ModuleIO() {}); + vision = new Vision(drive::addVisionMeasurement, new VisionIO() {}, new VisionIO() {}); + endEffector = + new EndEffector(new TalonFXIO() {}, new BeamBreakIO() {}, new BeamBreakIO() {}, false); + elevator = new Elevator(new ElevatorIO() {}); + algaeArm = new AlgaeArm(new TalonFXIO() {}); + break; + } + + superstructure = new Superstructure(endEffector, elevator, algaeArm); + + // Set up auto routines + autoChooser = new LoggedDashboardChooser<>("Auto Choices", AutoBuilder.buildAutoChooser()); + + // Set up SysId routines + autoChooser.addOption( + "Drive Wheel Radius Characterization", DriveCommands.wheelRadiusCharacterization(drive)); + autoChooser.addOption( + "Drive Simple FF Characterization", DriveCommands.feedforwardCharacterization(drive)); + autoChooser.addOption( + "Drive SysId (Quasistatic Forward)", + drive.sysIdQuasistatic(SysIdRoutine.Direction.kForward)); + autoChooser.addOption( + "Drive SysId (Quasistatic Reverse)", + drive.sysIdQuasistatic(SysIdRoutine.Direction.kReverse)); + autoChooser.addOption( + "Drive SysId (Dynamic Forward)", drive.sysIdDynamic(SysIdRoutine.Direction.kForward)); + autoChooser.addOption( + "Drive SysId (Dynamic Reverse)", drive.sysIdDynamic(SysIdRoutine.Direction.kReverse)); + + // Configure the button bindings + configureButtonBindings(); + SmartDashboard.putData("Field", field); + } + + public void periodic() { + field.setRobotPose(drive.getPose()); + } + + /** + * Use this method to define your button->command mappings. Buttons can be created by + * instantiating a {@link GenericHID} or one of its subclasses ({@link + * edu.wpi.first.wpilibj.Joystick} or {@link XboxController}), and then passing it to a {@link + * edu.wpi.first.wpilibj2.command.button.JoystickButton}. + */ + private void configureButtonBindings() { + // Default command, normal field-relative drive + drive.setDefaultCommand( + DriveCommands.joystickDrive( + drive, + () -> -controller.getLeftY(), + () -> -controller.getLeftX(), + () -> -controller.getRightX())); + + controller.rightTrigger().whileTrue(superstructure.scoreCoral()); + + controller + .x() + .whileTrue(elevator.setTarget(Setpoint.L2)) + .onFalse(Commands.waitSeconds(0.1).andThen(elevator.setTarget(Setpoint.Stowed))); + + controller + .b() + .whileTrue(elevator.setTarget(Setpoint.L3)) + .onFalse(Commands.waitSeconds(0.1).andThen(elevator.setTarget(Setpoint.Stowed))); + + controller + .y() + .whileTrue(elevator.setTarget(Setpoint.L4)) + .onFalse(Commands.waitSeconds(0.1).andThen(elevator.setTarget(Setpoint.Stowed))); + } + + /** + * Use this to pass the autonomous command to the main {@link Robot} class. + * + * @return the command to run in autonomous + */ + public Command getAutonomousCommand() { + return autoChooser.get(); + } +} diff --git a/src/main/java/frc/robot/RobotSimState.java b/src/main/java/frc/robot/RobotSimState.java new file mode 100644 index 0000000..39ce1ec --- /dev/null +++ b/src/main/java/frc/robot/RobotSimState.java @@ -0,0 +1,11 @@ +package frc.robot; + +public final class RobotSimState { + // start with `true` because the robot starts with a coral + public boolean hasCoral = true; + public boolean hasAlgae = false; + + public boolean hasCoral() { + return hasCoral; + } +} diff --git a/src/main/java/frc/robot/autopilot/Quadrant.java b/src/main/java/frc/robot/autopilot/Quadrant.java new file mode 100644 index 0000000..ac99dce --- /dev/null +++ b/src/main/java/frc/robot/autopilot/Quadrant.java @@ -0,0 +1,117 @@ +package frc.robot.autopilot; + +import static edu.wpi.first.units.Units.DegreesPerSecond; +import static edu.wpi.first.units.Units.DegreesPerSecondPerSecond; +import static edu.wpi.first.units.Units.MetersPerSecond; +import static edu.wpi.first.units.Units.MetersPerSecondPerSecond; +import static frc.robot.FieldConstants.fieldCenter; + +import com.pathplanner.lib.auto.AutoBuilder; +import com.pathplanner.lib.path.GoalEndState; +import com.pathplanner.lib.path.IdealStartingState; +import com.pathplanner.lib.path.PathConstraints; +import com.pathplanner.lib.path.PathPlannerPath; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; +import frc.robot.subsystems.drive.Drive; +import frc.robot.util.AllianceFlipUtil; +import frc.robot.util.PositionUtils; +import java.util.HashMap; +import java.util.Map; + +public enum Quadrant { + Q1( + AllianceFlipUtil.apply( + new Pose2d( + fieldCenter.getX() * 0.25, fieldCenter.getY() * 1.5, Rotation2d.fromDegrees(-60)))), + Q2( + AllianceFlipUtil.apply( + new Pose2d( + fieldCenter.getX() * 0.25, fieldCenter.getY() * 0.5, Rotation2d.fromDegrees(60)))), + Q3( + AllianceFlipUtil.apply( + new Pose2d( + fieldCenter.getX() * 0.75, fieldCenter.getY() * 0.5, Rotation2d.fromDegrees(120)))), + Q4( + AllianceFlipUtil.apply( + new Pose2d( + fieldCenter.getX() * 0.75, fieldCenter.getY() * 1.5, Rotation2d.fromDegrees(-120)))); + + private final Pose2d m_middle; + + // allocate a HashMap for all of the pathfinds from one quadrant to another, + private static final Map> cachedPathfinds = + new HashMap<>(4) { + { + put(Q1, new HashMap<>(3)); + put(Q2, new HashMap<>(3)); + put(Q3, new HashMap<>(3)); + put(Q4, new HashMap<>(3)); + } + }; + private static final PathConstraints PATHFIND_CONSTRAINTS = + new PathConstraints( + MetersPerSecond.of(4.73), MetersPerSecondPerSecond.of(5), + DegreesPerSecond.of(540), DegreesPerSecondPerSecond.of(720)); + private static boolean alreadInitializedPaths = false; + + private Quadrant(Pose2d mid) { + m_middle = mid; + } + + public Pose2d getM_middle() { + return m_middle; + } + + public Command pathfindTo(Quadrant other) { + if (this == other) + // we're already in the right place + return Commands.none(); + else { + var cmd = cachedPathfinds.get(this).get(other); + + if (cmd == null) { + cmd = AutoBuilder.pathfindToPose(other.m_middle, PATHFIND_CONSTRAINTS); + } + + return cmd; + } + } + + public Command driveTo(Drive drive, Quadrant to, double positionTolerance) { + return pathfindTo(to) + .until(() -> PositionUtils.getDistance(drive, to.m_middle) <= positionTolerance); + } + + /** + * Initializes every path between different quadrants preemptively. This should not be run before + * the paths should be used, especially on the main thread. + * + *

This is, by default, run when the robot is first disabled, and is a no-op if run repeatedly. + */ + public static void initializeAllPaths() { + if (!alreadInitializedPaths) { + cachedPathfinds.forEach( + (origin, map) -> { + if (map.size() == 3) return; + + for (Quadrant other : Quadrant.values()) { + if (other != origin) { + var waypoints = PathPlannerPath.waypointsFromPoses(origin.m_middle, other.m_middle); + var path = + new PathPlannerPath( + waypoints, + PATHFIND_CONSTRAINTS, + new IdealStartingState(0, origin.m_middle.getRotation()), + new GoalEndState(0, other.m_middle.getRotation())); + map.put(other, AutoBuilder.followPath(path)); + } + } + }); + + alreadInitializedPaths = true; + } + } +} diff --git a/src/main/java/frc/robot/commands/DriveCommands.java b/src/main/java/frc/robot/commands/DriveCommands.java new file mode 100644 index 0000000..1f265a1 --- /dev/null +++ b/src/main/java/frc/robot/commands/DriveCommands.java @@ -0,0 +1,444 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.commands; + +import static frc.robot.util.PositionUtils.getDistance; + +import edu.wpi.first.math.MathUtil; +import edu.wpi.first.math.controller.ProfiledPIDController; +import edu.wpi.first.math.filter.SlewRateLimiter; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.geometry.Transform2d; +import edu.wpi.first.math.geometry.Translation2d; +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.math.trajectory.TrapezoidProfile; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.DriverStation.Alliance; +import edu.wpi.first.wpilibj.Timer; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; +import frc.robot.subsystems.drive.Drive; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.LinkedList; +import java.util.List; +import java.util.function.DoubleSupplier; +import java.util.function.Supplier; + +public final class DriveCommands { + private static final double DEADBAND = 0.1; + private static final double DRIVE_KP = 2.5; + private static final double DRIVE_KD = 0.25; + private static final double ANGLE_KP = 5.0; + private static final double ANGLE_KD = 0.4; + private static final double ANGLE_MAX_VELOCITY = 8.0; + private static final double ANGLE_MAX_ACCELERATION = 20.0; + private static final double ANGLE_TOLERANCE = Units.degreesToRadians(5); + private static final double LINE_TOLERANCE = 0.05; + private static final double POSITION_TOLERANCE = Units.inchesToMeters(1); + private static final double FF_START_DELAY = 2.0; // Secs + private static final double FF_RAMP_RATE = 0.1; // Volts/Sec + private static final double WHEEL_RADIUS_MAX_VELOCITY = 0.25; // Rad/Sec + private static final double WHEEL_RADIUS_RAMP_RATE = 0.05; // Rad/Sec^2 + + private DriveCommands() {} + + private static Translation2d getLinearVelocityFromJoysticks(double x, double y) { + // Apply deadband + double linearMagnitude = MathUtil.applyDeadband(Math.hypot(x, y), DEADBAND); + Rotation2d linearDirection = new Rotation2d(Math.atan2(y, x)); + + // Square magnitude for more precise control + linearMagnitude = linearMagnitude * linearMagnitude; + + // Return new linear velocity + return new Pose2d(new Translation2d(), linearDirection) + .transformBy(new Transform2d(linearMagnitude, 0.0, new Rotation2d())) + .getTranslation(); + } + + /** + * Field relative drive command using two joysticks (controlling linear and angular velocities). + */ + public static Command joystickDrive( + Drive drive, + DoubleSupplier xSupplier, + DoubleSupplier ySupplier, + DoubleSupplier omegaSupplier) { + return Commands.run( + () -> { + // Get linear velocity + Translation2d linearVelocity = + getLinearVelocityFromJoysticks(xSupplier.getAsDouble(), ySupplier.getAsDouble()); + + // Apply rotation deadband + double omega = MathUtil.applyDeadband(omegaSupplier.getAsDouble(), DEADBAND); + + // Square rotation value for more precise control + omega = Math.copySign(omega * omega, omega); + + // Convert to field relative speeds & send command + ChassisSpeeds speeds = + new ChassisSpeeds( + linearVelocity.getX() * drive.getMaxLinearSpeedMetersPerSec(), + linearVelocity.getY() * drive.getMaxLinearSpeedMetersPerSec(), + omega * drive.getMaxAngularSpeedRadPerSec()); + boolean isFlipped = + DriverStation.getAlliance().isPresent() + && DriverStation.getAlliance().get() == Alliance.Red; + drive.runVelocity( + ChassisSpeeds.fromFieldRelativeSpeeds( + speeds, + isFlipped + ? drive.getRotation().plus(new Rotation2d(Math.PI)) + : drive.getRotation())); + }, + drive); + } + + /** + * Field relative drive command using joystick for linear control and PID for angular control. + * Possible use cases include snapping to an angle, aiming at a vision target, or controlling + * absolute rotation with a joystick. + */ + public static Command joystickDriveAtAngle( + Drive drive, + DoubleSupplier xSupplier, + DoubleSupplier ySupplier, + Supplier rotationSupplier) { + + // Create PID controller + ProfiledPIDController angleController = + new ProfiledPIDController( + ANGLE_KP, + 0.0, + ANGLE_KD, + new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); + angleController.enableContinuousInput(-Math.PI, Math.PI); + + // Construct command + return Commands.run( + () -> { + // Get linear velocity + Translation2d linearVelocity = + getLinearVelocityFromJoysticks(xSupplier.getAsDouble(), ySupplier.getAsDouble()); + + // Calculate angular speed + double omega = + angleController.calculate( + drive.getRotation().getRadians(), rotationSupplier.get().getRadians()); + + // Convert to field relative speeds & send command + ChassisSpeeds speeds = + new ChassisSpeeds( + linearVelocity.getX() * drive.getMaxLinearSpeedMetersPerSec(), + linearVelocity.getY() * drive.getMaxLinearSpeedMetersPerSec(), + omega); + + boolean isFlipped = + DriverStation.getAlliance().isPresent() + && DriverStation.getAlliance().get() == Alliance.Red; + drive.runVelocity( + ChassisSpeeds.fromFieldRelativeSpeeds( + speeds, + isFlipped + ? drive.getRotation().plus(new Rotation2d(Math.PI)) + : drive.getRotation())); + }, + drive) + + // Reset PID controller when command starts + .beforeStarting(() -> angleController.reset(drive.getRotation().getRadians())); + } + + public static Command joystickApproach( + Drive drive, DoubleSupplier ySupplier, Supplier approachSupplier) { + ProfiledPIDController angleController = + new ProfiledPIDController( + ANGLE_KP, + 0, + ANGLE_KD, + new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); + angleController.setTolerance(ANGLE_TOLERANCE); + angleController.enableContinuousInput(-Math.PI, Math.PI); + + ProfiledPIDController alignController = + new ProfiledPIDController( + DRIVE_KP, + 0, + DRIVE_KD, + new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); + alignController.setTolerance(LINE_TOLERANCE); + alignController.setGoal(0); + + return Commands.run( + () -> { + final Pose2d currentPose = drive.getPose(); + final Pose2d targetPose = approachSupplier.get(); + Translation2d currentTranslation = currentPose.getTranslation(); + Translation2d approachTranslation = targetPose.getTranslation(); + double distanceToApproach = currentTranslation.getDistance(approachTranslation); + + Rotation2d alignmentDirection = targetPose.getRotation(); + + // Find lateral distance to Goal Pose + Translation2d goalTranslation = + new Translation2d( + alignmentDirection.getCos() * distanceToApproach + approachTranslation.getX(), + alignmentDirection.getSin() * distanceToApproach + approachTranslation.getY()); + + Translation2d robotToGoal = currentTranslation.minus(goalTranslation); + double distanceToGoal = Math.hypot(robotToGoal.getX(), robotToGoal.getY()); + + // Calculate lateral linear velocity + Translation2d offsetVector = + new Translation2d(alignController.calculate(distanceToGoal), 0) + .rotateBy(robotToGoal.getAngle()); + + // Calculate total linear velocity + Translation2d linearVelocity = + getLinearVelocityFromJoysticks(0, ySupplier.getAsDouble()) + .rotateBy(alignmentDirection) + .plus(offsetVector); + + double omega = + angleController.calculate( + currentPose.getRotation().getRadians(), + alignmentDirection.rotateBy(Rotation2d.k180deg).getRadians()); + + ChassisSpeeds speeds = + new ChassisSpeeds( + linearVelocity.getX() * drive.getMaxLinearSpeedMetersPerSec(), + linearVelocity.getY() * drive.getMaxLinearSpeedMetersPerSec(), + omega); + + drive.runVelocity(speeds); + }, + drive); + } + + /** + * Measures the velocity feedforward constants for the drive motors. + * + *

This command should only be used in voltage control mode. + */ + public static Command feedforwardCharacterization(Drive drive) { + List velocitySamples = new LinkedList<>(); + List voltageSamples = new LinkedList<>(); + Timer timer = new Timer(); + + return Commands.sequence( + // Reset data + Commands.runOnce( + () -> { + velocitySamples.clear(); + voltageSamples.clear(); + }), + + // Allow modules to orient + Commands.run( + () -> { + drive.runCharacterization(0.0); + }, + drive) + .withTimeout(FF_START_DELAY), + + // Start timer + Commands.runOnce(timer::restart), + + // Accelerate and gather data + Commands.run( + () -> { + double voltage = timer.get() * FF_RAMP_RATE; + drive.runCharacterization(voltage); + velocitySamples.add(drive.getFFCharacterizationVelocity()); + voltageSamples.add(voltage); + }, + drive) + + // When cancelled, calculate and print results + .finallyDo( + () -> { + int n = velocitySamples.size(); + double sumX = 0.0; + double sumY = 0.0; + double sumXY = 0.0; + double sumX2 = 0.0; + for (int i = 0; i < n; i++) { + sumX += velocitySamples.get(i); + sumY += voltageSamples.get(i); + sumXY += velocitySamples.get(i) * voltageSamples.get(i); + sumX2 += velocitySamples.get(i) * velocitySamples.get(i); + } + double kS = (sumY * sumX2 - sumX * sumXY) / (n * sumX2 - sumX * sumX); + double kV = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX); + + NumberFormat formatter = new DecimalFormat("#0.00000"); + System.out.println("********** Drive FF Characterization Results **********"); + System.out.println("\tkS: " + formatter.format(kS)); + System.out.println("\tkV: " + formatter.format(kV)); + })); + } + + /** Measures the robot's wheel radius by spinning in a circle. */ + public static Command wheelRadiusCharacterization(Drive drive) { + SlewRateLimiter limiter = new SlewRateLimiter(WHEEL_RADIUS_RAMP_RATE); + WheelRadiusCharacterizationState state = new WheelRadiusCharacterizationState(); + + return Commands.parallel( + // Drive control sequence + Commands.sequence( + // Reset acceleration limiter + Commands.runOnce( + () -> { + limiter.reset(0.0); + }), + + // Turn in place, accelerating up to full speed + Commands.run( + () -> { + double speed = limiter.calculate(WHEEL_RADIUS_MAX_VELOCITY); + drive.runVelocity(new ChassisSpeeds(0.0, 0.0, speed)); + }, + drive)), + + // Measurement sequence + Commands.sequence( + // Wait for modules to fully orient before starting measurement + Commands.waitSeconds(1.0), + + // Record starting measurement + Commands.runOnce( + () -> { + state.positions = drive.getWheelRadiusCharacterizationPositions(); + state.lastAngle = drive.getRotation(); + state.gyroDelta = 0.0; + }), + + // Update gyro delta + Commands.run( + () -> { + var rotation = drive.getRotation(); + state.gyroDelta += Math.abs(rotation.minus(state.lastAngle).getRadians()); + state.lastAngle = rotation; + }) + + // When cancelled, calculate and print results + .finallyDo( + () -> { + double[] positions = drive.getWheelRadiusCharacterizationPositions(); + double wheelDelta = 0.0; + for (int i = 0; i < 4; i++) { + wheelDelta += Math.abs(positions[i] - state.positions[i]) / 4.0; + } + double wheelRadius = (state.gyroDelta * Drive.DRIVE_BASE_RADIUS) / wheelDelta; + + NumberFormat formatter = new DecimalFormat("#0.000"); + System.out.println( + "********** Wheel Radius Characterization Results **********"); + System.out.println( + "\tWheel Delta: " + formatter.format(wheelDelta) + " radians"); + System.out.println( + "\tGyro Delta: " + formatter.format(state.gyroDelta) + " radians"); + System.out.println( + "\tWheel Radius: " + + formatter.format(wheelRadius) + + " meters, " + + formatter.format(Units.metersToInches(wheelRadius)) + + " inches"); + }))); + } + + @FunctionalInterface + interface RotationFunc { + public double getRotation(ProfiledPIDController controller, Pose2d current, Pose2d target); + } + + static final RotationFunc standardApproachRotation = + (controller, current, pose) -> { + final Rotation2d currentRot = current.getRotation(), targetRot = pose.getRotation(); + + double pidResult = controller.calculate(currentRot.getRadians(), targetRot.getRadians()); + System.out.println("StraightTowards::rotationFunc: pidResult = " + pidResult); + + double toGoal = targetRot.minus(currentRot).getRadians(); + System.out.println("StraightTowards::rotationFunc: toGoal = " + toGoal); + + double omega = pidResult - toGoal; + System.out.println("StraightTowards::rotationFunc: omega = " + omega); + + return omega; + }; + + public static Command straightTowards(Drive drive, Supplier target) { + return straightTowards(drive, target, standardApproachRotation); + } + + public static Command straightTowards( + Drive drive, Supplier targetSupplier, RotationFunc rotationFunc) { + final ProfiledPIDController alignController = + new ProfiledPIDController( + DRIVE_KP, + 0, + DRIVE_KD, + new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); + alignController.setTolerance(LINE_TOLERANCE); + alignController.setGoal(0); + + final ProfiledPIDController angleController = + new ProfiledPIDController( + DRIVE_KP, + 0, + DRIVE_KD, + new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); + angleController.setTolerance(ANGLE_TOLERANCE); + angleController.enableContinuousInput(-Math.PI, Math.PI); + + return Commands.run( + () -> { + final Pose2d robotPose = drive.getPose(), targetPose = targetSupplier.get(); + + var robotToGoal = targetPose.minus(robotPose).getTranslation(); + + double pidX = alignController.calculate(robotToGoal.getX()); + double pidY = alignController.calculate(robotToGoal.getY()); + + System.out.println("StraightTowards::cmd: pidScalars = (" + pidX + ", " + pidY + ")"); + + var pidTranslation = + new Translation2d(pidX * robotToGoal.getX(), pidY * robotToGoal.getY()); + + var resultVector = robotToGoal.plus(pidTranslation); + + System.out.println( + "StraightTowards::cmd: final vector = (" + + resultVector.getX() + + ", " + + resultVector.getY() + + ")"); + + final ChassisSpeeds speeds = + new ChassisSpeeds( + resultVector.getX(), + resultVector.getY(), + rotationFunc.getRotation(angleController, robotPose, targetPose)); + + drive.runVelocity(speeds); + }, + drive) + .until(() -> getDistance(drive, targetSupplier.get()) < POSITION_TOLERANCE); + } + + private static class WheelRadiusCharacterizationState { + double[] positions = new double[4]; + Rotation2d lastAngle = new Rotation2d(); + double gyroDelta = 0.0; + } +} diff --git a/src/main/java/frc/robot/generated/TunerConstants.java b/src/main/java/frc/robot/generated/TunerConstants.java new file mode 100644 index 0000000..c4aa590 --- /dev/null +++ b/src/main/java/frc/robot/generated/TunerConstants.java @@ -0,0 +1,306 @@ +package frc.robot.generated; + +import static edu.wpi.first.units.Units.*; + +import com.ctre.phoenix6.CANBus; +import com.ctre.phoenix6.configs.*; +import com.ctre.phoenix6.hardware.*; +import com.ctre.phoenix6.signals.*; +import com.ctre.phoenix6.swerve.*; +import com.ctre.phoenix6.swerve.SwerveModuleConstants.*; +import edu.wpi.first.math.Matrix; +import edu.wpi.first.math.numbers.N1; +import edu.wpi.first.math.numbers.N3; +import edu.wpi.first.units.measure.*; + +// Generated by the Tuner X Swerve Project Generator +// https://v6.docs.ctr-electronics.com/en/stable/docs/tuner/tuner-swerve/index.html +public class TunerConstants { + // Both sets of gains need to be tuned to your individual robot. + + // The steer motor uses any SwerveModule.SteerRequestType control request with the + // output type specified by SwerveModuleConstants.SteerMotorClosedLoopOutput + private static final Slot0Configs steerGains = + new Slot0Configs() + .withKP(500) + .withKI(0) + .withKD(50) + .withKS(0.8595) + .withKV(1.438) + .withKA(0) + .withStaticFeedforwardSign(StaticFeedforwardSignValue.UseClosedLoopSign); + // When using closed-loop control, the drive motor uses the control + // output type specified by SwerveModuleConstants.DriveMotorClosedLoopOutput + private static final Slot0Configs driveGains = + new Slot0Configs().withKP(60).withKI(0).withKD(0).withKS(5).withKV(0); + + // The closed-loop output type to use for the steer motors; + // This affects the PID/FF gains for the steer motors + private static final ClosedLoopOutputType kSteerClosedLoopOutput = + ClosedLoopOutputType.TorqueCurrentFOC; + // The closed-loop output type to use for the drive motors; + // This affects the PID/FF gains for the drive motors + private static final ClosedLoopOutputType kDriveClosedLoopOutput = + ClosedLoopOutputType.TorqueCurrentFOC; + + // The type of motor used for the drive motor + private static final DriveMotorArrangement kDriveMotorType = + DriveMotorArrangement.TalonFX_Integrated; + // The type of motor used for the drive motor + private static final SteerMotorArrangement kSteerMotorType = + SteerMotorArrangement.TalonFX_Integrated; + + // The remote sensor feedback type to use for the steer motors; + // When not Pro-licensed, Fused*/Sync* automatically fall back to Remote* + private static final SteerFeedbackType kSteerFeedbackType = SteerFeedbackType.FusedCANcoder; + + // The stator current at which the wheels start to slip; + // This needs to be tuned to your individual robot + private static final Current kSlipCurrent = Amps.of(120.0); + + // Initial configs for the drive and steer motors and the azimuth encoder; these cannot be null. + // Some configs will be overwritten; check the `with*InitialConfigs()` API documentation. + private static final TalonFXConfiguration driveInitialConfigs = new TalonFXConfiguration(); + private static final TalonFXConfiguration steerInitialConfigs = + new TalonFXConfiguration() + .withCurrentLimits( + new CurrentLimitsConfigs() + // Swerve azimuth does not require much torque output, so we can set a relatively + // low + // stator current limit to help avoid brownouts without impacting performance. + .withStatorCurrentLimit(Amps.of(60)) + .withStatorCurrentLimitEnable(true)); + private static final CANcoderConfiguration encoderInitialConfigs = new CANcoderConfiguration(); + // Configs for the Pigeon 2; leave this null to skip applying Pigeon 2 configs + private static final Pigeon2Configuration pigeonConfigs = null; + + // CAN bus that the devices are located on; + // All swerve devices must share the same CAN bus + public static final CANBus kCANBus = new CANBus("canivore0"); + + // Theoretical free speed (m/s) at 12 V applied output; + // This needs to be tuned to your individual robot + public static final LinearVelocity kSpeedAt12Volts = MetersPerSecond.of(4.73); + + // Every 1 rotation of the azimuth results in kCoupleRatio drive motor turns; + // This may need to be tuned to your individual robot + private static final double kCoupleRatio = 3.5714285714285716; + + private static final double kDriveGearRatio = 6.746031746031747; + private static final double kSteerGearRatio = 21.428571428571427; + private static final Distance kWheelRadius = Inches.of(2); + + private static final boolean kInvertLeftSide = false; + private static final boolean kInvertRightSide = true; + + private static final int kPigeonId = 0; + + // These are only used for simulation + private static final MomentOfInertia kSteerInertia = KilogramSquareMeters.of(0.01); + private static final MomentOfInertia kDriveInertia = KilogramSquareMeters.of(0.01); + // Simulated voltage necessary to overcome friction + private static final Voltage kSteerFrictionVoltage = Volts.of(0.2); + private static final Voltage kDriveFrictionVoltage = Volts.of(0.2); + + public static final SwerveDrivetrainConstants DrivetrainConstants = + new SwerveDrivetrainConstants() + .withCANBusName(kCANBus.getName()) + .withPigeon2Id(kPigeonId) + .withPigeon2Configs(pigeonConfigs); + + private static final SwerveModuleConstantsFactory< + TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration> + ConstantCreator = + new SwerveModuleConstantsFactory< + TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration>() + .withDriveMotorGearRatio(kDriveGearRatio) + .withSteerMotorGearRatio(kSteerGearRatio) + .withCouplingGearRatio(kCoupleRatio) + .withWheelRadius(kWheelRadius) + .withSteerMotorGains(steerGains) + .withDriveMotorGains(driveGains) + .withSteerMotorClosedLoopOutput(kSteerClosedLoopOutput) + .withDriveMotorClosedLoopOutput(kDriveClosedLoopOutput) + .withSlipCurrent(kSlipCurrent) + .withSpeedAt12Volts(kSpeedAt12Volts) + .withDriveMotorType(kDriveMotorType) + .withSteerMotorType(kSteerMotorType) + .withFeedbackSource(kSteerFeedbackType) + .withDriveMotorInitialConfigs(driveInitialConfigs) + .withSteerMotorInitialConfigs(steerInitialConfigs) + .withEncoderInitialConfigs(encoderInitialConfigs) + .withSteerInertia(kSteerInertia) + .withDriveInertia(kDriveInertia) + .withSteerFrictionVoltage(kSteerFrictionVoltage) + .withDriveFrictionVoltage(kDriveFrictionVoltage); + + // Front Left + private static final int kFrontLeftDriveMotorId = 0; + private static final int kFrontLeftSteerMotorId = 1; + private static final int kFrontLeftEncoderId = 0; + private static final Angle kFrontLeftEncoderOffset = Rotations.of(0.49609375); + private static final boolean kFrontLeftSteerMotorInverted = true; + private static final boolean kFrontLeftEncoderInverted = false; + + private static final Distance kFrontLeftXPos = Inches.of(11.8645); + private static final Distance kFrontLeftYPos = Inches.of(11.8645); + + // Front Right + private static final int kFrontRightDriveMotorId = 4; + private static final int kFrontRightSteerMotorId = 5; + private static final int kFrontRightEncoderId = 2; + private static final Angle kFrontRightEncoderOffset = Rotations.of(0.26904296875); + private static final boolean kFrontRightSteerMotorInverted = true; + private static final boolean kFrontRightEncoderInverted = false; + + private static final Distance kFrontRightXPos = Inches.of(11.8645); + private static final Distance kFrontRightYPos = Inches.of(-11.8645); + + // Back Left + private static final int kBackLeftDriveMotorId = 2; + private static final int kBackLeftSteerMotorId = 3; + private static final int kBackLeftEncoderId = 1; + private static final Angle kBackLeftEncoderOffset = Rotations.of(0.34912109375); + private static final boolean kBackLeftSteerMotorInverted = true; + private static final boolean kBackLeftEncoderInverted = false; + + private static final Distance kBackLeftXPos = Inches.of(-11.8645); + private static final Distance kBackLeftYPos = Inches.of(11.8645); + + // Back Right + private static final int kBackRightDriveMotorId = 6; + private static final int kBackRightSteerMotorId = 7; + private static final int kBackRightEncoderId = 4; + private static final Angle kBackRightEncoderOffset = Rotations.of(0.38232421875); + private static final boolean kBackRightSteerMotorInverted = true; + private static final boolean kBackRightEncoderInverted = false; + + private static final Distance kBackRightXPos = Inches.of(-11.8645); + private static final Distance kBackRightYPos = Inches.of(-11.8645); + + public static final SwerveModuleConstants< + TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration> + FrontLeft = + ConstantCreator.createModuleConstants( + kFrontLeftSteerMotorId, + kFrontLeftDriveMotorId, + kFrontLeftEncoderId, + kFrontLeftEncoderOffset, + kFrontLeftXPos, + kFrontLeftYPos, + kInvertLeftSide, + kFrontLeftSteerMotorInverted, + kFrontLeftEncoderInverted); + public static final SwerveModuleConstants< + TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration> + FrontRight = + ConstantCreator.createModuleConstants( + kFrontRightSteerMotorId, + kFrontRightDriveMotorId, + kFrontRightEncoderId, + kFrontRightEncoderOffset, + kFrontRightXPos, + kFrontRightYPos, + kInvertRightSide, + kFrontRightSteerMotorInverted, + kFrontRightEncoderInverted); + public static final SwerveModuleConstants< + TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration> + BackLeft = + ConstantCreator.createModuleConstants( + kBackLeftSteerMotorId, + kBackLeftDriveMotorId, + kBackLeftEncoderId, + kBackLeftEncoderOffset, + kBackLeftXPos, + kBackLeftYPos, + kInvertLeftSide, + kBackLeftSteerMotorInverted, + kBackLeftEncoderInverted); + public static final SwerveModuleConstants< + TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration> + BackRight = + ConstantCreator.createModuleConstants( + kBackRightSteerMotorId, + kBackRightDriveMotorId, + kBackRightEncoderId, + kBackRightEncoderOffset, + kBackRightXPos, + kBackRightYPos, + kInvertRightSide, + kBackRightSteerMotorInverted, + kBackRightEncoderInverted); + + /** Swerve Drive class utilizing CTR Electronics' Phoenix 6 API with the selected device types. */ + public static class TunerSwerveDrivetrain extends SwerveDrivetrain { + /** + * Constructs a CTRE SwerveDrivetrain using the specified constants. + * + *

This constructs the underlying hardware devices, so users should not construct the devices + * themselves. If they need the devices, they can access them through getters in the classes. + * + * @param drivetrainConstants Drivetrain-wide constants for the swerve drive + * @param modules Constants for each specific module + */ + public TunerSwerveDrivetrain( + SwerveDrivetrainConstants drivetrainConstants, SwerveModuleConstants... modules) { + super(TalonFX::new, TalonFX::new, CANcoder::new, drivetrainConstants, modules); + } + + /** + * Constructs a CTRE SwerveDrivetrain using the specified constants. + * + *

This constructs the underlying hardware devices, so users should not construct the devices + * themselves. If they need the devices, they can access them through getters in the classes. + * + * @param drivetrainConstants Drivetrain-wide constants for the swerve drive + * @param odometryUpdateFrequency The frequency to run the odometry loop. If unspecified or set + * to 0 Hz, this is 250 Hz on CAN FD, and 100 Hz on CAN 2.0. + * @param modules Constants for each specific module + */ + public TunerSwerveDrivetrain( + SwerveDrivetrainConstants drivetrainConstants, + double odometryUpdateFrequency, + SwerveModuleConstants... modules) { + super( + TalonFX::new, + TalonFX::new, + CANcoder::new, + drivetrainConstants, + odometryUpdateFrequency, + modules); + } + + /** + * Constructs a CTRE SwerveDrivetrain using the specified constants. + * + *

This constructs the underlying hardware devices, so users should not construct the devices + * themselves. If they need the devices, they can access them through getters in the classes. + * + * @param drivetrainConstants Drivetrain-wide constants for the swerve drive + * @param odometryUpdateFrequency The frequency to run the odometry loop. If unspecified or set + * to 0 Hz, this is 250 Hz on CAN FD, and 100 Hz on CAN 2.0. + * @param odometryStandardDeviation The standard deviation for odometry calculation in the form + * [x, y, theta]áµ€, with units in meters and radians + * @param visionStandardDeviation The standard deviation for vision calculation in the form [x, + * y, theta]áµ€, with units in meters and radians + * @param modules Constants for each specific module + */ + public TunerSwerveDrivetrain( + SwerveDrivetrainConstants drivetrainConstants, + double odometryUpdateFrequency, + Matrix odometryStandardDeviation, + Matrix visionStandardDeviation, + SwerveModuleConstants... modules) { + super( + TalonFX::new, + TalonFX::new, + CANcoder::new, + drivetrainConstants, + odometryUpdateFrequency, + odometryStandardDeviation, + visionStandardDeviation, + modules); + } + } +} diff --git a/src/main/java/frc/robot/subsystems/Superstructure.java b/src/main/java/frc/robot/subsystems/Superstructure.java new file mode 100644 index 0000000..e1f1113 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/Superstructure.java @@ -0,0 +1,31 @@ +package frc.robot.subsystems; + +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; +import frc.robot.subsystems.algae_arm.AlgaeArm; +import frc.robot.subsystems.elevator.Elevator; +import frc.robot.subsystems.elevator.Elevator.Setpoint; +import frc.robot.subsystems.end_effector.EndEffector; + +public final class Superstructure { + private final EndEffector endEffector; + private final Elevator elevator; + private final AlgaeArm algaeArm; + + public Superstructure(EndEffector endEffector, Elevator elevator, AlgaeArm algaeArm) { + this.endEffector = endEffector; + this.elevator = elevator; + this.algaeArm = algaeArm; + } + + public Command bargeShot() { + return Commands.parallel( + elevator.setTarget(Setpoint.Barge), + Commands.waitUntil(() -> elevator.madeProgress(.75)) + .andThen(endEffector.scoreBarge(), algaeArm.stow())); + } + + public Command scoreCoral() { + return endEffector.teleScoreCoral(elevator.isAtSetpoint); + } +} diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java new file mode 100644 index 0000000..90d44e3 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java @@ -0,0 +1,34 @@ +package frc.robot.subsystems.algae_arm; + +import static frc.robot.subsystems.algae_arm.AlgaeArmConstants.*; + +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import frc.robot.util.io.talon.TalonFXIO; +import frc.robot.util.io.talon.TalonFXIOImpl; + +public class AlgaeArm extends SubsystemBase { + private final TalonFXIO io; + + public AlgaeArm(TalonFXIO motorIO) { + io = motorIO; + + setDefaultCommand(stow()); + } + + public static AlgaeArm createReal() { + return new AlgaeArm(new TalonFXIOImpl(kMotorID, kBus, kAlgaeArmCallback)); + } + + public static AlgaeArm createSim() { + return new AlgaeArm(new AlgaeArmIOSim()); + } + + public Command deploy() { + return runOnce(() -> io.setPosition(kDeployedAngle)); + } + + public Command stow() { + return runOnce(() -> io.setPosition(kStowedAngle)); + } +} diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java new file mode 100644 index 0000000..caa8678 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java @@ -0,0 +1,57 @@ +package frc.robot.subsystems.algae_arm; + +import static edu.wpi.first.units.Units.Amps; +import static edu.wpi.first.units.Units.Inches; +import static edu.wpi.first.units.Units.Rotations; +import static frc.robot.util.phoenix.PhoenixUtil.tryUntilOk; + +import com.ctre.phoenix6.CANBus; +import com.ctre.phoenix6.configs.CurrentLimitsConfigs; +import com.ctre.phoenix6.configs.FeedbackConfigs; +import com.ctre.phoenix6.configs.MotionMagicConfigs; +import com.ctre.phoenix6.configs.Slot0Configs; +import com.ctre.phoenix6.configs.TalonFXConfigurator; +import com.ctre.phoenix6.signals.GravityTypeValue; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.Distance; +import frc.robot.Constants; +import java.util.function.Consumer; + +public final class AlgaeArmConstants { + public static final int kMotorID = 21; + public static final CANBus kBus = Constants.kRIOBus; + public static final int kReduction = 25; + + public static final Angle kStowedAngle = Rotations.of(0); + public static final Angle kDeployedAngle = Rotations.of(0.283); + // TODO: CORRECT THIS VALUE WITH CAD + public static final Distance kArmLength = Inches.of(9); + // TODO: CORRECT THIS VALUE (ASK BRENNAN/MARK) + public static final double kMoi = 0.4; + + public static final CurrentLimitsConfigs kCurrentLimits = + new CurrentLimitsConfigs() + .withStatorCurrentLimit(Amps.of(10)) + .withStatorCurrentLimitEnable(true) + .withSupplyCurrentLimit(Amps.of(40)) + .withSupplyCurrentLimitEnable(true); + public static final FeedbackConfigs kFeedback = + new FeedbackConfigs().withSensorToMechanismRatio(kReduction); + public static final MotionMagicConfigs kMotionMagic = new MotionMagicConfigs(); + public static final Slot0Configs kSlot0 = + new Slot0Configs() + .withKP(10) + .withKI(0) + .withKD(1) + .withKS(0) + .withKV(1) + .withKA(0.05) + .withKG(0.5) + .withGravityType(GravityTypeValue.Arm_Cosine); + + public static final Consumer kAlgaeArmCallback = + config -> { + tryUntilOk(5, () -> config.apply(kCurrentLimits)); + tryUntilOk(5, () -> config.apply(kFeedback)); + }; +} diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java new file mode 100644 index 0000000..1131b56 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java @@ -0,0 +1,55 @@ +package frc.robot.subsystems.algae_arm; + +import static edu.wpi.first.units.Units.*; +import static frc.robot.subsystems.algae_arm.AlgaeArmConstants.*; + +import com.ctre.phoenix6.sim.TalonFXSimState; +import edu.wpi.first.math.system.plant.DCMotor; +import edu.wpi.first.math.system.plant.LinearSystemId; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.wpilibj.RobotController; +import edu.wpi.first.wpilibj.Timer; +import edu.wpi.first.wpilibj.simulation.SingleJointedArmSim; +import frc.robot.util.io.talon.TalonFXIOImpl; + +public class AlgaeArmIOSim extends TalonFXIOImpl { + private final SingleJointedArmSim physicsSim; + private final TalonFXSimState simState; + private double lastTimestamp = Timer.getTimestamp(); + + public AlgaeArmIOSim() { + super(kMotorID, kBus, kAlgaeArmCallback); + simState = talon.getSimState(); + + DCMotor motor = DCMotor.getKrakenX60Foc(1).withReduction(kReduction); + // the reduction is already accounted for, so set it to 1 + var linearSystem = LinearSystemId.createSingleJointedArmSystem(motor, kMoi, 1); + physicsSim = + new SingleJointedArmSim( + linearSystem, + motor, + 1, + kArmLength.in(Meters), + kStowedAngle.in(Radians), + kDeployedAngle.in(Radians), + true, + 0); + } + + @Override + public void updateInputs(TalonFXIOInputs inputs) { + simState.setSupplyVoltage(RobotController.getBatteryVoltage()); + physicsSim.setInputVoltage(simState.getMotorVoltage()); + + double newTimestamp = Timer.getTimestamp(); + physicsSim.update(newTimestamp - lastTimestamp); + lastTimestamp = newTimestamp; + + double rotorPosition = Units.radiansToRotations(physicsSim.getAngleRads()); + simState.setRawRotorPosition(rotorPosition); + double rotorVelocity = Units.radiansToRotations(physicsSim.getVelocityRadPerSec()); + simState.setRotorVelocity(rotorVelocity); + + super.updateInputs(inputs); + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/Drive.java b/src/main/java/frc/robot/subsystems/drive/Drive.java new file mode 100644 index 0000000..1dce1c3 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/Drive.java @@ -0,0 +1,363 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.drive; + +import static edu.wpi.first.units.Units.*; + +import com.ctre.phoenix6.CANBus; +import com.pathplanner.lib.auto.AutoBuilder; +import com.pathplanner.lib.config.ModuleConfig; +import com.pathplanner.lib.config.PIDConstants; +import com.pathplanner.lib.config.RobotConfig; +import com.pathplanner.lib.controllers.PPHolonomicDriveController; +import com.pathplanner.lib.pathfinding.Pathfinding; +import com.pathplanner.lib.util.PathPlannerLogging; +import edu.wpi.first.hal.FRCNetComm.tInstances; +import edu.wpi.first.hal.FRCNetComm.tResourceType; +import edu.wpi.first.hal.HAL; +import edu.wpi.first.math.Matrix; +import edu.wpi.first.math.estimator.SwerveDrivePoseEstimator; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.geometry.Translation2d; +import edu.wpi.first.math.geometry.Twist2d; +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.math.kinematics.SwerveDriveKinematics; +import edu.wpi.first.math.kinematics.SwerveModulePosition; +import edu.wpi.first.math.kinematics.SwerveModuleState; +import edu.wpi.first.math.numbers.N1; +import edu.wpi.first.math.numbers.N3; +import edu.wpi.first.math.system.plant.DCMotor; +import edu.wpi.first.wpilibj.Alert; +import edu.wpi.first.wpilibj.Alert.AlertType; +import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.DriverStation.Alliance; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; +import frc.robot.Constants; +import frc.robot.Constants.Mode; +import frc.robot.generated.TunerConstants; +import frc.robot.util.LocalADStarAK; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; +import org.littletonrobotics.junction.AutoLogOutput; +import org.littletonrobotics.junction.Logger; + +public class Drive extends SubsystemBase { + // TunerConstants doesn't include these constants, so they are declared locally + static final double ODOMETRY_FREQUENCY = + new CANBus(TunerConstants.DrivetrainConstants.CANBusName).isNetworkFD() ? 250.0 : 100.0; + public static final double DRIVE_BASE_RADIUS = + Math.max( + Math.max( + Math.hypot(TunerConstants.FrontLeft.LocationX, TunerConstants.FrontLeft.LocationY), + Math.hypot(TunerConstants.FrontRight.LocationX, TunerConstants.FrontRight.LocationY)), + Math.max( + Math.hypot(TunerConstants.BackLeft.LocationX, TunerConstants.BackLeft.LocationY), + Math.hypot(TunerConstants.BackRight.LocationX, TunerConstants.BackRight.LocationY))); + + // PathPlanner config constants + private static final double ROBOT_MASS_KG = 74.088; + private static final double ROBOT_MOI = 6.883; + private static final double WHEEL_COF = 1.43; + private static final RobotConfig PP_CONFIG = + new RobotConfig( + ROBOT_MASS_KG, + ROBOT_MOI, + new ModuleConfig( + TunerConstants.FrontLeft.WheelRadius, + TunerConstants.kSpeedAt12Volts.in(MetersPerSecond), + WHEEL_COF, + DCMotor.getKrakenX60Foc(1) + .withReduction(TunerConstants.FrontLeft.DriveMotorGearRatio), + TunerConstants.FrontLeft.SlipCurrent, + 1), + getModuleTranslations()); + + static final Lock odometryLock = new ReentrantLock(); + private final GyroIO gyroIO; + private final GyroIOInputsAutoLogged gyroInputs = new GyroIOInputsAutoLogged(); + private final Module[] modules = new Module[4]; // FL, FR, BL, BR + private final SysIdRoutine sysId; + private final Alert gyroDisconnectedAlert = + new Alert("Disconnected gyro, using kinematics as fallback.", AlertType.kError); + + private final SwerveDriveKinematics kinematics = + new SwerveDriveKinematics(getModuleTranslations()); + private Rotation2d rawGyroRotation = new Rotation2d(); + private SwerveModulePosition[] lastModulePositions = // For delta tracking + new SwerveModulePosition[] { + new SwerveModulePosition(), + new SwerveModulePosition(), + new SwerveModulePosition(), + new SwerveModulePosition() + }; + private final SwerveDrivePoseEstimator poseEstimator = + new SwerveDrivePoseEstimator(kinematics, rawGyroRotation, lastModulePositions, new Pose2d()); + + public Drive( + GyroIO gyroIO, + ModuleIO flModuleIO, + ModuleIO frModuleIO, + ModuleIO blModuleIO, + ModuleIO brModuleIO) { + this.gyroIO = gyroIO; + modules[0] = new Module(flModuleIO, 0, TunerConstants.FrontLeft); + modules[1] = new Module(frModuleIO, 1, TunerConstants.FrontRight); + modules[2] = new Module(blModuleIO, 2, TunerConstants.BackLeft); + modules[3] = new Module(brModuleIO, 3, TunerConstants.BackRight); + + // Usage reporting for swerve template + HAL.report(tResourceType.kResourceType_RobotDrive, tInstances.kRobotDriveSwerve_AdvantageKit); + + // Start odometry thread + PhoenixOdometryThread.getInstance().start(); + + // Configure AutoBuilder for PathPlanner + AutoBuilder.configure( + this::getPose, + this::setPose, + this::getChassisSpeeds, + this::runVelocity, + new PPHolonomicDriveController( + new PIDConstants(5.0, 0.0, 0.0), new PIDConstants(5.0, 0.0, 0.0)), + PP_CONFIG, + () -> DriverStation.getAlliance().orElse(Alliance.Blue) == Alliance.Red, + this); + Pathfinding.setPathfinder(new LocalADStarAK()); + PathPlannerLogging.setLogActivePathCallback( + (activePath) -> { + Logger.recordOutput( + "Odometry/Trajectory", activePath.toArray(new Pose2d[activePath.size()])); + }); + PathPlannerLogging.setLogTargetPoseCallback( + (targetPose) -> { + Logger.recordOutput("Odometry/TrajectorySetpoint", targetPose); + }); + + // Configure SysId + sysId = + new SysIdRoutine( + new SysIdRoutine.Config( + null, + null, + null, + (state) -> Logger.recordOutput("Drive/SysIdState", state.toString())), + new SysIdRoutine.Mechanism( + (voltage) -> runCharacterization(voltage.in(Volts)), null, this)); + } + + @Override + public void periodic() { + odometryLock.lock(); // Prevents odometry updates while reading data + gyroIO.updateInputs(gyroInputs); + Logger.processInputs("Drive/Gyro", gyroInputs); + for (var module : modules) { + module.periodic(); + } + odometryLock.unlock(); + + // Stop moving when disabled + if (DriverStation.isDisabled()) { + for (var module : modules) { + module.stop(); + } + } + + // Log empty setpoint states when disabled + if (DriverStation.isDisabled()) { + Logger.recordOutput("SwerveStates/Setpoints", new SwerveModuleState[] {}); + Logger.recordOutput("SwerveStates/SetpointsOptimized", new SwerveModuleState[] {}); + } + + // Update odometry + double[] sampleTimestamps = + modules[0].getOdometryTimestamps(); // All signals are sampled together + int sampleCount = sampleTimestamps.length; + for (int i = 0; i < sampleCount; i++) { + // Read wheel positions and deltas from each module + SwerveModulePosition[] modulePositions = new SwerveModulePosition[4]; + SwerveModulePosition[] moduleDeltas = new SwerveModulePosition[4]; + for (int moduleIndex = 0; moduleIndex < 4; moduleIndex++) { + modulePositions[moduleIndex] = modules[moduleIndex].getOdometryPositions()[i]; + moduleDeltas[moduleIndex] = + new SwerveModulePosition( + modulePositions[moduleIndex].distanceMeters + - lastModulePositions[moduleIndex].distanceMeters, + modulePositions[moduleIndex].angle); + lastModulePositions[moduleIndex] = modulePositions[moduleIndex]; + } + + // Update gyro angle + if (gyroInputs.connected) { + // Use the real gyro angle + rawGyroRotation = gyroInputs.odometryYawPositions[i]; + } else { + // Use the angle delta from the kinematics and module deltas + Twist2d twist = kinematics.toTwist2d(moduleDeltas); + rawGyroRotation = rawGyroRotation.plus(new Rotation2d(twist.dtheta)); + } + + // Apply update + poseEstimator.updateWithTime(sampleTimestamps[i], rawGyroRotation, modulePositions); + } + + // Update gyro alert + gyroDisconnectedAlert.set(!gyroInputs.connected && Constants.currentMode != Mode.SIM); + } + + /** + * Runs the drive at the desired velocity. + * + * @param speeds Speeds in meters/sec + */ + public void runVelocity(ChassisSpeeds speeds) { + // Calculate module setpoints + ChassisSpeeds discreteSpeeds = ChassisSpeeds.discretize(speeds, 0.02); + SwerveModuleState[] setpointStates = kinematics.toSwerveModuleStates(discreteSpeeds); + SwerveDriveKinematics.desaturateWheelSpeeds(setpointStates, TunerConstants.kSpeedAt12Volts); + + // Log unoptimized setpoints and setpoint speeds + Logger.recordOutput("SwerveStates/Setpoints", setpointStates); + Logger.recordOutput("SwerveChassisSpeeds/Setpoints", discreteSpeeds); + + // Send setpoints to modules + for (int i = 0; i < 4; i++) { + modules[i].runSetpoint(setpointStates[i]); + } + + // Log optimized setpoints (runSetpoint mutates each state) + Logger.recordOutput("SwerveStates/SetpointsOptimized", setpointStates); + } + + /** Runs the drive in a straight line with the specified drive output. */ + public void runCharacterization(double output) { + for (int i = 0; i < 4; i++) { + modules[i].runCharacterization(output); + } + } + + /** Stops the drive. */ + public void stop() { + runVelocity(new ChassisSpeeds()); + } + + /** + * Stops the drive and turns the modules to an X arrangement to resist movement. The modules will + * return to their normal orientations the next time a nonzero velocity is requested. + */ + public void stopWithX() { + Rotation2d[] headings = new Rotation2d[4]; + for (int i = 0; i < 4; i++) { + headings[i] = getModuleTranslations()[i].getAngle(); + } + kinematics.resetHeadings(headings); + stop(); + } + + /** Returns a command to run a quasistatic test in the specified direction. */ + public Command sysIdQuasistatic(SysIdRoutine.Direction direction) { + return run(() -> runCharacterization(0.0)) + .withTimeout(1.0) + .andThen(sysId.quasistatic(direction)); + } + + /** Returns a command to run a dynamic test in the specified direction. */ + public Command sysIdDynamic(SysIdRoutine.Direction direction) { + return run(() -> runCharacterization(0.0)).withTimeout(1.0).andThen(sysId.dynamic(direction)); + } + + /** Returns the module states (turn angles and drive velocities) for all of the modules. */ + @AutoLogOutput(key = "SwerveStates/Measured") + private SwerveModuleState[] getModuleStates() { + SwerveModuleState[] states = new SwerveModuleState[4]; + for (int i = 0; i < 4; i++) { + states[i] = modules[i].getState(); + } + return states; + } + + /** Returns the module positions (turn angles and drive positions) for all of the modules. */ + private SwerveModulePosition[] getModulePositions() { + SwerveModulePosition[] states = new SwerveModulePosition[4]; + for (int i = 0; i < 4; i++) { + states[i] = modules[i].getPosition(); + } + return states; + } + + /** Returns the measured chassis speeds of the robot. */ + @AutoLogOutput(key = "SwerveChassisSpeeds/Measured") + private ChassisSpeeds getChassisSpeeds() { + return kinematics.toChassisSpeeds(getModuleStates()); + } + + /** Returns the position of each module in radians. */ + public double[] getWheelRadiusCharacterizationPositions() { + double[] values = new double[4]; + for (int i = 0; i < 4; i++) { + values[i] = modules[i].getWheelRadiusCharacterizationPosition(); + } + return values; + } + + /** Returns the average velocity of the modules in rotations/sec (Phoenix native units). */ + public double getFFCharacterizationVelocity() { + double output = 0.0; + for (int i = 0; i < 4; i++) { + output += modules[i].getFFCharacterizationVelocity() / 4.0; + } + return output; + } + + /** Returns the current odometry pose. */ + @AutoLogOutput(key = "Odometry/Robot") + public Pose2d getPose() { + return poseEstimator.getEstimatedPosition(); + } + + /** Returns the current odometry rotation. */ + public Rotation2d getRotation() { + return getPose().getRotation(); + } + + /** Resets the current odometry pose. */ + public void setPose(Pose2d pose) { + poseEstimator.resetPosition(rawGyroRotation, getModulePositions(), pose); + } + + /** Adds a new timestamped vision measurement. */ + public void addVisionMeasurement( + Pose2d visionRobotPoseMeters, + double timestampSeconds, + Matrix visionMeasurementStdDevs) { + poseEstimator.addVisionMeasurement( + visionRobotPoseMeters, timestampSeconds, visionMeasurementStdDevs); + } + + /** Returns the maximum linear speed in meters per sec. */ + public double getMaxLinearSpeedMetersPerSec() { + return TunerConstants.kSpeedAt12Volts.in(MetersPerSecond); + } + + /** Returns the maximum angular speed in radians per sec. */ + public double getMaxAngularSpeedRadPerSec() { + return getMaxLinearSpeedMetersPerSec() / DRIVE_BASE_RADIUS; + } + + /** Returns an array of module translations. */ + public static Translation2d[] getModuleTranslations() { + return new Translation2d[] { + new Translation2d(TunerConstants.FrontLeft.LocationX, TunerConstants.FrontLeft.LocationY), + new Translation2d(TunerConstants.FrontRight.LocationX, TunerConstants.FrontRight.LocationY), + new Translation2d(TunerConstants.BackLeft.LocationX, TunerConstants.BackLeft.LocationY), + new Translation2d(TunerConstants.BackRight.LocationX, TunerConstants.BackRight.LocationY) + }; + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/GyroIO.java b/src/main/java/frc/robot/subsystems/drive/GyroIO.java new file mode 100644 index 0000000..e5aa51b --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/GyroIO.java @@ -0,0 +1,24 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.drive; + +import edu.wpi.first.math.geometry.Rotation2d; +import org.littletonrobotics.junction.AutoLog; + +public interface GyroIO { + @AutoLog + public static class GyroIOInputs { + public boolean connected = false; + public Rotation2d yawPosition = new Rotation2d(); + public double yawVelocityRadPerSec = 0.0; + public double[] odometryYawTimestamps = new double[] {}; + public Rotation2d[] odometryYawPositions = new Rotation2d[] {}; + } + + public default void updateInputs(GyroIOInputs inputs) {} +} diff --git a/src/main/java/frc/robot/subsystems/drive/GyroIOPigeon2.java b/src/main/java/frc/robot/subsystems/drive/GyroIOPigeon2.java new file mode 100644 index 0000000..58a1005 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/GyroIOPigeon2.java @@ -0,0 +1,61 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.drive; + +import com.ctre.phoenix6.BaseStatusSignal; +import com.ctre.phoenix6.StatusCode; +import com.ctre.phoenix6.StatusSignal; +import com.ctre.phoenix6.configs.Pigeon2Configuration; +import com.ctre.phoenix6.hardware.Pigeon2; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; +import frc.robot.generated.TunerConstants; +import java.util.Queue; + +/** IO implementation for Pigeon 2. */ +public class GyroIOPigeon2 implements GyroIO { + private final Pigeon2 pigeon = + new Pigeon2( + TunerConstants.DrivetrainConstants.Pigeon2Id, + TunerConstants.DrivetrainConstants.CANBusName); + private final StatusSignal yaw = pigeon.getYaw(); + private final Queue yawPositionQueue; + private final Queue yawTimestampQueue; + private final StatusSignal yawVelocity = pigeon.getAngularVelocityZWorld(); + + public GyroIOPigeon2() { + pigeon.getConfigurator().apply(new Pigeon2Configuration()); + pigeon.getConfigurator().setYaw(0.0); + + BaseStatusSignal.setUpdateFrequencyForAll(Drive.ODOMETRY_FREQUENCY, yaw, yawVelocity); + pigeon.optimizeBusUtilization(); + yawTimestampQueue = PhoenixOdometryThread.getInstance().makeTimestampQueue(); + yawPositionQueue = PhoenixOdometryThread.getInstance().registerSignal(yaw, yawVelocity); + } + + @Override + public void updateInputs(GyroIOInputs inputs) { + inputs.connected = BaseStatusSignal.refreshAll(yaw, yawVelocity).equals(StatusCode.OK); + + inputs.yawPosition = + Rotation2d.fromDegrees( + BaseStatusSignal.getLatencyCompensatedValueAsDouble(yaw, yawVelocity)); + inputs.yawVelocityRadPerSec = Units.degreesToRadians(yawVelocity.getValueAsDouble()); + + inputs.odometryYawTimestamps = + yawTimestampQueue.stream().mapToDouble((Double value) -> value).toArray(); + inputs.odometryYawPositions = + yawPositionQueue.stream() + .map((Double value) -> Rotation2d.fromDegrees(value)) + .toArray(Rotation2d[]::new); + yawTimestampQueue.clear(); + yawPositionQueue.clear(); + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/Module.java b/src/main/java/frc/robot/subsystems/drive/Module.java new file mode 100644 index 0000000..7d87193 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/Module.java @@ -0,0 +1,141 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.drive; + +import com.ctre.phoenix6.configs.CANcoderConfiguration; +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.swerve.SwerveModuleConstants; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.kinematics.SwerveModulePosition; +import edu.wpi.first.math.kinematics.SwerveModuleState; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.wpilibj.Alert; +import edu.wpi.first.wpilibj.Alert.AlertType; +import org.littletonrobotics.junction.Logger; + +public class Module { + private final ModuleIO io; + private final ModuleIOInputsAutoLogged inputs = new ModuleIOInputsAutoLogged(); + private final int index; + private final SwerveModuleConstants< + TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration> + constants; + + private final Alert driveDisconnectedAlert; + private final Alert turnDisconnectedAlert; + private final Alert turnEncoderDisconnectedAlert; + private SwerveModulePosition[] odometryPositions = new SwerveModulePosition[] {}; + + public Module( + ModuleIO io, + int index, + SwerveModuleConstants + constants) { + this.io = io; + this.index = index; + this.constants = constants; + driveDisconnectedAlert = + new Alert( + "Disconnected drive motor on module " + Integer.toString(index) + ".", + AlertType.kError); + turnDisconnectedAlert = + new Alert( + "Disconnected turn motor on module " + Integer.toString(index) + ".", AlertType.kError); + turnEncoderDisconnectedAlert = + new Alert( + "Disconnected turn encoder on module " + Integer.toString(index) + ".", + AlertType.kError); + } + + public void periodic() { + io.updateInputs(inputs); + Logger.processInputs("Drive/Module" + Integer.toString(index), inputs); + + // Calculate positions for odometry + int sampleCount = inputs.odometryTimestamps.length; // All signals are sampled together + odometryPositions = new SwerveModulePosition[sampleCount]; + for (int i = 0; i < sampleCount; i++) { + double positionMeters = inputs.odometryDrivePositionsRad[i] * constants.WheelRadius; + Rotation2d angle = inputs.odometryTurnPositions[i]; + odometryPositions[i] = new SwerveModulePosition(positionMeters, angle); + } + + // Update alerts + driveDisconnectedAlert.set(!inputs.driveConnected); + turnDisconnectedAlert.set(!inputs.turnConnected); + turnEncoderDisconnectedAlert.set(!inputs.turnEncoderConnected); + } + + /** Runs the module with the specified setpoint state. Mutates the state to optimize it. */ + public void runSetpoint(SwerveModuleState state) { + // Optimize velocity setpoint + state.optimize(getAngle()); + state.cosineScale(inputs.turnPosition); + + // Apply setpoints + io.setDriveVelocity(state.speedMetersPerSecond / constants.WheelRadius); + io.setTurnPosition(state.angle); + } + + /** Runs the module with the specified output while controlling to zero degrees. */ + public void runCharacterization(double output) { + io.setDriveOpenLoop(output); + io.setTurnPosition(new Rotation2d()); + } + + /** Disables all outputs to motors. */ + public void stop() { + io.setDriveOpenLoop(0.0); + io.setTurnOpenLoop(0.0); + } + + /** Returns the current turn angle of the module. */ + public Rotation2d getAngle() { + return inputs.turnPosition; + } + + /** Returns the current drive position of the module in meters. */ + public double getPositionMeters() { + return inputs.drivePositionRad * constants.WheelRadius; + } + + /** Returns the current drive velocity of the module in meters per second. */ + public double getVelocityMetersPerSec() { + return inputs.driveVelocityRadPerSec * constants.WheelRadius; + } + + /** Returns the module position (turn angle and drive position). */ + public SwerveModulePosition getPosition() { + return new SwerveModulePosition(getPositionMeters(), getAngle()); + } + + /** Returns the module state (turn angle and drive velocity). */ + public SwerveModuleState getState() { + return new SwerveModuleState(getVelocityMetersPerSec(), getAngle()); + } + + /** Returns the module positions received this cycle. */ + public SwerveModulePosition[] getOdometryPositions() { + return odometryPositions; + } + + /** Returns the timestamps of the samples received this cycle. */ + public double[] getOdometryTimestamps() { + return inputs.odometryTimestamps; + } + + /** Returns the module position in radians. */ + public double getWheelRadiusCharacterizationPosition() { + return inputs.drivePositionRad; + } + + /** Returns the module velocity in rotations/sec (Phoenix native units). */ + public double getFFCharacterizationVelocity() { + return Units.radiansToRotations(inputs.driveVelocityRadPerSec); + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/ModuleIO.java b/src/main/java/frc/robot/subsystems/drive/ModuleIO.java new file mode 100644 index 0000000..d498ad4 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/ModuleIO.java @@ -0,0 +1,49 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.drive; + +import edu.wpi.first.math.geometry.Rotation2d; +import org.littletonrobotics.junction.AutoLog; + +public interface ModuleIO { + @AutoLog + public static class ModuleIOInputs { + public boolean driveConnected = false; + public double drivePositionRad = 0.0; + public double driveVelocityRadPerSec = 0.0; + public double driveAppliedVolts = 0.0; + public double driveCurrentAmps = 0.0; + + public boolean turnConnected = false; + public boolean turnEncoderConnected = false; + public Rotation2d turnAbsolutePosition = new Rotation2d(); + public Rotation2d turnPosition = new Rotation2d(); + public double turnVelocityRadPerSec = 0.0; + public double turnAppliedVolts = 0.0; + public double turnCurrentAmps = 0.0; + + public double[] odometryTimestamps = new double[] {}; + public double[] odometryDrivePositionsRad = new double[] {}; + public Rotation2d[] odometryTurnPositions = new Rotation2d[] {}; + } + + /** Updates the set of loggable inputs. */ + public default void updateInputs(ModuleIOInputs inputs) {} + + /** Run the drive motor at the specified open loop value. */ + public default void setDriveOpenLoop(double output) {} + + /** Run the turn motor at the specified open loop value. */ + public default void setTurnOpenLoop(double output) {} + + /** Run the drive motor at the specified velocity. */ + public default void setDriveVelocity(double velocityRadPerSec) {} + + /** Run the turn motor to the specified rotation. */ + public default void setTurnPosition(Rotation2d rotation) {} +} diff --git a/src/main/java/frc/robot/subsystems/drive/ModuleIOSim.java b/src/main/java/frc/robot/subsystems/drive/ModuleIOSim.java new file mode 100644 index 0000000..992d9f6 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/ModuleIOSim.java @@ -0,0 +1,136 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.drive; + +import com.ctre.phoenix6.configs.CANcoderConfiguration; +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.swerve.SwerveModuleConstants; +import edu.wpi.first.math.MathUtil; +import edu.wpi.first.math.controller.PIDController; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.system.plant.DCMotor; +import edu.wpi.first.math.system.plant.LinearSystemId; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.wpilibj.Timer; +import edu.wpi.first.wpilibj.simulation.DCMotorSim; + +/** + * Physics sim implementation of module IO. The sim models are configured using a set of module + * constants from Phoenix. Simulation is always based on voltage control. + */ +public class ModuleIOSim implements ModuleIO { + // TunerConstants doesn't support separate sim constants, so they are declared locally + private static final double DRIVE_KP = 0.05; + private static final double DRIVE_KD = 0.0; + private static final double DRIVE_KS = 0.0; + private static final double DRIVE_KV_ROT = + 0.91035; // Same units as TunerConstants: (volt * secs) / rotation + private static final double DRIVE_KV = 1.0 / Units.rotationsToRadians(1.0 / DRIVE_KV_ROT); + private static final double TURN_KP = 8.0; + private static final double TURN_KD = 0.0; + private static final DCMotor DRIVE_GEARBOX = DCMotor.getKrakenX60Foc(1); + private static final DCMotor TURN_GEARBOX = DCMotor.getKrakenX60Foc(1); + + private final DCMotorSim driveSim; + private final DCMotorSim turnSim; + + private boolean driveClosedLoop = false; + private boolean turnClosedLoop = false; + private PIDController driveController = new PIDController(DRIVE_KP, 0, DRIVE_KD); + private PIDController turnController = new PIDController(TURN_KP, 0, TURN_KD); + private double driveFFVolts = 0.0; + private double driveAppliedVolts = 0.0; + private double turnAppliedVolts = 0.0; + + public ModuleIOSim( + SwerveModuleConstants + constants) { + // Create drive and turn sim models + driveSim = + new DCMotorSim( + LinearSystemId.createDCMotorSystem( + DRIVE_GEARBOX, constants.DriveInertia, constants.DriveMotorGearRatio), + DRIVE_GEARBOX); + turnSim = + new DCMotorSim( + LinearSystemId.createDCMotorSystem( + TURN_GEARBOX, constants.SteerInertia, constants.SteerMotorGearRatio), + TURN_GEARBOX); + + // Enable wrapping for turn PID + turnController.enableContinuousInput(-Math.PI, Math.PI); + } + + @Override + public void updateInputs(ModuleIOInputs inputs) { + // Run closed-loop control + if (driveClosedLoop) { + driveAppliedVolts = + driveFFVolts + driveController.calculate(driveSim.getAngularVelocityRadPerSec()); + } else { + driveController.reset(); + } + if (turnClosedLoop) { + turnAppliedVolts = turnController.calculate(turnSim.getAngularPositionRad()); + } else { + turnController.reset(); + } + + // Update simulation state + driveSim.setInputVoltage(MathUtil.clamp(driveAppliedVolts, -12.0, 12.0)); + turnSim.setInputVoltage(MathUtil.clamp(turnAppliedVolts, -12.0, 12.0)); + driveSim.update(0.02); + turnSim.update(0.02); + + // Update drive inputs + inputs.driveConnected = true; + inputs.drivePositionRad = driveSim.getAngularPositionRad(); + inputs.driveVelocityRadPerSec = driveSim.getAngularVelocityRadPerSec(); + inputs.driveAppliedVolts = driveAppliedVolts; + inputs.driveCurrentAmps = Math.abs(driveSim.getCurrentDrawAmps()); + + // Update turn inputs + inputs.turnConnected = true; + inputs.turnEncoderConnected = true; + inputs.turnAbsolutePosition = new Rotation2d(turnSim.getAngularPositionRad()); + inputs.turnPosition = new Rotation2d(turnSim.getAngularPositionRad()); + inputs.turnVelocityRadPerSec = turnSim.getAngularVelocityRadPerSec(); + inputs.turnAppliedVolts = turnAppliedVolts; + inputs.turnCurrentAmps = Math.abs(turnSim.getCurrentDrawAmps()); + + // Update odometry inputs (50Hz because high-frequency odometry in sim doesn't matter) + inputs.odometryTimestamps = new double[] {Timer.getFPGATimestamp()}; + inputs.odometryDrivePositionsRad = new double[] {inputs.drivePositionRad}; + inputs.odometryTurnPositions = new Rotation2d[] {inputs.turnPosition}; + } + + @Override + public void setDriveOpenLoop(double output) { + driveClosedLoop = false; + driveAppliedVolts = output; + } + + @Override + public void setTurnOpenLoop(double output) { + turnClosedLoop = false; + turnAppliedVolts = output; + } + + @Override + public void setDriveVelocity(double velocityRadPerSec) { + driveClosedLoop = true; + driveFFVolts = DRIVE_KS * Math.signum(velocityRadPerSec) + DRIVE_KV * velocityRadPerSec; + driveController.setSetpoint(velocityRadPerSec); + } + + @Override + public void setTurnPosition(Rotation2d rotation) { + turnClosedLoop = true; + turnController.setSetpoint(rotation.getRadians()); + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/ModuleIOTalonFX.java b/src/main/java/frc/robot/subsystems/drive/ModuleIOTalonFX.java new file mode 100644 index 0000000..ba370a7 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/ModuleIOTalonFX.java @@ -0,0 +1,263 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.drive; + +import static frc.robot.util.phoenix.PhoenixUtil.*; + +import com.ctre.phoenix6.BaseStatusSignal; +import com.ctre.phoenix6.StatusSignal; +import com.ctre.phoenix6.configs.CANcoderConfiguration; +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.controls.PositionTorqueCurrentFOC; +import com.ctre.phoenix6.controls.PositionVoltage; +import com.ctre.phoenix6.controls.TorqueCurrentFOC; +import com.ctre.phoenix6.controls.VelocityTorqueCurrentFOC; +import com.ctre.phoenix6.controls.VelocityVoltage; +import com.ctre.phoenix6.controls.VoltageOut; +import com.ctre.phoenix6.hardware.CANcoder; +import com.ctre.phoenix6.hardware.ParentDevice; +import com.ctre.phoenix6.hardware.TalonFX; +import com.ctre.phoenix6.signals.FeedbackSensorSourceValue; +import com.ctre.phoenix6.signals.InvertedValue; +import com.ctre.phoenix6.signals.NeutralModeValue; +import com.ctre.phoenix6.signals.SensorDirectionValue; +import com.ctre.phoenix6.swerve.SwerveModuleConstants; +import edu.wpi.first.math.filter.Debouncer; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Voltage; +import frc.robot.generated.TunerConstants; +import java.util.Queue; + +/** + * Module IO implementation for Talon FX drive motor controller, Talon FX turn motor controller, and + * CANcoder. Configured using a set of module constants from Phoenix. + * + *

Device configuration and other behaviors not exposed by TunerConstants can be customized here. + */ +public class ModuleIOTalonFX implements ModuleIO { + private final SwerveModuleConstants< + TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration> + constants; + + // Hardware objects + private final TalonFX driveTalon; + private final TalonFX turnTalon; + private final CANcoder cancoder; + + // Voltage control requests + private final VoltageOut voltageRequest = new VoltageOut(0); + private final PositionVoltage positionVoltageRequest = new PositionVoltage(0.0); + private final VelocityVoltage velocityVoltageRequest = new VelocityVoltage(0.0); + + // Torque-current control requests + private final TorqueCurrentFOC torqueCurrentRequest = new TorqueCurrentFOC(0); + private final PositionTorqueCurrentFOC positionTorqueCurrentRequest = + new PositionTorqueCurrentFOC(0.0); + private final VelocityTorqueCurrentFOC velocityTorqueCurrentRequest = + new VelocityTorqueCurrentFOC(0.0); + + // Timestamp inputs from Phoenix thread + private final Queue timestampQueue; + + // Inputs from drive motor + private final StatusSignal drivePosition; + private final Queue drivePositionQueue; + private final StatusSignal driveVelocity; + private final StatusSignal driveAppliedVolts; + private final StatusSignal driveCurrent; + + // Inputs from turn motor + private final StatusSignal turnAbsolutePosition; + private final StatusSignal turnPosition; + private final Queue turnPositionQueue; + private final StatusSignal turnVelocity; + private final StatusSignal turnAppliedVolts; + private final StatusSignal turnCurrent; + + // Connection debouncers + private final Debouncer driveConnectedDebounce = new Debouncer(0.5); + private final Debouncer turnConnectedDebounce = new Debouncer(0.5); + private final Debouncer turnEncoderConnectedDebounce = new Debouncer(0.5); + + public ModuleIOTalonFX( + SwerveModuleConstants + constants) { + this.constants = constants; + driveTalon = new TalonFX(constants.DriveMotorId, TunerConstants.DrivetrainConstants.CANBusName); + turnTalon = new TalonFX(constants.SteerMotorId, TunerConstants.DrivetrainConstants.CANBusName); + cancoder = new CANcoder(constants.EncoderId, TunerConstants.DrivetrainConstants.CANBusName); + + // Configure drive motor + var driveConfig = constants.DriveMotorInitialConfigs; + driveConfig.MotorOutput.NeutralMode = NeutralModeValue.Brake; + driveConfig.Slot0 = constants.DriveMotorGains; + driveConfig.Feedback.SensorToMechanismRatio = constants.DriveMotorGearRatio; + driveConfig.TorqueCurrent.PeakForwardTorqueCurrent = constants.SlipCurrent; + driveConfig.TorqueCurrent.PeakReverseTorqueCurrent = -constants.SlipCurrent; + driveConfig.CurrentLimits.StatorCurrentLimit = constants.SlipCurrent; + driveConfig.CurrentLimits.StatorCurrentLimitEnable = true; + driveConfig.MotorOutput.Inverted = + constants.DriveMotorInverted + ? InvertedValue.Clockwise_Positive + : InvertedValue.CounterClockwise_Positive; + tryUntilOk(5, () -> driveTalon.getConfigurator().apply(driveConfig, 0.25)); + tryUntilOk(5, () -> driveTalon.setPosition(0.0, 0.25)); + + // Configure turn motor + var turnConfig = new TalonFXConfiguration(); + turnConfig.MotorOutput.NeutralMode = NeutralModeValue.Brake; + turnConfig.Slot0 = constants.SteerMotorGains; + turnConfig.Feedback.FeedbackRemoteSensorID = constants.EncoderId; + turnConfig.Feedback.FeedbackSensorSource = + switch (constants.FeedbackSource) { + case RemoteCANcoder -> FeedbackSensorSourceValue.RemoteCANcoder; + case FusedCANcoder -> FeedbackSensorSourceValue.FusedCANcoder; + case SyncCANcoder -> FeedbackSensorSourceValue.SyncCANcoder; + default -> throw new RuntimeException( + "You are using an unsupported swerve configuration, which this template does not support without manual customization. The 2025 release of Phoenix supports some swerve configurations which were not available during 2025 beta testing, preventing any development and support from the AdvantageKit developers."); + }; + turnConfig.Feedback.RotorToSensorRatio = constants.SteerMotorGearRatio; + turnConfig.MotionMagic.MotionMagicCruiseVelocity = 100.0 / constants.SteerMotorGearRatio; + turnConfig.MotionMagic.MotionMagicAcceleration = + turnConfig.MotionMagic.MotionMagicCruiseVelocity / 0.100; + turnConfig.MotionMagic.MotionMagicExpo_kV = 0.12 * constants.SteerMotorGearRatio; + turnConfig.MotionMagic.MotionMagicExpo_kA = 0.1; + turnConfig.ClosedLoopGeneral.ContinuousWrap = true; + turnConfig.MotorOutput.Inverted = + constants.SteerMotorInverted + ? InvertedValue.Clockwise_Positive + : InvertedValue.CounterClockwise_Positive; + tryUntilOk(5, () -> turnTalon.getConfigurator().apply(turnConfig, 0.25)); + + // Configure CANCoder + CANcoderConfiguration cancoderConfig = constants.EncoderInitialConfigs; + cancoderConfig.MagnetSensor.MagnetOffset = constants.EncoderOffset; + cancoderConfig.MagnetSensor.SensorDirection = + constants.EncoderInverted + ? SensorDirectionValue.Clockwise_Positive + : SensorDirectionValue.CounterClockwise_Positive; + cancoder.getConfigurator().apply(cancoderConfig); + + // Create timestamp queue + timestampQueue = PhoenixOdometryThread.getInstance().makeTimestampQueue(); + + // Create drive status signals + drivePosition = driveTalon.getPosition(); + driveVelocity = driveTalon.getVelocity(); + drivePositionQueue = + PhoenixOdometryThread.getInstance().registerSignal(drivePosition, driveVelocity); + driveAppliedVolts = driveTalon.getMotorVoltage(); + driveCurrent = driveTalon.getStatorCurrent(); + + // Create turn status signals + turnAbsolutePosition = cancoder.getAbsolutePosition(); + turnPosition = turnTalon.getPosition(); + turnVelocity = turnTalon.getVelocity(); + turnPositionQueue = + PhoenixOdometryThread.getInstance().registerSignal(turnPosition, turnVelocity); + turnAppliedVolts = turnTalon.getMotorVoltage(); + turnCurrent = turnTalon.getStatorCurrent(); + + // Configure periodic frames + BaseStatusSignal.setUpdateFrequencyForAll( + Drive.ODOMETRY_FREQUENCY, drivePosition, turnPosition); + BaseStatusSignal.setUpdateFrequencyForAll( + 50.0, + driveVelocity, + driveAppliedVolts, + driveCurrent, + turnAbsolutePosition, + turnVelocity, + turnAppliedVolts, + turnCurrent); + ParentDevice.optimizeBusUtilizationForAll(driveTalon, turnTalon); + } + + @Override + public void updateInputs(ModuleIOInputs inputs) { + // Refresh all signals + var driveStatus = + BaseStatusSignal.refreshAll(drivePosition, driveVelocity, driveAppliedVolts, driveCurrent); + var turnStatus = + BaseStatusSignal.refreshAll(turnPosition, turnVelocity, turnAppliedVolts, turnCurrent); + var turnEncoderStatus = BaseStatusSignal.refreshAll(turnAbsolutePosition); + + // Update drive inputs + inputs.driveConnected = driveConnectedDebounce.calculate(driveStatus.isOK()); + inputs.drivePositionRad = Units.rotationsToRadians(drivePosition.getValueAsDouble()); + inputs.driveVelocityRadPerSec = Units.rotationsToRadians(driveVelocity.getValueAsDouble()); + inputs.driveAppliedVolts = driveAppliedVolts.getValueAsDouble(); + inputs.driveCurrentAmps = driveCurrent.getValueAsDouble(); + + // Update turn inputs + inputs.turnConnected = turnConnectedDebounce.calculate(turnStatus.isOK()); + inputs.turnEncoderConnected = turnEncoderConnectedDebounce.calculate(turnEncoderStatus.isOK()); + inputs.turnAbsolutePosition = Rotation2d.fromRotations(turnAbsolutePosition.getValueAsDouble()); + inputs.turnPosition = Rotation2d.fromRotations(turnPosition.getValueAsDouble()); + inputs.turnVelocityRadPerSec = Units.rotationsToRadians(turnVelocity.getValueAsDouble()); + inputs.turnAppliedVolts = turnAppliedVolts.getValueAsDouble(); + inputs.turnCurrentAmps = turnCurrent.getValueAsDouble(); + + // Update odometry inputs + inputs.odometryTimestamps = + timestampQueue.stream().mapToDouble((Double value) -> value).toArray(); + inputs.odometryDrivePositionsRad = + drivePositionQueue.stream() + .mapToDouble((Double value) -> Units.rotationsToRadians(value)) + .toArray(); + inputs.odometryTurnPositions = + turnPositionQueue.stream() + .map((Double value) -> Rotation2d.fromRotations(value)) + .toArray(Rotation2d[]::new); + timestampQueue.clear(); + drivePositionQueue.clear(); + turnPositionQueue.clear(); + } + + @Override + public void setDriveOpenLoop(double output) { + driveTalon.setControl( + switch (constants.DriveMotorClosedLoopOutput) { + case Voltage -> voltageRequest.withOutput(output); + case TorqueCurrentFOC -> torqueCurrentRequest.withOutput(output); + }); + } + + @Override + public void setTurnOpenLoop(double output) { + turnTalon.setControl( + switch (constants.SteerMotorClosedLoopOutput) { + case Voltage -> voltageRequest.withOutput(output); + case TorqueCurrentFOC -> torqueCurrentRequest.withOutput(output); + }); + } + + @Override + public void setDriveVelocity(double velocityRadPerSec) { + double velocityRotPerSec = Units.radiansToRotations(velocityRadPerSec); + driveTalon.setControl( + switch (constants.DriveMotorClosedLoopOutput) { + case Voltage -> velocityVoltageRequest.withVelocity(velocityRotPerSec); + case TorqueCurrentFOC -> velocityTorqueCurrentRequest.withVelocity(velocityRotPerSec); + }); + } + + @Override + public void setTurnPosition(Rotation2d rotation) { + turnTalon.setControl( + switch (constants.SteerMotorClosedLoopOutput) { + case Voltage -> positionVoltageRequest.withPosition(rotation.getRotations()); + case TorqueCurrentFOC -> positionTorqueCurrentRequest.withPosition( + rotation.getRotations()); + }); + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/PhoenixOdometryThread.java b/src/main/java/frc/robot/subsystems/drive/PhoenixOdometryThread.java new file mode 100644 index 0000000..6c332fb --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/PhoenixOdometryThread.java @@ -0,0 +1,168 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.drive; + +import com.ctre.phoenix6.BaseStatusSignal; +import com.ctre.phoenix6.CANBus; +import com.ctre.phoenix6.StatusSignal; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.wpilibj.RobotController; +import frc.robot.generated.TunerConstants; +import java.util.ArrayList; +import java.util.List; +import java.util.Queue; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.DoubleSupplier; + +/** + * Provides an interface for asynchronously reading high-frequency measurements to a set of queues. + * + *

This version is intended for Phoenix 6 devices on both the RIO and CANivore buses. When using + * a CANivore, the thread uses the "waitForAll" blocking method to enable more consistent sampling. + * This also allows Phoenix Pro users to benefit from lower latency between devices using CANivore + * time synchronization. + */ +public class PhoenixOdometryThread extends Thread { + private final Lock signalsLock = + new ReentrantLock(); // Prevents conflicts when registering signals + private BaseStatusSignal[] phoenixSignals = new BaseStatusSignal[0]; + private final List genericSignals = new ArrayList<>(); + private final List> phoenixQueues = new ArrayList<>(); + private final List> genericQueues = new ArrayList<>(); + private final List> timestampQueues = new ArrayList<>(); + + private static boolean isCANFD = + new CANBus(TunerConstants.DrivetrainConstants.CANBusName).isNetworkFD(); + private static PhoenixOdometryThread instance = null; + + public static PhoenixOdometryThread getInstance() { + if (instance == null) { + instance = new PhoenixOdometryThread(); + } + return instance; + } + + private PhoenixOdometryThread() { + setName("PhoenixOdometryThread"); + setDaemon(true); + } + + @Override + public synchronized void start() { + if (timestampQueues.size() > 0) { + super.start(); + } + } + + /** Registers a Phoenix signal to be read from the thread. */ + public Queue registerSignal( + StatusSignal signal, StatusSignal derivative) { + Queue queue = new ArrayBlockingQueue<>(20); + signalsLock.lock(); + Drive.odometryLock.lock(); + try { + BaseStatusSignal[] newSignals = new BaseStatusSignal[phoenixSignals.length + 2]; + System.arraycopy(phoenixSignals, 0, newSignals, 0, phoenixSignals.length); + newSignals[phoenixSignals.length] = signal; + newSignals[phoenixSignals.length + 1] = derivative; + phoenixSignals = newSignals; + phoenixQueues.add(queue); + } finally { + signalsLock.unlock(); + Drive.odometryLock.unlock(); + } + return queue; + } + + /** Registers a generic signal to be read from the thread. */ + public Queue registerSignal(DoubleSupplier signal) { + Queue queue = new ArrayBlockingQueue<>(20); + signalsLock.lock(); + Drive.odometryLock.lock(); + try { + genericSignals.add(signal); + genericQueues.add(queue); + } finally { + signalsLock.unlock(); + Drive.odometryLock.unlock(); + } + return queue; + } + + /** Returns a new queue that returns timestamp values for each sample. */ + public Queue makeTimestampQueue() { + Queue queue = new ArrayBlockingQueue<>(20); + Drive.odometryLock.lock(); + try { + timestampQueues.add(queue); + } finally { + Drive.odometryLock.unlock(); + } + return queue; + } + + @Override + public void run() { + while (true) { + // Wait for updates from all signals + signalsLock.lock(); + try { + if (isCANFD && phoenixSignals.length > 0) { + BaseStatusSignal.waitForAll(2.0 / Drive.ODOMETRY_FREQUENCY, phoenixSignals); + } else { + // "waitForAll" does not support blocking on multiple signals with a bus + // that is not CAN FD, regardless of Pro licensing. No reasoning for this + // behavior is provided by the documentation. + Thread.sleep((long) (1000.0 / Drive.ODOMETRY_FREQUENCY)); + if (phoenixSignals.length > 0) BaseStatusSignal.refreshAll(phoenixSignals); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } finally { + signalsLock.unlock(); + } + + // Save new data to queues + Drive.odometryLock.lock(); + try { + // Sample timestamp is current FPGA time minus average CAN latency + // Default timestamps from Phoenix are NOT compatible with + // FPGA timestamps, this solution is imperfect but close + double timestamp = RobotController.getFPGATime() / 1e6; + double totalLatency = 0.0; + for (BaseStatusSignal signal : phoenixSignals) { + totalLatency += signal.getTimestamp().getLatency(); + } + if (phoenixSignals.length > 0) { + timestamp -= totalLatency / phoenixSignals.length; + } + + // Add new samples to queues + { + int i = 0; + for (var queue : phoenixQueues) { + queue.offer( + BaseStatusSignal.getLatencyCompensatedValueAsDouble( + phoenixSignals[i++], phoenixSignals[i++])); + } + } + for (int i = 0; i < genericSignals.size(); i++) { + genericQueues.get(i).offer(genericSignals.get(i).getAsDouble()); + } + for (var queue : timestampQueues) { + queue.offer(timestamp); + } + } finally { + Drive.odometryLock.unlock(); + } + } + } +} diff --git a/src/main/java/frc/robot/subsystems/elevator/Elevator.java b/src/main/java/frc/robot/subsystems/elevator/Elevator.java new file mode 100644 index 0000000..f867727 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/elevator/Elevator.java @@ -0,0 +1,98 @@ +package frc.robot.subsystems.elevator; + +import static edu.wpi.first.units.Units.Rotations; + +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import edu.wpi.first.wpilibj2.command.button.Trigger; +import org.littletonrobotics.junction.Logger; + +public class Elevator extends SubsystemBase { + public static enum Setpoint { + Stowed(0), + L2(1.67), + L3(2.82), + L4(4.7), + AlgaeLow(0.32), + AlgaeHigh(1.625), + Barge(4.7); + + final Angle target; + + Setpoint(double rots) { + target = Rotations.of(rots); + } + + public boolean isElevated() { + return this != Stowed; + } + + public boolean isCoral() { + switch (this) { + case L2: + case L3: + case L4: + return true; + + default: + return false; + } + } + + public boolean isAlgae() { + switch (this) { + case AlgaeLow: + case AlgaeHigh: + case Barge: + return true; + + default: + return false; + } + } + } + + private final ElevatorIO io; + private final ElevatorIOInputsAutoLogged inputs = new ElevatorIOInputsAutoLogged(); + private Setpoint lastSetpoint = Setpoint.Stowed, currentSetpoint = Setpoint.Stowed; + + public final Trigger isAtSetpoint = + new Trigger(() -> inputs.leaderPosition.isNear(currentSetpoint.target, Rotations.of(0.05))); + + public Elevator(ElevatorIO motorIO) { + io = motorIO; + } + + @Override + public void periodic() { + io.updateInputs(inputs); + Logger.processInputs("Elevator/Motors", inputs); + + SmartDashboard.putNumber("Elevator Setpoint", currentSetpoint.target.in(Rotations)); + } + + private void setRotationalTarget(Angle rots) { + io.setTarget(rots, lastSetpoint.isElevated() && currentSetpoint.isElevated()); + } + + private void newSetpoint(Setpoint setpoint) { + lastSetpoint = currentSetpoint; + currentSetpoint = setpoint; + } + + public Command setTarget(Setpoint setpoint) { + return runOnce(() -> setRotationalTarget(setpoint.target)) + .beforeStarting(() -> newSetpoint(setpoint)); + } + + public Command stow() { + return runOnce(() -> setRotationalTarget(Setpoint.Stowed.target)) + .beforeStarting(() -> newSetpoint(Setpoint.Stowed)); + } + + public boolean madeProgress(double percentage) { + return inputs.leaderPosition.gt(currentSetpoint.target.times(percentage)); + } +} diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java new file mode 100644 index 0000000..ae5d16b --- /dev/null +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java @@ -0,0 +1,70 @@ +package frc.robot.subsystems.elevator; + +import static edu.wpi.first.units.Units.*; + +import com.ctre.phoenix6.CANBus; +import com.ctre.phoenix6.configs.Slot0Configs; +import com.ctre.phoenix6.configs.Slot1Configs; +import com.ctre.phoenix6.configs.Slot2Configs; +import com.ctre.phoenix6.signals.GravityTypeValue; +import edu.wpi.first.units.AngularAccelerationUnit; +import edu.wpi.first.units.measure.*; + +public final class ElevatorConstants { + public static final int kLeaderId = 13, kFollowerId = 14; + public static final CANBus kMotorBus = new CANBus("canivore0"); + + public static final class Trapezoidal { + public static final AngularVelocity kMaxVelocity = RotationsPerSecond.of(15); + public static final AngularAcceleration kMaxAcceleration = RotationsPerSecondPerSecond.of(35); + public static final Velocity kMaxJerk = + RotationsPerSecondPerSecond.per(Second).of(100); + } + + public static final class Exponential { + public static final AngularAcceleration kMaxAcceleration = RotationsPerSecondPerSecond.of(50); + public static final Velocity kMaxJerk = + RotationsPerSecondPerSecond.per(Second).of(200); + + public static final double kExpo_kV = 0.6; + public static final double kExpo_kA = 0.2; + } + + /** Gains for moving the elevator to a setpoint from stow */ + public static final Slot0Configs kRiseGains = + new Slot0Configs() + .withGravityType(GravityTypeValue.Elevator_Static) + .withKP(50) + .withKI(0) + .withKD(30) + .withKV(2.33) + .withKA(0.1) + .withKG(1.0) + .withKS(0.2); + + /** Gains for stowing the elevator */ + public static final Slot1Configs kStowGains = + new Slot1Configs() + .withGravityType(GravityTypeValue.Elevator_Static) + .withKP(25) + .withKI(0) + .withKD(5) + .withKV(2.33) + .withKA(0.05) + .withKG(0.8) + .withKS(0.2); + + /** Gains for traversing between any two non-stow setpoints */ + public static final Slot2Configs kTraversalGains = + new Slot2Configs() + .withGravityType(GravityTypeValue.Elevator_Static) + .withKP(50) + .withKI(0) + .withKD(3) + .withKV(2.33) + .withKA(0.07) + .withKG(0.72) + .withKS(0.2); + + public static final Distance kSpoolCircumference = Inches.of(6); +} diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java new file mode 100644 index 0000000..bdfdcd1 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java @@ -0,0 +1,37 @@ +package frc.robot.subsystems.elevator; + +import static edu.wpi.first.units.Units.Amps; +import static edu.wpi.first.units.Units.Inches; +import static edu.wpi.first.units.Units.Rotations; +import static edu.wpi.first.units.Units.RotationsPerSecond; +import static edu.wpi.first.units.Units.RotationsPerSecondPerSecond; +import static edu.wpi.first.units.Units.Volts; + +import edu.wpi.first.units.measure.*; +import org.littletonrobotics.junction.AutoLog; + +public interface ElevatorIO { + @AutoLog + public static class ElevatorIOInputs { + public boolean leaderConnected = false, followerConnected = false; + public Angle leaderPosition = Rotations.of(0), followerPosition = Rotations.of(0); + public AngularVelocity velocity = RotationsPerSecond.of(0); + public AngularAcceleration acceleration = RotationsPerSecondPerSecond.of(0); + public Voltage leaderVoltage = Volts.of(0), followerVoltage = Volts.of(0); + public Current torqueCurrent = Amps.of(0), + statorCurrent = Amps.of(0), + supplyCurrent = Amps.of(0); + public double closedLoopError = 0, closedLoopReference = 0, closedLoopRefSlope = 0; + public double proportionalOutput = 0, + derivativeOutput = 0, + feedforward = 0, + closedLoopOutput = 0; + public Distance height = Inches.of(0); + } + + default void updateInputs(ElevatorIOInputs inputs) {} + + default void setTarget(Angle angle, boolean useTrapezoidal) {} + + default void stow() {} +} diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorIOSim.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOSim.java new file mode 100644 index 0000000..0762d01 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOSim.java @@ -0,0 +1,48 @@ +package frc.robot.subsystems.elevator; + +import static edu.wpi.first.units.Units.*; + +import com.ctre.phoenix6.sim.TalonFXSimState; +import edu.wpi.first.math.system.plant.DCMotor; +import edu.wpi.first.math.system.plant.LinearSystemId; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.wpilibj.RobotController; +import edu.wpi.first.wpilibj.Timer; +import edu.wpi.first.wpilibj.simulation.ElevatorSim; + +public final class ElevatorIOSim extends ElevatorIOTalonFX { + private final DCMotor motor = DCMotor.getKrakenX60Foc(2).withReduction(9); + // TODO: TUNE/CORRECT THESE CONSTANTS + private final ElevatorSim physicsSim = + new ElevatorSim( + LinearSystemId.createElevatorSystem( + motor, 11.34, Units.inchesToMeters(6) / (2 * Math.PI), 1), + motor, + 0, + Units.inchesToMeters(6) * 4.67, + true, + 0); + + private final TalonFXSimState simState = leader.getSimState(); + private double lastTimestamp = Timer.getTimestamp(); + + @Override + public void updateInputs(ElevatorIOInputs inputs) { + simState.setSupplyVoltage(RobotController.getBatteryVoltage()); + double appliedVoltage = simState.getMotorVoltage(); + physicsSim.setInputVoltage(appliedVoltage); + + var newTimestamp = Timer.getTimestamp(); + physicsSim.update(newTimestamp - lastTimestamp); + lastTimestamp = newTimestamp; + + var rots = ElevatorUtils.inchesToRotations(Meters.of(physicsSim.getPositionMeters())); + simState.setRawRotorPosition(rots); + var velocity = + ElevatorUtils.convertVelocity(MetersPerSecond.of(physicsSim.getVelocityMetersPerSecond())); + simState.setRotorVelocity(velocity); + + // use the updated StatusSignals after running the physics sim + super.updateInputs(inputs); + } +} diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java new file mode 100644 index 0000000..ca419a7 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java @@ -0,0 +1,165 @@ +package frc.robot.subsystems.elevator; + +import static edu.wpi.first.units.Units.*; +import static frc.robot.subsystems.elevator.ElevatorConstants.*; +import static frc.robot.util.phoenix.PhoenixUtil.tryUntilOk; + +import com.ctre.phoenix6.BaseStatusSignal; +import com.ctre.phoenix6.StatusSignal; +import com.ctre.phoenix6.configs.CurrentLimitsConfigs; +import com.ctre.phoenix6.configs.FeedbackConfigs; +import com.ctre.phoenix6.configs.MotionMagicConfigs; +import com.ctre.phoenix6.configs.SoftwareLimitSwitchConfigs; +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.controls.ControlRequest; +import com.ctre.phoenix6.controls.DynamicMotionMagicTorqueCurrentFOC; +import com.ctre.phoenix6.controls.Follower; +import com.ctre.phoenix6.controls.MotionMagicExpoTorqueCurrentFOC; +import com.ctre.phoenix6.hardware.TalonFX; +import com.ctre.phoenix6.signals.NeutralModeValue; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularAcceleration; +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Voltage; +import frc.robot.subsystems.elevator.Elevator.Setpoint; + +public sealed class ElevatorIOTalonFX implements ElevatorIO permits ElevatorIOSim { + protected final TalonFX leader = new TalonFX(kLeaderId, kMotorBus); + private final TalonFX follower = new TalonFX(kFollowerId, kMotorBus); + + private final StatusSignal leaderPosition = leader.getPosition(), + followerPosition = follower.getPosition(); + private final StatusSignal velocity = leader.getVelocity(); + private final StatusSignal acceleration = leader.getAcceleration(); + private final StatusSignal leaderVoltage = leader.getMotorVoltage(), + followerVoltage = follower.getMotorVoltage(); + private final StatusSignal torqueCurrent = leader.getTorqueCurrent(), + statorCurrent = leader.getStatorCurrent(), + supplyCurrent = leader.getSupplyCurrent(); + private final StatusSignal closedLoopError = leader.getClosedLoopError(), + closedLoopReference = leader.getClosedLoopReference(), + closedLoopRefSlope = leader.getClosedLoopReferenceSlope(), + closedLoopProportional = leader.getClosedLoopProportionalOutput(), + closedLoopDerivative = leader.getClosedLoopDerivativeOutput(), + closedLoopFeedForward = leader.getClosedLoopFeedForward(), + closedLoopOutput = leader.getClosedLoopOutput(); + + private final BaseStatusSignal[] leaderSignals = + new BaseStatusSignal[] { + leaderPosition, + velocity, + acceleration, + leaderVoltage, + torqueCurrent, + statorCurrent, + supplyCurrent, + closedLoopError, + closedLoopReference, + closedLoopRefSlope, + closedLoopProportional, + closedLoopDerivative, + closedLoopFeedForward, + closedLoopOutput + }; + + /** Control request for moving up to a setpoint, or for stowing the carriage */ + private final MotionMagicExpoTorqueCurrentFOC exponential = + new MotionMagicExpoTorqueCurrentFOC(0).withUseTimesync(true).withFeedForward(Amps.of(8)); + /** Control request for moving between setpoints, where neither is from stow */ + private final DynamicMotionMagicTorqueCurrentFOC trapezoidal = + new DynamicMotionMagicTorqueCurrentFOC( + Rotations.of(0), + Trapezoidal.kMaxVelocity, + Trapezoidal.kMaxAcceleration, + Trapezoidal.kMaxJerk) + .withUseTimesync(true) + .withFeedForward(Amps.of(8)); + + public ElevatorIOTalonFX() { + final var config = + new TalonFXConfiguration() + .withSlot0(kRiseGains) + .withSlot1(kStowGains) + .withSlot2(kTraversalGains) + .withCurrentLimits( + new CurrentLimitsConfigs() + .withStatorCurrentLimit(80) + .withStatorCurrentLimitEnable(true) + .withSupplyCurrentLimit(120) + .withSupplyCurrentLimitEnable(true)) + .withMotionMagic( + new MotionMagicConfigs() + .withMotionMagicCruiseVelocity(0) + .withMotionMagicAcceleration(Exponential.kMaxAcceleration) + .withMotionMagicJerk(Exponential.kMaxJerk) + .withMotionMagicExpo_kV(Exponential.kExpo_kV) + .withMotionMagicExpo_kA(Exponential.kExpo_kA)) + .withFeedback(new FeedbackConfigs().withSensorToMechanismRatio(9)) + .withSoftwareLimitSwitch( + new SoftwareLimitSwitchConfigs() + .withReverseSoftLimitThreshold(0) + .withReverseSoftLimitEnable(true) + .withForwardSoftLimitThreshold(Setpoint.Barge.target) + .withForwardSoftLimitEnable(true)); + + tryUntilOk(5, () -> leader.getConfigurator().apply(config)); + tryUntilOk(5, () -> follower.getConfigurator().apply(config)); + tryUntilOk(5, () -> follower.setControl(new Follower(kLeaderId, true))); + + leader.setPosition(0); + leader.setNeutralMode(NeutralModeValue.Brake); + follower.setPosition(0); + follower.setNeutralMode(NeutralModeValue.Brake); + + BaseStatusSignal.setUpdateFrequencyForAll(Hertz.of(250), followerPosition, followerVoltage); + BaseStatusSignal.setUpdateFrequencyForAll(Hertz.of(250), leaderSignals); + + BaseStatusSignal.waitForAll(1, leaderSignals); + BaseStatusSignal.waitForAll(1, followerPosition, followerVoltage); + } + + @Override + public void updateInputs(ElevatorIOInputs inputs) { + inputs.leaderConnected = BaseStatusSignal.waitForAll(0.005, leaderSignals).isOK(); + inputs.followerConnected = + BaseStatusSignal.waitForAll(0.005, followerPosition, followerVoltage).isOK(); + + inputs.leaderPosition = leaderPosition.getValue(); + inputs.followerPosition = followerPosition.getValue(); + inputs.height = ElevatorUtils.rotsToInches(inputs.leaderPosition); + inputs.velocity = velocity.getValue(); + inputs.acceleration = acceleration.getValue(); + inputs.leaderVoltage = leaderVoltage.getValue(); + inputs.followerVoltage = followerVoltage.getValue(); + inputs.torqueCurrent = torqueCurrent.getValue(); + inputs.statorCurrent = statorCurrent.getValue(); + inputs.supplyCurrent = supplyCurrent.getValue(); + + inputs.closedLoopError = closedLoopError.getValue(); + inputs.closedLoopReference = closedLoopReference.getValue(); + inputs.closedLoopRefSlope = closedLoopRefSlope.getValue(); + inputs.proportionalOutput = closedLoopProportional.getValue(); + inputs.derivativeOutput = closedLoopDerivative.getValue(); + inputs.feedforward = closedLoopFeedForward.getValue(); + inputs.closedLoopOutput = closedLoopOutput.getValue(); + } + + @Override + public void setTarget(Angle angle, boolean useTrapezoidal) { + ControlRequest req; + + if (useTrapezoidal) { + req = trapezoidal.withPosition(angle).withSlot(2); + } else { + req = exponential.withPosition(angle).withSlot(0); + } + + leader.setControl(req); + } + + @Override + public void stow() { + leader.setControl(exponential.withPosition(0).withSlot(1)); + } +} diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorUtils.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorUtils.java new file mode 100644 index 0000000..5230d85 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorUtils.java @@ -0,0 +1,23 @@ +package frc.robot.subsystems.elevator; + +import static edu.wpi.first.units.Units.*; +import static frc.robot.subsystems.elevator.ElevatorConstants.kSpoolCircumference; + +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.units.measure.Distance; +import edu.wpi.first.units.measure.LinearVelocity; + +public final class ElevatorUtils { + public static Distance rotsToInches(Angle rotations) { + return Inches.of(rotations.in(Rotations) * kSpoolCircumference.in(Inches)); + } + + public static Angle inchesToRotations(Distance inches) { + return Rotations.of(inches.in(Inches) / kSpoolCircumference.in(Inches)); + } + + public static AngularVelocity convertVelocity(LinearVelocity velocity) { + return RotationsPerSecond.of(velocity.in(InchesPerSecond) / kSpoolCircumference.in(Inches)); + } +} diff --git a/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIO.java b/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIO.java new file mode 100644 index 0000000..3ef9efc --- /dev/null +++ b/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIO.java @@ -0,0 +1,16 @@ +package frc.robot.subsystems.end_effector; + +import org.littletonrobotics.junction.AutoLog; + +public interface BeamBreakIO { + public default boolean isBroken() { + return false; + } + + public default void updateInputs(BeamBreakIOInputs inputs) {} + + @AutoLog + public static class BeamBreakIOInputs { + boolean isBroken = false; + } +} diff --git a/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIODIO.java b/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIODIO.java new file mode 100644 index 0000000..ef948c6 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIODIO.java @@ -0,0 +1,22 @@ +package frc.robot.subsystems.end_effector; + +import edu.wpi.first.wpilibj.DigitalInput; + +public class BeamBreakIODIO implements BeamBreakIO { + private final DigitalInput input; + + public BeamBreakIODIO(int channel) { + input = new DigitalInput(channel); + } + + @Override + public boolean isBroken() { + // for some reason, our sensors return false when they're broken?? + return !input.get(); + } + + @Override + public void updateInputs(BeamBreakIOInputs inputs) { + inputs.isBroken = isBroken(); + } +} diff --git a/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIOSupplierSim.java b/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIOSupplierSim.java new file mode 100644 index 0000000..f574870 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/end_effector/BeamBreakIOSupplierSim.java @@ -0,0 +1,16 @@ +package frc.robot.subsystems.end_effector; + +import java.util.function.BooleanSupplier; + +public class BeamBreakIOSupplierSim implements BeamBreakIO { + private final BooleanSupplier supplier; + + public BeamBreakIOSupplierSim(BooleanSupplier supplier) { + this.supplier = supplier; + } + + @Override + public void updateInputs(BeamBreakIOInputs inputs) { + inputs.isBroken = supplier.getAsBoolean(); + } +} diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java new file mode 100644 index 0000000..61464e1 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java @@ -0,0 +1,174 @@ +package frc.robot.subsystems.end_effector; + +import static edu.wpi.first.units.Units.Amps; +import static frc.robot.subsystems.end_effector.EndEffectorConstants.*; + +import com.ctre.phoenix6.configs.CurrentLimitsConfigs; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; +import edu.wpi.first.wpilibj2.command.ParallelRaceGroup; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import frc.robot.RobotSimState; +import frc.robot.util.io.talon.TalonFXIO; +import frc.robot.util.io.talon.TalonFXIOImpl; +import frc.robot.util.io.talon.TalonFXIOInputsAutoLogged; +import frc.robot.util.io.talon.TalonFXIOSimImpl; +import frc.robot.util.phoenix.PhoenixUtil; +import java.util.function.BooleanSupplier; +import org.littletonrobotics.junction.Logger; + +public class EndEffector extends SubsystemBase { + private final TalonFXIO motorIO; + private final TalonFXIOInputsAutoLogged motorInputs = new TalonFXIOInputsAutoLogged(); + private final BeamBreakIO entranceIO, exitIO; + private final BeamBreakIOInputsAutoLogged entranceInputs = new BeamBreakIOInputsAutoLogged(), + exitInputs = new BeamBreakIOInputsAutoLogged(); + private boolean coralInPosition, firstTime; + private final boolean jogDuringIntake; + + public EndEffector(TalonFXIO motor, BeamBreakIO entrance, BeamBreakIO exit, boolean jog) { + motorIO = motor; + entranceIO = entrance; + exitIO = exit; + + setDefaultCommand(teleIntake()); + jogDuringIntake = jog; + } + + public static EndEffector createReal() { + CurrentLimitsConfigs configs = + new CurrentLimitsConfigs() + .withStatorCurrentLimit(Amps.of(70)) + .withStatorCurrentLimitEnable(true) + .withSupplyCurrentLimit(Amps.of(120)) + .withSupplyCurrentLimitEnable(true); + + return new EndEffector( + new TalonFXIOImpl( + kMotorID, + kMotorBus, + config -> + PhoenixUtil.tryUntilOk( + 5, + () -> config.apply(configs), + "Could not apply end effector motor current limits")), + new BeamBreakIODIO(kEntranceBreakerID), + new BeamBreakIODIO(kExitBreakerID), + true); + } + + public static EndEffector createSim(RobotSimState state) { + return new EndEffector( + new TalonFXIOSimImpl(kMotorID, kMotorBus, true, kSystemMOI, 1), + new BeamBreakIOSupplierSim(state::hasCoral), + new BeamBreakIOSupplierSim(state::hasCoral), + false); + } + + private final void jogCoral() { + final boolean entrance = entranceInputs.isBroken; + final boolean exit = exitInputs.isBroken; + + if (jogDuringIntake) { + if (!entrance && !exit) { + motorIO.setDutyCycle(kIdleSpeed); + + coralInPosition = false; + firstTime = true; + } else if (entrance && exit) { + if (firstTime) { + motorIO.setDutyCycle(kIntakeSpeed / 2); + coralInPosition = false; + } else { + motorIO.stopMotor(); + coralInPosition = true; + } + } else if (entrance && !exit) { + motorIO.setDutyCycle(kIntakeSpeed); + + coralInPosition = false; + } else if (!entrance && exit) { + motorIO.setDutyCycle(-kDriveBackSpeed); + + coralInPosition = false; + firstTime = false; + } + } else { + if (entrance && exit) { + motorIO.stopMotor(); + } else { + motorIO.setDutyCycle(kIdleSpeed); + } + } + } + + @Override + public void periodic() { + motorIO.updateInputs(motorInputs); + entranceIO.updateInputs(entranceInputs); + exitIO.updateInputs(exitInputs); + + Logger.processInputs("EndEffector/Motor", motorInputs); + Logger.processInputs("EndEffector/EntranceSensor", entranceInputs); + Logger.processInputs("EndEffector/ExitSensor", exitInputs); + + SmartDashboard.putBoolean("Coral In Position", coralInPosition); + SmartDashboard.putBoolean("First Time", firstTime); + SmartDashboard.putBoolean("Entrance Detected", entranceInputs.isBroken); + SmartDashboard.putBoolean("Exit Detected", exitInputs.isBroken); + } + + public void resetState() { + motorIO.stopMotor(); + coralInPosition = false; + firstTime = true; + } + + public void onEnable() { + if (entranceIO.isBroken() && exitIO.isBroken()) { + firstTime = false; + coralInPosition = true; + } else resetState(); + } + + public Command teleIntake() { + return runOnce(this::jogCoral).andThen(Commands.waitSeconds(0.02)); + } + + public Command autoIntake(boolean withTimeDeadline) { + ParallelRaceGroup group = + new ParallelRaceGroup( + Commands.waitUntil(() -> !exitIO.isBroken()), + run(this::jogCoral).finallyDo(this::resetState)); + + if (withTimeDeadline) { + group.addCommands(Commands.waitSeconds(0.4)); + } + + return group; + } + + public Command teleScoreCoral(BooleanSupplier ejectFast) { + return run( + () -> { + motorIO.setDutyCycle(ejectFast.getAsBoolean() ? kFastEjectSpeed : kSlowEjectSpeed); + + firstTime = true; + coralInPosition = false; + }); + } + + public Command autoScoreCoral(BooleanSupplier elevatorIsAtHeight) { + return Commands.sequence( + Commands.waitUntil(elevatorIsAtHeight), + Commands.waitSeconds(0.1), + runOnce(() -> motorIO.setDutyCycle(kAutoEjectSpeed)), + Commands.race(Commands.waitSeconds(0.2), Commands.waitUntil(() -> !exitIO.isBroken())), + runOnce(this::resetState)); + } + + public Command scoreBarge() { + return runOnce(() -> motorIO.setDutyCycle(-kAlgaeBargeSpeed)).beforeStarting(this::resetState); + } +} diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java new file mode 100644 index 0000000..700b39b --- /dev/null +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java @@ -0,0 +1,18 @@ +package frc.robot.subsystems.end_effector; + +import com.ctre.phoenix6.CANBus; + +public final class EndEffectorConstants { + public static final int kMotorID = 20, kExitBreakerID = 0, kEntranceBreakerID = 1; + public static final CANBus kMotorBus = new CANBus("rio"); + public static final double kFastEjectSpeed = .9, + kAutoEjectSpeed = 1, + kSlowEjectSpeed = .3, + kAlgaeBargeSpeed = 1, + kIdleSpeed = .25, + kIntakeSpeed = 0.125, + kDriveBackSpeed = 0.1; + + // TODO: TUNE THIS VALUE (ASK MARK/BRENNAN) + public static final double kSystemMOI = 0.02; +} diff --git a/src/main/java/frc/robot/subsystems/vision/Vision.java b/src/main/java/frc/robot/subsystems/vision/Vision.java new file mode 100644 index 0000000..6fabfbb --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/Vision.java @@ -0,0 +1,186 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.vision; + +import static frc.robot.subsystems.vision.VisionConstants.*; + +import edu.wpi.first.math.Matrix; +import edu.wpi.first.math.VecBuilder; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Pose3d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.numbers.N1; +import edu.wpi.first.math.numbers.N3; +import edu.wpi.first.wpilibj.Alert; +import edu.wpi.first.wpilibj.Alert.AlertType; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import frc.robot.subsystems.vision.VisionIO.PoseObservationType; +import java.util.LinkedList; +import java.util.List; +import org.littletonrobotics.junction.Logger; + +public class Vision extends SubsystemBase { + private final VisionConsumer consumer; + private final VisionIO[] io; + private final VisionIOInputsAutoLogged[] inputs; + private final Alert[] disconnectedAlerts; + + public Vision(VisionConsumer consumer, VisionIO... io) { + this.consumer = consumer; + this.io = io; + + // Initialize inputs + this.inputs = new VisionIOInputsAutoLogged[io.length]; + for (int i = 0; i < inputs.length; i++) { + inputs[i] = new VisionIOInputsAutoLogged(); + } + + // Initialize disconnected alerts + this.disconnectedAlerts = new Alert[io.length]; + for (int i = 0; i < inputs.length; i++) { + disconnectedAlerts[i] = + new Alert( + "Vision camera " + Integer.toString(i) + " is disconnected.", AlertType.kWarning); + } + } + + /** + * Returns the X angle to the best target, which can be used for simple servoing with vision. + * + * @param cameraIndex The index of the camera to use. + */ + public Rotation2d getTargetX(int cameraIndex) { + return inputs[cameraIndex].latestTargetObservation.tx(); + } + + @Override + public void periodic() { + for (int i = 0; i < io.length; i++) { + io[i].updateInputs(inputs[i]); + Logger.processInputs("Vision/Camera" + Integer.toString(i), inputs[i]); + } + + // Initialize logging values + List allTagPoses = new LinkedList<>(); + List allRobotPoses = new LinkedList<>(); + List allRobotPosesAccepted = new LinkedList<>(); + List allRobotPosesRejected = new LinkedList<>(); + + // Loop over cameras + for (int cameraIndex = 0; cameraIndex < io.length; cameraIndex++) { + // Update disconnected alert + disconnectedAlerts[cameraIndex].set(!inputs[cameraIndex].connected); + + // Initialize logging values + List tagPoses = new LinkedList<>(); + List robotPoses = new LinkedList<>(); + List robotPosesAccepted = new LinkedList<>(); + List robotPosesRejected = new LinkedList<>(); + + // Add tag poses + for (int tagId : inputs[cameraIndex].tagIds) { + var tagPose = aprilTagLayout.getTagPose(tagId); + if (tagPose.isPresent()) { + tagPoses.add(tagPose.get()); + } + } + + // Loop over pose observations + for (var observation : inputs[cameraIndex].poseObservations) { + // Check whether to reject pose + boolean rejectPose = + observation.tagCount() == 0 // Must have at least one tag + || (observation.tagCount() == 1 + && observation.ambiguity() > maxAmbiguity) // Cannot be high ambiguity + || Math.abs(observation.pose().getZ()) + > maxZError // Must have realistic Z coordinate + + // Must be within the field boundaries + || observation.pose().getX() < 0.0 + || observation.pose().getX() > aprilTagLayout.getFieldLength() + || observation.pose().getY() < 0.0 + || observation.pose().getY() > aprilTagLayout.getFieldWidth(); + + // Add pose to log + robotPoses.add(observation.pose()); + if (rejectPose) { + robotPosesRejected.add(observation.pose()); + } else { + robotPosesAccepted.add(observation.pose()); + } + + // Skip if rejected + if (rejectPose) { + continue; + } + + // Calculate standard deviations + double stdDevFactor = + (Math.pow(observation.averageTagDistance(), 2.0)) / observation.tagCount(); + double linearStdDev = linearStdDevBaseline * stdDevFactor; + double angularStdDev = angularStdDevBaseline * stdDevFactor; + if (observation.type() == PoseObservationType.MEGATAG_2) { + linearStdDev *= linearStdDevMegatag2Factor; + angularStdDev *= angularStdDevMegatag2Factor; + } + if (cameraIndex < cameraStdDevFactors.length) { + linearStdDev *= cameraStdDevFactors[cameraIndex]; + angularStdDev *= cameraStdDevFactors[cameraIndex]; + } + + SmartDashboard.putNumber("Camera " + cameraIndex + " Pose X", observation.pose().getX()); + SmartDashboard.putNumber("Camera " + cameraIndex + " Pose Y", observation.pose().getY()); + + // Send vision observation + consumer.accept( + observation.pose().toPose2d(), + observation.timestamp(), + VecBuilder.fill(linearStdDev, linearStdDev, angularStdDev)); + } + + // Log camera datadata + Logger.recordOutput( + "Vision/Camera" + Integer.toString(cameraIndex) + "/TagPoses", + tagPoses.toArray(new Pose3d[tagPoses.size()])); + Logger.recordOutput( + "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPoses", + robotPoses.toArray(new Pose3d[robotPoses.size()])); + Logger.recordOutput( + "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPosesAccepted", + robotPosesAccepted.toArray(new Pose3d[robotPosesAccepted.size()])); + Logger.recordOutput( + "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPosesRejected", + robotPosesRejected.toArray(new Pose3d[robotPosesRejected.size()])); + allTagPoses.addAll(tagPoses); + allRobotPoses.addAll(robotPoses); + allRobotPosesAccepted.addAll(robotPosesAccepted); + allRobotPosesRejected.addAll(robotPosesRejected); + } + + // Log summary data + Logger.recordOutput( + "Vision/Summary/TagPoses", allTagPoses.toArray(new Pose3d[allTagPoses.size()])); + Logger.recordOutput( + "Vision/Summary/RobotPoses", allRobotPoses.toArray(new Pose3d[allRobotPoses.size()])); + Logger.recordOutput( + "Vision/Summary/RobotPosesAccepted", + allRobotPosesAccepted.toArray(new Pose3d[allRobotPosesAccepted.size()])); + Logger.recordOutput( + "Vision/Summary/RobotPosesRejected", + allRobotPosesRejected.toArray(new Pose3d[allRobotPosesRejected.size()])); + } + + @FunctionalInterface + public static interface VisionConsumer { + public void accept( + Pose2d visionRobotPoseMeters, + double timestampSeconds, + Matrix visionMeasurementStdDevs); + } +} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java new file mode 100644 index 0000000..458f346 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java @@ -0,0 +1,66 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.vision; + +import edu.wpi.first.apriltag.AprilTagFieldLayout; +import edu.wpi.first.apriltag.AprilTagFields; +import edu.wpi.first.math.geometry.Rotation3d; +import edu.wpi.first.math.geometry.Transform3d; +import edu.wpi.first.math.geometry.Translation3d; +import edu.wpi.first.math.util.Units; + +public class VisionConstants { + // AprilTag layout + public static AprilTagFieldLayout aprilTagLayout = + AprilTagFieldLayout.loadField(AprilTagFields.kDefaultField); + + // Camera names, must match names configured on coprocessor + public static final String camera0Name = "Left"; + public static final String camera1Name = "Right"; + + // Robot to camera transforms + // (Not used by Limelight, configure in web UI instead) + public static final Transform3d robotToCamera0 = + new Transform3d( + new Translation3d( + Units.inchesToMeters(11.58), + Units.inchesToMeters(11.189), + Units.inchesToMeters(8.25)), + new Rotation3d(0, Units.degreesToRadians(-15), Units.degreesToRadians(-20))); + public static final Transform3d robotToCamera1 = + new Transform3d( + new Translation3d( + Units.inchesToMeters(11.58), + Units.inchesToMeters(-11.189), + Units.inchesToMeters(8.25)), + new Rotation3d(0, Units.degreesToRadians(-15.0), Units.degreesToRadians(15.0))); + + // Basic filtering thresholds + public static final double maxAmbiguity = 0.3; + public static final double maxZError = 0.75; + + // Standard deviation baselines, for 1 meter distance and 1 tag + // (Adjusted automatically based on distance and # of tags) + public static final double linearStdDevBaseline = 0.02; // Meters + public static final double angularStdDevBaseline = 0.2; // Radians + + // Standard deviation multipliers for each camera + // (Adjust to trust some cameras more than others) + public static final double[] cameraStdDevFactors = + new double[] { + 1.0, // Camera 0 + 1.0 // Camera 1 + }; + + // Multipliers to apply for MegaTag 2 observations + public static final double linearStdDevMegatag2Factor = 0.5; // More stable than full 3D solve + public static final double angularStdDevMegatag2Factor = + Double.POSITIVE_INFINITY; // No rotation data available + + public static final int numCameras = 2; +} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIO.java b/src/main/java/frc/robot/subsystems/vision/VisionIO.java new file mode 100644 index 0000000..e00368d --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/VisionIO.java @@ -0,0 +1,43 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.vision; + +import edu.wpi.first.math.geometry.Pose3d; +import edu.wpi.first.math.geometry.Rotation2d; +import org.littletonrobotics.junction.AutoLog; + +public interface VisionIO { + @AutoLog + public static class VisionIOInputs { + public boolean connected = false; + public TargetObservation latestTargetObservation = + new TargetObservation(new Rotation2d(), new Rotation2d()); + public PoseObservation[] poseObservations = new PoseObservation[0]; + public int[] tagIds = new int[0]; + } + + /** Represents the angle to a simple target, not used for pose estimation. */ + public static record TargetObservation(Rotation2d tx, Rotation2d ty) {} + + /** Represents a robot pose sample used for pose estimation. */ + public static record PoseObservation( + double timestamp, + Pose3d pose, + double ambiguity, + int tagCount, + double averageTagDistance, + PoseObservationType type) {} + + public static enum PoseObservationType { + MEGATAG_1, + MEGATAG_2, + PHOTONVISION + } + + public default void updateInputs(VisionIOInputs inputs) {} +} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java new file mode 100644 index 0000000..2a65682 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java @@ -0,0 +1,125 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.vision; + +import static frc.robot.subsystems.vision.VisionConstants.*; + +import edu.wpi.first.math.geometry.Pose3d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.geometry.Transform3d; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import org.photonvision.PhotonCamera; + +/** IO implementation for real PhotonVision hardware. */ +public class VisionIOPhotonVision implements VisionIO { + protected final PhotonCamera camera; + protected final Transform3d robotToCamera; + + /** + * Creates a new VisionIOPhotonVision. + * + * @param name The configured name of the camera. + * @param rotationSupplier The 3D position of the camera relative to the robot. + */ + public VisionIOPhotonVision(String name, Transform3d robotToCamera) { + camera = new PhotonCamera(name); + this.robotToCamera = robotToCamera; + } + + @Override + public void updateInputs(VisionIOInputs inputs) { + inputs.connected = camera.isConnected(); + + // Read new camera observations + Set tagIds = new HashSet<>(); + List poseObservations = new LinkedList<>(); + for (var result : camera.getAllUnreadResults()) { + // Update latest target observation + if (result.hasTargets()) { + inputs.latestTargetObservation = + new TargetObservation( + Rotation2d.fromDegrees(result.getBestTarget().getYaw()), + Rotation2d.fromDegrees(result.getBestTarget().getPitch())); + } else { + inputs.latestTargetObservation = new TargetObservation(new Rotation2d(), new Rotation2d()); + } + + // Add pose observation + if (result.multitagResult.isPresent()) { // Multitag result + var multitagResult = result.multitagResult.get(); + + // Calculate robot pose + Transform3d fieldToCamera = multitagResult.estimatedPose.best; + Transform3d fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); + Pose3d robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); + + // Calculate average tag distance + double totalTagDistance = 0.0; + for (var target : result.targets) { + totalTagDistance += target.bestCameraToTarget.getTranslation().getNorm(); + } + + // Add tag IDs + tagIds.addAll(multitagResult.fiducialIDsUsed); + + // Add observation + poseObservations.add( + new PoseObservation( + result.getTimestampSeconds(), // Timestamp + robotPose, // 3D pose estimate + multitagResult.estimatedPose.ambiguity, // Ambiguity + multitagResult.fiducialIDsUsed.size(), // Tag count + totalTagDistance / result.targets.size(), // Average tag distance + PoseObservationType.PHOTONVISION)); // Observation type + + } else if (!result.targets.isEmpty()) { // Single tag result + var target = result.targets.get(0); + + // Calculate robot pose + var tagPose = aprilTagLayout.getTagPose(target.fiducialId); + if (tagPose.isPresent()) { + Transform3d fieldToTarget = + new Transform3d(tagPose.get().getTranslation(), tagPose.get().getRotation()); + Transform3d cameraToTarget = target.bestCameraToTarget; + Transform3d fieldToCamera = fieldToTarget.plus(cameraToTarget.inverse()); + Transform3d fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); + Pose3d robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); + + // Add tag ID + tagIds.add((short) target.fiducialId); + + // Add observation + poseObservations.add( + new PoseObservation( + result.getTimestampSeconds(), // Timestamp + robotPose, // 3D pose estimate + target.poseAmbiguity, // Ambiguity + 1, // Tag count + cameraToTarget.getTranslation().getNorm(), // Average tag distance + PoseObservationType.PHOTONVISION)); // Observation type + } + } + } + + // Save pose observations to inputs object + inputs.poseObservations = new PoseObservation[poseObservations.size()]; + for (int i = 0; i < poseObservations.size(); i++) { + inputs.poseObservations[i] = poseObservations.get(i); + } + + // Save tag IDs to inputs objects + inputs.tagIds = new int[tagIds.size()]; + int i = 0; + for (int id : tagIds) { + inputs.tagIds[i++] = id; + } + } +} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java new file mode 100644 index 0000000..e1ef86c --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java @@ -0,0 +1,54 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.vision; + +import static frc.robot.subsystems.vision.VisionConstants.aprilTagLayout; + +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Transform3d; +import java.util.function.Supplier; +import org.photonvision.simulation.PhotonCameraSim; +import org.photonvision.simulation.SimCameraProperties; +import org.photonvision.simulation.VisionSystemSim; + +/** IO implementation for physics sim using PhotonVision simulator. */ +public class VisionIOPhotonVisionSim extends VisionIOPhotonVision { + private static VisionSystemSim visionSim; + + private final Supplier poseSupplier; + private final PhotonCameraSim cameraSim; + + /** + * Creates a new VisionIOPhotonVisionSim. + * + * @param name The name of the camera. + * @param poseSupplier Supplier for the robot pose to use in simulation. + */ + public VisionIOPhotonVisionSim( + String name, Transform3d robotToCamera, Supplier poseSupplier) { + super(name, robotToCamera); + this.poseSupplier = poseSupplier; + + // Initialize vision sim + if (visionSim == null) { + visionSim = new VisionSystemSim("main"); + visionSim.addAprilTags(aprilTagLayout); + } + + // Add sim camera + var cameraProperties = new SimCameraProperties(); + cameraSim = new PhotonCameraSim(camera, cameraProperties, aprilTagLayout); + visionSim.addCamera(cameraSim, robotToCamera); + } + + @Override + public void updateInputs(VisionIOInputs inputs) { + visionSim.update(poseSupplier.get()); + super.updateInputs(inputs); + } +} diff --git a/2025-Robot-Code/src/main/java/frc/robot/util/AllianceFlipUtil.java b/src/main/java/frc/robot/util/AllianceFlipUtil.java similarity index 94% rename from 2025-Robot-Code/src/main/java/frc/robot/util/AllianceFlipUtil.java rename to src/main/java/frc/robot/util/AllianceFlipUtil.java index 012c96d..928c8f5 100644 --- a/2025-Robot-Code/src/main/java/frc/robot/util/AllianceFlipUtil.java +++ b/src/main/java/frc/robot/util/AllianceFlipUtil.java @@ -7,7 +7,6 @@ import edu.wpi.first.wpilibj.DriverStation; import frc.robot.FieldConstants; - public class AllianceFlipUtil { public static double applyX(double x) { @@ -35,15 +34,20 @@ public static Pose2d apply(Pose2d pose) { public static double applyXUnchecked(double x) { return FieldConstants.fieldLength - x; } + public static double applyYUnchecked(double y) { return FieldConstants.fieldWidth - y; } + public static Translation2d applyUnchecked(Translation2d translation) { - return new Translation2d(applyXUnchecked(translation.getX()), applyYUnchecked(translation.getY())); + return new Translation2d( + applyXUnchecked(translation.getX()), applyYUnchecked(translation.getY())); } + public static Rotation2d applyUnchecked(Rotation2d rotation) { return rotation.rotateBy(Rotation2d.kPi); } + public static Pose2d applyUnchecked(Pose2d pose) { return new Pose2d(applyUnchecked(pose.getTranslation()), applyUnchecked(pose.getRotation())); } @@ -65,4 +69,4 @@ public static boolean shouldFlip() { return DriverStation.getAlliance().isPresent() && DriverStation.getAlliance().get() == DriverStation.Alliance.Red; } -} \ No newline at end of file +} diff --git a/src/main/java/frc/robot/util/LocalADStarAK.java b/src/main/java/frc/robot/util/LocalADStarAK.java new file mode 100644 index 0000000..d6e9a41 --- /dev/null +++ b/src/main/java/frc/robot/util/LocalADStarAK.java @@ -0,0 +1,160 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.util; + +import com.pathplanner.lib.path.GoalEndState; +import com.pathplanner.lib.path.PathConstraints; +import com.pathplanner.lib.path.PathPlannerPath; +import com.pathplanner.lib.path.PathPoint; +import com.pathplanner.lib.pathfinding.LocalADStar; +import com.pathplanner.lib.pathfinding.Pathfinder; +import edu.wpi.first.math.Pair; +import edu.wpi.first.math.geometry.Translation2d; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.littletonrobotics.junction.LogTable; +import org.littletonrobotics.junction.Logger; +import org.littletonrobotics.junction.inputs.LoggableInputs; + +// NOTE: This file is available at +// https://gist.github.com/mjansen4857/a8024b55eb427184dbd10ae8923bd57d + +public class LocalADStarAK implements Pathfinder { + private final ADStarIO io = new ADStarIO(); + + /** + * Get if a new path has been calculated since the last time a path was retrieved + * + * @return True if a new path is available + */ + @Override + public boolean isNewPathAvailable() { + if (!Logger.hasReplaySource()) { + io.updateIsNewPathAvailable(); + } + + Logger.processInputs("LocalADStarAK", io); + + return io.isNewPathAvailable; + } + + /** + * Get the most recently calculated path + * + * @param constraints The path constraints to use when creating the path + * @param goalEndState The goal end state to use when creating the path + * @return The PathPlannerPath created from the points calculated by the pathfinder + */ + @Override + public PathPlannerPath getCurrentPath(PathConstraints constraints, GoalEndState goalEndState) { + if (!Logger.hasReplaySource()) { + io.updateCurrentPathPoints(constraints, goalEndState); + } + + Logger.processInputs("LocalADStarAK", io); + + if (io.currentPathPoints.isEmpty()) { + return null; + } + + return PathPlannerPath.fromPathPoints(io.currentPathPoints, constraints, goalEndState); + } + + /** + * Set the start position to pathfind from + * + * @param startPosition Start position on the field. If this is within an obstacle it will be + * moved to the nearest non-obstacle node. + */ + @Override + public void setStartPosition(Translation2d startPosition) { + if (!Logger.hasReplaySource()) { + io.adStar.setStartPosition(startPosition); + } + } + + /** + * Set the goal position to pathfind to + * + * @param goalPosition Goal position on the field. f this is within an obstacle it will be moved + * to the nearest non-obstacle node. + */ + @Override + public void setGoalPosition(Translation2d goalPosition) { + if (!Logger.hasReplaySource()) { + io.adStar.setGoalPosition(goalPosition); + } + } + + /** + * Set the dynamic obstacles that should be avoided while pathfinding. + * + * @param obs A List of Translation2d pairs representing obstacles. Each Translation2d represents + * opposite corners of a bounding box. + * @param currentRobotPos The current position of the robot. This is needed to change the start + * position of the path to properly avoid obstacles + */ + @Override + public void setDynamicObstacles( + List> obs, Translation2d currentRobotPos) { + if (!Logger.hasReplaySource()) { + io.adStar.setDynamicObstacles(obs, currentRobotPos); + } + } + + private static class ADStarIO implements LoggableInputs { + public LocalADStar adStar = new LocalADStar(); + public boolean isNewPathAvailable = false; + public List currentPathPoints = Collections.emptyList(); + + @Override + public void toLog(LogTable table) { + table.put("IsNewPathAvailable", isNewPathAvailable); + + double[] pointsLogged = new double[currentPathPoints.size() * 2]; + int idx = 0; + for (PathPoint point : currentPathPoints) { + pointsLogged[idx] = point.position.getX(); + pointsLogged[idx + 1] = point.position.getY(); + idx += 2; + } + + table.put("CurrentPathPoints", pointsLogged); + } + + @Override + public void fromLog(LogTable table) { + isNewPathAvailable = table.get("IsNewPathAvailable", false); + + double[] pointsLogged = table.get("CurrentPathPoints", new double[0]); + + List pathPoints = new ArrayList<>(); + for (int i = 0; i < pointsLogged.length; i += 2) { + pathPoints.add( + new PathPoint(new Translation2d(pointsLogged[i], pointsLogged[i + 1]), null)); + } + + currentPathPoints = pathPoints; + } + + public void updateIsNewPathAvailable() { + isNewPathAvailable = adStar.isNewPathAvailable(); + } + + public void updateCurrentPathPoints(PathConstraints constraints, GoalEndState goalEndState) { + PathPlannerPath currentPath = adStar.getCurrentPath(constraints, goalEndState); + + if (currentPath != null) { + currentPathPoints = currentPath.getAllPathPoints(); + } else { + currentPathPoints = Collections.emptyList(); + } + } + } +} diff --git a/src/main/java/frc/robot/util/PositionUtils.java b/src/main/java/frc/robot/util/PositionUtils.java new file mode 100644 index 0000000..0a79d93 --- /dev/null +++ b/src/main/java/frc/robot/util/PositionUtils.java @@ -0,0 +1,14 @@ +package frc.robot.util; + +import edu.wpi.first.math.geometry.Pose2d; +import frc.robot.subsystems.drive.Drive; + +public final class PositionUtils { + public static double getDistance(Pose2d from, Pose2d to) { + return from.getTranslation().getDistance(to.getTranslation()); + } + + public static double getDistance(Drive drive, Pose2d to) { + return getDistance(drive.getPose(), to); + } +} diff --git a/src/main/java/frc/robot/util/io/talon/TalonFXIO.java b/src/main/java/frc/robot/util/io/talon/TalonFXIO.java new file mode 100644 index 0000000..d051158 --- /dev/null +++ b/src/main/java/frc/robot/util/io/talon/TalonFXIO.java @@ -0,0 +1,34 @@ +package frc.robot.util.io.talon; + +import static edu.wpi.first.units.Units.*; + +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularAcceleration; +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; +import edu.wpi.first.units.measure.Voltage; +import org.littletonrobotics.junction.AutoLog; + +public interface TalonFXIO { + public default void setDutyCycle(double output) {} + + public default void setPosition(Angle position) {} + + public default void stopMotor() {} + + public default void updateInputs(TalonFXIOInputs inputs) {} + + @AutoLog + public static class TalonFXIOInputs { + public boolean connected = false; + public Angle position = Rotations.of(0); + public AngularVelocity velocity = RotationsPerSecond.of(0); + public AngularAcceleration acceleration = RotationsPerSecondPerSecond.of(0); + public Voltage appliedVoltage = Volts.of(0); + public Current supplyCurrent = Amps.of(0), + statorCurrent = Amps.of(0), + torqueCurrent = Amps.of(0); + public Temperature temperature = Celsius.of(0); + } +} diff --git a/src/main/java/frc/robot/util/io/talon/TalonFXIOImpl.java b/src/main/java/frc/robot/util/io/talon/TalonFXIOImpl.java new file mode 100644 index 0000000..e6fb4d3 --- /dev/null +++ b/src/main/java/frc/robot/util/io/talon/TalonFXIOImpl.java @@ -0,0 +1,103 @@ +package frc.robot.util.io.talon; + +import com.ctre.phoenix6.BaseStatusSignal; +import com.ctre.phoenix6.CANBus; +import com.ctre.phoenix6.StatusCode; +import com.ctre.phoenix6.StatusSignal; +import com.ctre.phoenix6.configs.TalonFXConfigurator; +import com.ctre.phoenix6.controls.DutyCycleOut; +import com.ctre.phoenix6.controls.PositionTorqueCurrentFOC; +import com.ctre.phoenix6.hardware.TalonFX; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularAcceleration; +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; +import edu.wpi.first.units.measure.Voltage; +import java.util.function.Consumer; + +public class TalonFXIOImpl implements TalonFXIO { + protected final TalonFX talon; + private final DutyCycleOut dutyCycleOut = new DutyCycleOut(0).withEnableFOC(true); + private final PositionTorqueCurrentFOC positionControl = new PositionTorqueCurrentFOC(0); + private final CANBus canBus; + + private final StatusSignal position; + private final StatusSignal velocity; + private final StatusSignal acceleration; + private final StatusSignal voltage; + private final StatusSignal supplyCurrent, statorCurrent, torqueCurrent; + private final StatusSignal temperature; + private final StatusSignal pidSlot; + + private final BaseStatusSignal[] signals; + + public TalonFXIOImpl(int port, CANBus bus) { + talon = new TalonFX(port, bus); + canBus = bus; + + position = talon.getPosition(); + velocity = talon.getVelocity(); + acceleration = talon.getAcceleration(); + voltage = talon.getMotorVoltage(); + supplyCurrent = talon.getSupplyCurrent(); + statorCurrent = talon.getStatorCurrent(); + torqueCurrent = talon.getTorqueCurrent(); + temperature = talon.getDeviceTemp(); + pidSlot = talon.getClosedLoopSlot(); + + signals = + new BaseStatusSignal[] { + position, + velocity, + acceleration, + voltage, + supplyCurrent, + statorCurrent, + torqueCurrent, + temperature, + pidSlot + }; + } + + public TalonFXIOImpl(int port, CANBus bus, Consumer config) { + this(port, bus); + + config.accept(talon.getConfigurator()); + } + + @Override + public void stopMotor() { + talon.stopMotor(); + } + + @Override + public void setDutyCycle(double output) { + talon.setControl(dutyCycleOut.withOutput(output)); + } + + @Override + public void setPosition(Angle position) { + talon.setControl(positionControl.withPosition(position)); + } + + @Override + public void updateInputs(TalonFXIOInputs inputs) { + StatusCode result; + if (canBus.isNetworkFD()) { + result = BaseStatusSignal.waitForAll(0.005, signals); + } else { + result = BaseStatusSignal.refreshAll(signals); + } + + inputs.connected = result.isOK(); + inputs.position = position.getValue(); + inputs.velocity = velocity.getValue(); + inputs.acceleration = acceleration.getValue(); + inputs.appliedVoltage = voltage.getValue(); + inputs.supplyCurrent = supplyCurrent.getValue(); + inputs.statorCurrent = statorCurrent.getValue(); + inputs.torqueCurrent = torqueCurrent.getValue(); + inputs.temperature = temperature.getValue(); + } +} diff --git a/src/main/java/frc/robot/util/io/talon/TalonFXIOInputs.java b/src/main/java/frc/robot/util/io/talon/TalonFXIOInputs.java new file mode 100644 index 0000000..b49d79b --- /dev/null +++ b/src/main/java/frc/robot/util/io/talon/TalonFXIOInputs.java @@ -0,0 +1,25 @@ +package frc.robot.util.io.talon; + +import static edu.wpi.first.units.Units.Amps; +import static edu.wpi.first.units.Units.Celsius; +import static edu.wpi.first.units.Units.Rotations; +import static edu.wpi.first.units.Units.RotationsPerSecond; +import static edu.wpi.first.units.Units.RotationsPerSecondPerSecond; +import static edu.wpi.first.units.Units.Volts; + +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularAcceleration; +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.Temperature; +import edu.wpi.first.units.measure.Voltage; + +public class TalonFXIOInputs { + public boolean connected = false; + public Angle position = Rotations.of(0); + public AngularVelocity velocity = RotationsPerSecond.of(0); + public AngularAcceleration acceleration = RotationsPerSecondPerSecond.of(0); + public Voltage appliedVoltage = Volts.of(0); + public Current supplyCurrent = Amps.of(0), torqueCurrent = Amps.of(0); + public Temperature temp = Celsius.of(0); +} diff --git a/src/main/java/frc/robot/util/io/talon/TalonFXIOSimImpl.java b/src/main/java/frc/robot/util/io/talon/TalonFXIOSimImpl.java new file mode 100644 index 0000000..97938a0 --- /dev/null +++ b/src/main/java/frc/robot/util/io/talon/TalonFXIOSimImpl.java @@ -0,0 +1,71 @@ +package frc.robot.util.io.talon; + +import com.ctre.phoenix6.CANBus; +import com.ctre.phoenix6.Utils; +import com.ctre.phoenix6.configs.TalonFXConfigurator; +import com.ctre.phoenix6.sim.TalonFXSimState; +import edu.wpi.first.math.system.plant.DCMotor; +import edu.wpi.first.math.system.plant.LinearSystemId; +import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.RobotController; +import edu.wpi.first.wpilibj.Timer; +import edu.wpi.first.wpilibj.simulation.DCMotorSim; +import java.util.function.Consumer; + +public final class TalonFXIOSimImpl extends TalonFXIOImpl { + private final DCMotorSim physicsSim; + private double lastTimestamp = Timer.getTimestamp(); + private final TalonFXSimState simState; + + public TalonFXIOSimImpl(int port, CANBus bus, boolean enableFOC, double moi, double reduction) { + super(port, bus); + simState = talon.getSimState(); + + if (!Utils.isSimulation()) { + DriverStation.reportError("Attempting to create TalonFX sim on non-sim context", true); + } + + DCMotor motor = + (enableFOC ? DCMotor.getKrakenX60(1) : DCMotor.getKrakenX60Foc(1)).withReduction(reduction); + + physicsSim = new DCMotorSim(LinearSystemId.createDCMotorSystem(motor, moi, reduction), motor); + } + + public TalonFXIOSimImpl( + int port, + CANBus bus, + boolean enableFOC, + Consumer config, + double moi, + double reduction) { + super(port, bus, config); + simState = talon.getSimState(); + + if (!Utils.isSimulation()) { + DriverStation.reportError("Attempting to create TalonFX sim on non-sim context", true); + } + + DCMotor motor = + (enableFOC ? DCMotor.getKrakenX60(1) : DCMotor.getKrakenX60Foc(1)).withReduction(reduction); + + physicsSim = new DCMotorSim(LinearSystemId.createDCMotorSystem(motor, moi, reduction), motor); + } + + @Override + public void updateInputs(TalonFXIOInputs inputs) { + simState.setSupplyVoltage(RobotController.getBatteryVoltage()); + double appliedVoltage = simState.getMotorVoltage(); + physicsSim.setInputVoltage(appliedVoltage); + + var newTimestamp = Timer.getTimestamp(); + physicsSim.update(newTimestamp - lastTimestamp); + lastTimestamp = newTimestamp; + + simState.setRawRotorPosition(physicsSim.getAngularPosition()); + simState.setRotorVelocity(physicsSim.getAngularVelocity()); + simState.setRotorAcceleration(physicsSim.getAngularAcceleration()); + + // use the updates StatusSignals after running the physics sim + super.updateInputs(inputs); + } +} diff --git a/src/main/java/frc/robot/util/phoenix/PhoenixUtil.java b/src/main/java/frc/robot/util/phoenix/PhoenixUtil.java new file mode 100644 index 0000000..8f5dd53 --- /dev/null +++ b/src/main/java/frc/robot/util/phoenix/PhoenixUtil.java @@ -0,0 +1,33 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.util.phoenix; + +import com.ctre.phoenix6.StatusCode; +import edu.wpi.first.wpilibj.DriverStation; +import java.util.function.Supplier; + +public class PhoenixUtil { + /** Attempts to run the command until no error is produced. */ + public static void tryUntilOk(int maxAttempts, Supplier command, String message) { + StatusCode error = StatusCode.StatusCodeNotInitialized; + + for (int i = 0; i < maxAttempts; i++) { + error = command.get(); + if (error.isOK()) return; + } + + DriverStation.reportError(message + error.getDescription(), false); + } + + public static void tryUntilOk(int maxAttempts, Supplier command) { + for (int i = 0; i < maxAttempts; i++) { + var status = command.get(); + if (status.isOK()) break; + } + } +} diff --git a/tuner-swerve-project.json b/tuner-swerve-project.json new file mode 100644 index 0000000..38e60f6 --- /dev/null +++ b/tuner-swerve-project.json @@ -0,0 +1,244 @@ +{ + "Version": "1.0.0.0", + "LastState": 11, + "Modules": [ + { + "ModuleName": "Front Left", + "ModuleId": 0, + "Encoder": { + "Id": 0, + "Name": "Front Left Pod", + "Model": "CANCoder", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": null, + "IsStandaloneFx": false + }, + "SteerMotor": { + "Id": 1, + "Name": "FL Steer", + "Model": "Talon FX vers. C", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": { + "Name": "WCP Kraken x60", + "FreeSpeedRps": 96.7, + "SlipCurrentLimit": 120, + "StatorCurrentLimit": 60 + }, + "IsStandaloneFx": false + }, + "DriveMotor": { + "Id": 0, + "Name": "FL Drive", + "Model": "Talon FX vers. C", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": { + "Name": "WCP Kraken x60", + "FreeSpeedRps": 96.7, + "SlipCurrentLimit": 120, + "StatorCurrentLimit": 60 + }, + "IsStandaloneFx": false + }, + "IsEncoderInverted": false, + "IsSteerInverted": true, + "SelectedEncoderType": "CANcoder", + "EncoderOffset": 0.49609375, + "DriveMotorSelectionState": 1, + "SteerMotorSelectionState": 1, + "SteerEncoderSelectionState": 1, + "IsModuleValidationComplete": true, + "ValidatedSteerId": 1, + "ValidatedDriveId": 0, + "ValidatedEncoderId": 0 + }, + { + "ModuleName": "Front Right", + "ModuleId": 1, + "Encoder": { + "Id": 2, + "Name": "Front Right Pod", + "Model": "CANCoder", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": null, + "IsStandaloneFx": false + }, + "SteerMotor": { + "Id": 5, + "Name": "FR Steer", + "Model": "Talon FX vers. C", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": { + "Name": "WCP Kraken x60", + "FreeSpeedRps": 96.7, + "SlipCurrentLimit": 120, + "StatorCurrentLimit": 60 + }, + "IsStandaloneFx": false + }, + "DriveMotor": { + "Id": 4, + "Name": "FR Drive", + "Model": "Talon FX vers. C", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": { + "Name": "WCP Kraken x60", + "FreeSpeedRps": 96.7, + "SlipCurrentLimit": 120, + "StatorCurrentLimit": 60 + }, + "IsStandaloneFx": false + }, + "IsEncoderInverted": false, + "IsSteerInverted": true, + "SelectedEncoderType": "CANcoder", + "EncoderOffset": 0.26904296875, + "DriveMotorSelectionState": 1, + "SteerMotorSelectionState": 1, + "SteerEncoderSelectionState": 1, + "IsModuleValidationComplete": true, + "ValidatedSteerId": 5, + "ValidatedDriveId": 4, + "ValidatedEncoderId": 2 + }, + { + "ModuleName": "Back Left", + "ModuleId": 2, + "Encoder": { + "Id": 1, + "Name": "Back Left Pod", + "Model": "CANCoder", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": null, + "IsStandaloneFx": false + }, + "SteerMotor": { + "Id": 3, + "Name": "BL Steer", + "Model": "Talon FX vers. C", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": { + "Name": "WCP Kraken x60", + "FreeSpeedRps": 96.7, + "SlipCurrentLimit": 120, + "StatorCurrentLimit": 60 + }, + "IsStandaloneFx": false + }, + "DriveMotor": { + "Id": 2, + "Name": "BL Drive", + "Model": "Talon FX vers. C", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": { + "Name": "WCP Kraken x60", + "FreeSpeedRps": 96.7, + "SlipCurrentLimit": 120, + "StatorCurrentLimit": 60 + }, + "IsStandaloneFx": false + }, + "IsEncoderInverted": false, + "IsSteerInverted": true, + "SelectedEncoderType": "CANcoder", + "EncoderOffset": 0.34912109375, + "DriveMotorSelectionState": 1, + "SteerMotorSelectionState": 1, + "SteerEncoderSelectionState": 1, + "IsModuleValidationComplete": true, + "ValidatedSteerId": 3, + "ValidatedDriveId": 2, + "ValidatedEncoderId": 1 + }, + { + "ModuleName": "Back Right", + "ModuleId": 3, + "Encoder": { + "Id": 4, + "Name": "Back Right Pod", + "Model": "CANCoder", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": null, + "IsStandaloneFx": false + }, + "SteerMotor": { + "Id": 7, + "Name": "BR Steer", + "Model": "Talon FX vers. C", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": { + "Name": "WCP Kraken x60", + "FreeSpeedRps": 96.7, + "SlipCurrentLimit": 120, + "StatorCurrentLimit": 60 + }, + "IsStandaloneFx": false + }, + "DriveMotor": { + "Id": 6, + "Name": "BR Drive", + "Model": "Talon FX vers. C", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": { + "Name": "WCP Kraken x60", + "FreeSpeedRps": 96.7, + "SlipCurrentLimit": 120, + "StatorCurrentLimit": 60 + }, + "IsStandaloneFx": false + }, + "IsEncoderInverted": false, + "IsSteerInverted": true, + "SelectedEncoderType": "CANcoder", + "EncoderOffset": 0.38232421875, + "DriveMotorSelectionState": 1, + "SteerMotorSelectionState": 1, + "SteerEncoderSelectionState": 1, + "IsModuleValidationComplete": true, + "ValidatedSteerId": 7, + "ValidatedDriveId": 6, + "ValidatedEncoderId": 4 + } + ], + "SwerveOptions": { + "kSpeedAt12Volts": 4.731460295787658, + "Gyro": { + "Id": 0, + "Name": "Pigeon 2 vers. S (Device ID 0)", + "Model": "Pigeon 2 vers. S", + "CANbus": "95420E7250374E5320202047101110FF", + "CANbusFriendly": "canivore0", + "SelectedMotorType": null, + "IsStandaloneFx": false + }, + "IsValidGyroCANbus": true, + "VerticalTrackSizeInches": 23.729, + "HorizontalTrackSizeInches": 23.729, + "WheelRadiusInches": 2.0, + "IsLeftSideInverted": false, + "IsRightSideInverted": true, + "SwerveModuleType": 4, + "SwerveModuleConfiguration": { + "ModuleBrand": 4, + "DriveRatio": 6.746031746031747, + "SteerRatio": 21.428571428571427, + "CouplingRatio": 3.5714285714285716, + "CustomName": "L2" + }, + "HasVerifiedSteer": true, + "SelectedModuleManufacturer": "Swerve Drive Specialties (SDS)", + "HasVerifiedDrive": true, + "IsValidConfiguration": true + } +} diff --git a/vendordeps/AdvantageKit.json b/vendordeps/AdvantageKit.json new file mode 100644 index 0000000..2707c2b --- /dev/null +++ b/vendordeps/AdvantageKit.json @@ -0,0 +1,35 @@ +{ + "fileName": "AdvantageKit.json", + "name": "AdvantageKit", + "version": "4.1.2", + "uuid": "d820cc26-74e3-11ec-90d6-0242ac120003", + "frcYear": "2025", + "mavenUrls": [ + "https://frcmaven.wpi.edu/artifactory/littletonrobotics-mvn-release/" + ], + "jsonUrl": "https://github.com/Mechanical-Advantage/AdvantageKit/releases/latest/download/AdvantageKit.json", + "javaDependencies": [ + { + "groupId": "org.littletonrobotics.akit", + "artifactId": "akit-java", + "version": "4.1.2" + } + ], + "jniDependencies": [ + { + "groupId": "org.littletonrobotics.akit", + "artifactId": "akit-wpilibio", + "version": "4.1.2", + "skipInvalidPlatforms": false, + "isJar": false, + "validPlatforms": [ + "linuxathena", + "linuxx86-64", + "linuxarm64", + "osxuniversal", + "windowsx86-64" + ] + } + ], + "cppDependencies": [] +} diff --git a/vendordeps/PathplannerLib-2025.2.7.json b/vendordeps/PathplannerLib-2025.2.7.json new file mode 100644 index 0000000..d0b6939 --- /dev/null +++ b/vendordeps/PathplannerLib-2025.2.7.json @@ -0,0 +1,38 @@ +{ + "fileName": "PathplannerLib-2025.2.7.json", + "name": "PathplannerLib", + "version": "2025.2.7", + "uuid": "1b42324f-17c6-4875-8e77-1c312bc8c786", + "frcYear": "2025", + "mavenUrls": [ + "https://3015rangerrobotics.github.io/pathplannerlib/repo" + ], + "jsonUrl": "https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json", + "javaDependencies": [ + { + "groupId": "com.pathplanner.lib", + "artifactId": "PathplannerLib-java", + "version": "2025.2.7" + } + ], + "jniDependencies": [], + "cppDependencies": [ + { + "groupId": "com.pathplanner.lib", + "artifactId": "PathplannerLib-cpp", + "version": "2025.2.7", + "libName": "PathplannerLib", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal", + "linuxathena", + "linuxarm32", + "linuxarm64" + ] + } + ] +} diff --git a/vendordeps/Phoenix6-frc2025-latest.json b/vendordeps/Phoenix6-frc2025-latest.json new file mode 100644 index 0000000..ce44ce4 --- /dev/null +++ b/vendordeps/Phoenix6-frc2025-latest.json @@ -0,0 +1,479 @@ +{ + "fileName": "Phoenix6-frc2025-latest.json", + "name": "CTRE-Phoenix (v6)", + "version": "25.4.0", + "frcYear": "2025", + "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", + "mavenUrls": [ + "https://maven.ctr-electronics.com/release/" + ], + "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2025-latest.json", + "conflictsWith": [ + { + "uuid": "e7900d8d-826f-4dca-a1ff-182f658e98af", + "errorMessage": "Users can not have both the replay and regular Phoenix 6 vendordeps in their robot program.", + "offlineFileName": "Phoenix6-replay-frc2025-latest.json" + } + ], + "javaDependencies": [ + { + "groupId": "com.ctre.phoenix6", + "artifactId": "wpiapi-java", + "version": "25.4.0" + } + ], + "jniDependencies": [ + { + "groupId": "com.ctre.phoenix6", + "artifactId": "api-cpp", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6", + "artifactId": "tools", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "api-cpp-sim", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "tools-sim", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simTalonSRX", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simVictorSPX", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simPigeonIMU", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simCANCoder", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFX", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFXS", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANcoder", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProPigeon2", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANrange", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANdi", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANdle", + "version": "25.4.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + } + ], + "cppDependencies": [ + { + "groupId": "com.ctre.phoenix6", + "artifactId": "wpiapi-cpp", + "version": "25.4.0", + "libName": "CTRE_Phoenix6_WPI", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6", + "artifactId": "tools", + "version": "25.4.0", + "libName": "CTRE_PhoenixTools", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "wpiapi-cpp-sim", + "version": "25.4.0", + "libName": "CTRE_Phoenix6_WPISim", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "tools-sim", + "version": "25.4.0", + "libName": "CTRE_PhoenixTools_Sim", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simTalonSRX", + "version": "25.4.0", + "libName": "CTRE_SimTalonSRX", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simVictorSPX", + "version": "25.4.0", + "libName": "CTRE_SimVictorSPX", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simPigeonIMU", + "version": "25.4.0", + "libName": "CTRE_SimPigeonIMU", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simCANCoder", + "version": "25.4.0", + "libName": "CTRE_SimCANCoder", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFX", + "version": "25.4.0", + "libName": "CTRE_SimProTalonFX", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFXS", + "version": "25.4.0", + "libName": "CTRE_SimProTalonFXS", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANcoder", + "version": "25.4.0", + "libName": "CTRE_SimProCANcoder", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProPigeon2", + "version": "25.4.0", + "libName": "CTRE_SimProPigeon2", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANrange", + "version": "25.4.0", + "libName": "CTRE_SimProCANrange", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANdi", + "version": "25.4.0", + "libName": "CTRE_SimProCANdi", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANdle", + "version": "25.4.0", + "libName": "CTRE_SimProCANdle", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + } + ] +} diff --git a/2025-Robot-Code/vendordeps/WPILibNewCommands.json b/vendordeps/WPILibNewCommands.json similarity index 100% rename from 2025-Robot-Code/vendordeps/WPILibNewCommands.json rename to vendordeps/WPILibNewCommands.json diff --git a/vendordeps/photonlib.json b/vendordeps/photonlib.json new file mode 100644 index 0000000..f7a03fa --- /dev/null +++ b/vendordeps/photonlib.json @@ -0,0 +1,71 @@ +{ + "fileName": "photonlib.json", + "name": "photonlib", + "version": "v2025.3.1", + "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004", + "frcYear": "2025", + "mavenUrls": [ + "https://maven.photonvision.org/repository/internal", + "https://maven.photonvision.org/repository/snapshots" + ], + "jsonUrl": "https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json", + "jniDependencies": [ + { + "groupId": "org.photonvision", + "artifactId": "photontargeting-cpp", + "version": "v2025.3.1", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxathena", + "linuxx86-64", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "org.photonvision", + "artifactId": "photonlib-cpp", + "version": "v2025.3.1", + "libName": "photonlib", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxathena", + "linuxx86-64", + "osxuniversal" + ] + }, + { + "groupId": "org.photonvision", + "artifactId": "photontargeting-cpp", + "version": "v2025.3.1", + "libName": "photontargeting", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxathena", + "linuxx86-64", + "osxuniversal" + ] + } + ], + "javaDependencies": [ + { + "groupId": "org.photonvision", + "artifactId": "photonlib-java", + "version": "v2025.3.1" + }, + { + "groupId": "org.photonvision", + "artifactId": "photontargeting-java", + "version": "v2025.3.1" + } + ] +} From 79bef80163a4b262f16f10b41b97b1ebb084c514 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Tue, 5 Aug 2025 20:12:36 -0400 Subject: [PATCH 02/11] Finished elevator tuning Elevator still doesn't use timesync, and auto align does NOT work correctly. --- src/main/java/frc/robot/RobotContainer.java | 61 +++++++++--- .../frc/robot/commands/DriveCommands.java | 92 ++++++++++--------- .../elevator/ElevatorConstants.java | 8 +- .../elevator/ElevatorIOTalonFX.java | 4 +- 4 files changed, 104 insertions(+), 61 deletions(-) diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 3bec75b..e0b0ae6 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -8,6 +8,7 @@ package frc.robot; import com.pathplanner.lib.auto.AutoBuilder; +import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.wpilibj.GenericHID; import edu.wpi.first.wpilibj.XboxController; import edu.wpi.first.wpilibj.smartdashboard.Field2d; @@ -15,8 +16,10 @@ import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.button.CommandXboxController; +import edu.wpi.first.wpilibj2.command.button.Trigger; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; import frc.robot.Constants.Mode; +import frc.robot.FieldConstants.ReefSide; import frc.robot.commands.DriveCommands; import frc.robot.generated.TunerConstants; import frc.robot.subsystems.Superstructure; @@ -30,6 +33,7 @@ import frc.robot.subsystems.elevator.Elevator; import frc.robot.subsystems.elevator.Elevator.Setpoint; import frc.robot.subsystems.elevator.ElevatorIO; +import frc.robot.subsystems.elevator.ElevatorIOSim; import frc.robot.subsystems.elevator.ElevatorIOTalonFX; import frc.robot.subsystems.end_effector.BeamBreakIO; import frc.robot.subsystems.end_effector.EndEffector; @@ -39,6 +43,8 @@ import frc.robot.subsystems.vision.VisionIOPhotonVision; import frc.robot.subsystems.vision.VisionIOPhotonVisionSim; import frc.robot.util.io.talon.TalonFXIO; +import java.util.Set; +import java.util.function.Supplier; import org.littletonrobotics.junction.networktables.LoggedDashboardChooser; /** @@ -70,6 +76,16 @@ public class RobotContainer { private final LoggedDashboardChooser autoChooser; private final Field2d field = new Field2d(); + private static enum ControlMode { + Coral, + Algae, + } + + private ControlMode controlMode = ControlMode.Coral; + + private final Trigger coralMode = new Trigger(() -> controlMode == ControlMode.Coral); + private final Trigger algaeMode = new Trigger(() -> controlMode == ControlMode.Algae); + /** The container for the robot. Contains subsystems, OI devices, and commands. */ public RobotContainer() { switch (Constants.currentMode) { @@ -111,8 +127,7 @@ public RobotContainer() { new VisionIOPhotonVisionSim( VisionConstants.camera1Name, VisionConstants.robotToCamera1, drive::getPose)); endEffector = EndEffector.createSim(simState); - // TODO: implement this fully - elevator = new Elevator(new ElevatorIO() {}); + elevator = new Elevator(new ElevatorIOSim()); algaeArm = AlgaeArm.createSim(); break; @@ -161,6 +176,8 @@ public RobotContainer() { public void periodic() { field.setRobotPose(drive.getPose()); + + SmartDashboard.putString("Control Mode", controlMode.toString()); } /** @@ -180,20 +197,40 @@ private void configureButtonBindings() { controller.rightTrigger().whileTrue(superstructure.scoreCoral()); - controller - .x() - .whileTrue(elevator.setTarget(Setpoint.L2)) - .onFalse(Commands.waitSeconds(0.1).andThen(elevator.setTarget(Setpoint.Stowed))); + var deferredStow = + Commands.defer( + () -> Commands.waitSeconds(SmartDashboard.getNumber("Elevator Defer Timeout", 0.1)), + Set.of()) + .andThen(elevator.setTarget(Setpoint.Stowed)); + + controller.x().whileTrue(elevator.setTarget(Setpoint.L2)).onFalse(deferredStow); + + controller.b().whileTrue(elevator.setTarget(Setpoint.L3)).onFalse(deferredStow); + + controller.y().whileTrue(elevator.setTarget(Setpoint.L4)).onFalse(deferredStow); controller - .b() - .whileTrue(elevator.setTarget(Setpoint.L3)) - .onFalse(Commands.waitSeconds(0.1).andThen(elevator.setTarget(Setpoint.Stowed))); + .leftBumper() + .and(coralMode) + .whileTrue( + joystickApproach( + () -> FieldConstants.getNearestReefBranch(drive.getPose(), ReefSide.LEFT))); + controller + .rightBumper() + .and(coralMode) + .whileTrue( + joystickApproach( + () -> FieldConstants.getNearestReefBranch(drive.getPose(), ReefSide.RIGHT))); controller - .y() - .whileTrue(elevator.setTarget(Setpoint.L4)) - .onFalse(Commands.waitSeconds(0.1).andThen(elevator.setTarget(Setpoint.Stowed))); + .leftBumper() + .or(controller.rightBumper()) + .and(algaeMode) + .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); + } + + private Command joystickApproach(Supplier approach) { + return DriveCommands.joystickApproach(drive, controller::getLeftY, approach); } /** diff --git a/src/main/java/frc/robot/commands/DriveCommands.java b/src/main/java/frc/robot/commands/DriveCommands.java index 1f265a1..8bbc332 100644 --- a/src/main/java/frc/robot/commands/DriveCommands.java +++ b/src/main/java/frc/robot/commands/DriveCommands.java @@ -163,65 +163,69 @@ public static Command joystickApproach( ProfiledPIDController angleController = new ProfiledPIDController( ANGLE_KP, - 0, + 0.0, ANGLE_KD, new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); angleController.setTolerance(ANGLE_TOLERANCE); angleController.enableContinuousInput(-Math.PI, Math.PI); - ProfiledPIDController alignController = new ProfiledPIDController( - DRIVE_KP, - 0, - DRIVE_KD, + 1.0, + 0.0, + 0.0, new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); - alignController.setTolerance(LINE_TOLERANCE); + alignController.setTolerance(ANGLE_TOLERANCE); alignController.setGoal(0); return Commands.run( - () -> { - final Pose2d currentPose = drive.getPose(); - final Pose2d targetPose = approachSupplier.get(); - Translation2d currentTranslation = currentPose.getTranslation(); - Translation2d approachTranslation = targetPose.getTranslation(); - double distanceToApproach = currentTranslation.getDistance(approachTranslation); + () -> { // Command + Translation2d currentTranslation = drive.getPose().getTranslation(); + Translation2d approachTranslation = approachSupplier.get().getTranslation(); + double distanceToApproach = currentTranslation.getDistance(approachTranslation); - Rotation2d alignmentDirection = targetPose.getRotation(); + Rotation2d alignmentDirection = approachSupplier.get().getRotation(); - // Find lateral distance to Goal Pose - Translation2d goalTranslation = - new Translation2d( - alignmentDirection.getCos() * distanceToApproach + approachTranslation.getX(), - alignmentDirection.getSin() * distanceToApproach + approachTranslation.getY()); + // Find lateral distance to Goal Pose + Translation2d goalTranslation = + new Translation2d( + alignmentDirection.getCos() * distanceToApproach + approachTranslation.getX(), + alignmentDirection.getSin() * distanceToApproach + + approachTranslation.getY()); - Translation2d robotToGoal = currentTranslation.minus(goalTranslation); - double distanceToGoal = Math.hypot(robotToGoal.getX(), robotToGoal.getY()); + Translation2d robotToGoal = currentTranslation.minus(goalTranslation); + double distanceToGoal = Math.hypot(robotToGoal.getX(), robotToGoal.getY()); - // Calculate lateral linear velocity - Translation2d offsetVector = - new Translation2d(alignController.calculate(distanceToGoal), 0) - .rotateBy(robotToGoal.getAngle()); + // Calculate lateral linear velocity + Translation2d offsetVector = + new Translation2d(alignController.calculate(distanceToGoal), 0) + .rotateBy(robotToGoal.getAngle()); - // Calculate total linear velocity - Translation2d linearVelocity = - getLinearVelocityFromJoysticks(0, ySupplier.getAsDouble()) - .rotateBy(alignmentDirection) - .plus(offsetVector); + // Calculate total linear velocity + Translation2d linearVelocity = + getLinearVelocityFromJoysticks(0, ySupplier.getAsDouble()) + .rotateBy(approachSupplier.get().getRotation()) + .plus(offsetVector); - double omega = - angleController.calculate( - currentPose.getRotation().getRadians(), - alignmentDirection.rotateBy(Rotation2d.k180deg).getRadians()); + double omega = + angleController.calculate( + drive.getPose().getRotation().getRadians(), + approachSupplier + .get() + .getRotation() + .rotateBy(Rotation2d.k180deg) + .getRadians()); - ChassisSpeeds speeds = - new ChassisSpeeds( - linearVelocity.getX() * drive.getMaxLinearSpeedMetersPerSec(), - linearVelocity.getY() * drive.getMaxLinearSpeedMetersPerSec(), - omega); + ChassisSpeeds speeds = + new ChassisSpeeds( + linearVelocity.getX() * drive.getMaxLinearSpeedMetersPerSec(), + linearVelocity.getY() * drive.getMaxLinearSpeedMetersPerSec(), + omega); - drive.runVelocity(speeds); - }, - drive); + drive.runVelocity(speeds); + }, + drive // Requirements + ) + .beforeStarting(() -> angleController.reset(drive.getPose().getRotation().getRadians())); } /** @@ -362,8 +366,8 @@ interface RotationFunc { } static final RotationFunc standardApproachRotation = - (controller, current, pose) -> { - final Rotation2d currentRot = current.getRotation(), targetRot = pose.getRotation(); + (controller, current, target) -> { + final Rotation2d currentRot = current.getRotation(), targetRot = target.getRotation(); double pidResult = controller.calculate(currentRot.getRadians(), targetRot.getRadians()); System.out.println("StraightTowards::rotationFunc: pidResult = " + pidResult); @@ -371,7 +375,7 @@ interface RotationFunc { double toGoal = targetRot.minus(currentRot).getRadians(); System.out.println("StraightTowards::rotationFunc: toGoal = " + toGoal); - double omega = pidResult - toGoal; + double omega = toGoal * pidResult; System.out.println("StraightTowards::rotationFunc: omega = " + omega); return omega; diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java index ae5d16b..025ef88 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java @@ -26,7 +26,7 @@ public static final class Exponential { public static final Velocity kMaxJerk = RotationsPerSecondPerSecond.per(Second).of(200); - public static final double kExpo_kV = 0.6; + public static final double kExpo_kV = 0.5; public static final double kExpo_kA = 0.2; } @@ -34,12 +34,12 @@ public static final class Exponential { public static final Slot0Configs kRiseGains = new Slot0Configs() .withGravityType(GravityTypeValue.Elevator_Static) - .withKP(50) - .withKI(0) + .withKP(175) + .withKI(10) .withKD(30) .withKV(2.33) .withKA(0.1) - .withKG(1.0) + .withKG(5) .withKS(0.2); /** Gains for stowing the elevator */ diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java index ca419a7..edb9e0e 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java @@ -65,7 +65,9 @@ public sealed class ElevatorIOTalonFX implements ElevatorIO permits ElevatorIOSi /** Control request for moving up to a setpoint, or for stowing the carriage */ private final MotionMagicExpoTorqueCurrentFOC exponential = - new MotionMagicExpoTorqueCurrentFOC(0).withUseTimesync(true).withFeedForward(Amps.of(8)); + new MotionMagicExpoTorqueCurrentFOC(0) + .withUpdateFreqHz(Hertz.of(200)) + .withFeedForward(Amps.of(8)); /** Control request for moving between setpoints, where neither is from stow */ private final DynamicMotionMagicTorqueCurrentFOC trapezoidal = new DynamicMotionMagicTorqueCurrentFOC( From 38ab7e916837196ce8687beaa371b0b94e312296 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Tue, 12 Aug 2025 20:39:34 -0400 Subject: [PATCH 03/11] Finished algae & auto align --- src/main/java/frc/robot/RobotContainer.java | 36 +++- .../frc/robot/commands/DriveCommands.java | 164 +++++++++++------- .../frc/robot/subsystems/Superstructure.java | 4 + .../robot/subsystems/algae_arm/AlgaeArm.java | 32 +++- .../algae_arm/AlgaeArmConstants.java | 1 + .../frc/robot/subsystems/drive/Drive.java | 1 + .../elevator/ElevatorConstants.java | 4 +- .../subsystems/end_effector/EndEffector.java | 9 + .../end_effector/EndEffectorConstants.java | 1 + .../frc/robot/subsystems/vision/Vision.java | 16 +- 10 files changed, 187 insertions(+), 81 deletions(-) diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index e0b0ae6..8fb710f 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -195,7 +195,7 @@ private void configureButtonBindings() { () -> -controller.getLeftX(), () -> -controller.getRightX())); - controller.rightTrigger().whileTrue(superstructure.scoreCoral()); + controller.rightTrigger().and(coralMode).whileTrue(superstructure.scoreCoral()); var deferredStow = Commands.defer( @@ -203,11 +203,20 @@ private void configureButtonBindings() { Set.of()) .andThen(elevator.setTarget(Setpoint.Stowed)); - controller.x().whileTrue(elevator.setTarget(Setpoint.L2)).onFalse(deferredStow); - - controller.b().whileTrue(elevator.setTarget(Setpoint.L3)).onFalse(deferredStow); - - controller.y().whileTrue(elevator.setTarget(Setpoint.L4)).onFalse(deferredStow); + controller.x().and(coralMode).whileTrue(elevator.setTarget(Setpoint.L2)).onFalse(deferredStow); + controller + .x() + .and(algaeMode) + .whileTrue(elevator.setTarget(Setpoint.AlgaeLow)) + .onFalse(deferredStow); + controller.b().and(coralMode).whileTrue(elevator.setTarget(Setpoint.L3)).onFalse(deferredStow); + controller + .b() + .and(algaeMode) + .whileTrue(elevator.setTarget(Setpoint.AlgaeHigh)) + .onFalse(deferredStow); + controller.y().and(coralMode).whileTrue(elevator.setTarget(Setpoint.L4)).onFalse(deferredStow); + controller.y().and(algaeMode).whileTrue(superstructure.bargeShot()).onFalse(deferredStow); controller .leftBumper() @@ -224,13 +233,24 @@ private void configureButtonBindings() { controller .leftBumper() - .or(controller.rightBumper()) .and(algaeMode) .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); + controller + .rightBumper() + .and(algaeMode) + .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); + + controller + .leftTrigger() + .onTrue(Commands.runOnce(() -> controlMode = ControlMode.Algae)) + .whileTrue(Commands.print("Algae mode!").andThen(superstructure.algaeMode())) + .onFalse(Commands.runOnce(() -> controlMode = ControlMode.Coral)); + + controller.rightTrigger().and(algaeMode).whileTrue(endEffector.scoreProcessor()); } private Command joystickApproach(Supplier approach) { - return DriveCommands.joystickApproach(drive, controller::getLeftY, approach); + return new DriveCommands.JoystickApproachCommand(drive, () -> -controller.getLeftY(), approach); } /** diff --git a/src/main/java/frc/robot/commands/DriveCommands.java b/src/main/java/frc/robot/commands/DriveCommands.java index 8bbc332..a52b03e 100644 --- a/src/main/java/frc/robot/commands/DriveCommands.java +++ b/src/main/java/frc/robot/commands/DriveCommands.java @@ -31,13 +31,14 @@ import java.util.List; import java.util.function.DoubleSupplier; import java.util.function.Supplier; +import org.littletonrobotics.junction.Logger; public final class DriveCommands { private static final double DEADBAND = 0.1; private static final double DRIVE_KP = 2.5; private static final double DRIVE_KD = 0.25; - private static final double ANGLE_KP = 5.0; - private static final double ANGLE_KD = 0.4; + private static final double ANGLE_KP = 2.0; + private static final double ANGLE_KD = 0.2; private static final double ANGLE_MAX_VELOCITY = 8.0; private static final double ANGLE_MAX_ACCELERATION = 20.0; private static final double ANGLE_TOLERANCE = Units.degreesToRadians(5); @@ -158,74 +159,109 @@ public static Command joystickDriveAtAngle( .beforeStarting(() -> angleController.reset(drive.getRotation().getRadians())); } - public static Command joystickApproach( - Drive drive, DoubleSupplier ySupplier, Supplier approachSupplier) { + public static class JoystickApproachCommand extends Command { + Drive drive; + DoubleSupplier ySupplier; + Supplier targetSupplier; + + Pose2d targetPose2d; + Pose2d currentPose2d; + Pose2d relativePose2d; + Rotation2d targetRotation2d; + + boolean running = false; + + static final double DEADBAND = 0.1; + ProfiledPIDController angleController = new ProfiledPIDController( ANGLE_KP, - 0.0, + 0, ANGLE_KD, new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); - angleController.setTolerance(ANGLE_TOLERANCE); - angleController.enableContinuousInput(-Math.PI, Math.PI); - ProfiledPIDController alignController = - new ProfiledPIDController( - 1.0, - 0.0, - 0.0, - new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); - alignController.setTolerance(ANGLE_TOLERANCE); - alignController.setGoal(0); - - return Commands.run( - () -> { // Command - Translation2d currentTranslation = drive.getPose().getTranslation(); - Translation2d approachTranslation = approachSupplier.get().getTranslation(); - double distanceToApproach = currentTranslation.getDistance(approachTranslation); - - Rotation2d alignmentDirection = approachSupplier.get().getRotation(); - // Find lateral distance to Goal Pose - Translation2d goalTranslation = - new Translation2d( - alignmentDirection.getCos() * distanceToApproach + approachTranslation.getX(), - alignmentDirection.getSin() * distanceToApproach - + approachTranslation.getY()); - - Translation2d robotToGoal = currentTranslation.minus(goalTranslation); - double distanceToGoal = Math.hypot(robotToGoal.getX(), robotToGoal.getY()); - - // Calculate lateral linear velocity - Translation2d offsetVector = - new Translation2d(alignController.calculate(distanceToGoal), 0) - .rotateBy(robotToGoal.getAngle()); - - // Calculate total linear velocity - Translation2d linearVelocity = - getLinearVelocityFromJoysticks(0, ySupplier.getAsDouble()) - .rotateBy(approachSupplier.get().getRotation()) - .plus(offsetVector); - - double omega = - angleController.calculate( - drive.getPose().getRotation().getRadians(), - approachSupplier - .get() - .getRotation() - .rotateBy(Rotation2d.k180deg) - .getRadians()); - - ChassisSpeeds speeds = - new ChassisSpeeds( - linearVelocity.getX() * drive.getMaxLinearSpeedMetersPerSec(), - linearVelocity.getY() * drive.getMaxLinearSpeedMetersPerSec(), - omega); - - drive.runVelocity(speeds); - }, - drive // Requirements - ) - .beforeStarting(() -> angleController.reset(drive.getPose().getRotation().getRadians())); + ProfiledPIDController alignController = + new ProfiledPIDController(ANGLE_KP, 0, ANGLE_KD, new TrapezoidProfile.Constraints(3.7, 4)); + + public JoystickApproachCommand( + Drive drive, DoubleSupplier ySupplier, Supplier targetSupplier) { + this.drive = drive; + this.ySupplier = ySupplier; + this.targetSupplier = targetSupplier; + + angleController.setTolerance(POSITION_TOLERANCE); + angleController.setTolerance(ANGLE_TOLERANCE); + + angleController.enableContinuousInput(-Math.PI, Math.PI); + alignController.setGoal(0); + + addRequirements(drive); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + alignController.reset(0); + angleController.reset(drive.getPose().getRotation().getRadians()); + targetPose2d = targetSupplier.get(); + + Logger.recordOutput("AutoAlign/Approach/Target", targetPose2d); + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + running = true; + relativePose2d = drive.getPose().relativeTo(targetPose2d); + targetRotation2d = targetPose2d.getRotation(); + + // Calculate lateral linear velocity + Translation2d offsetVector = + new Translation2d(0, alignController.calculate(relativePose2d.getY())); + + // Calculate total linear velocity + Translation2d linearVelocity = + getLinearVelocityFromJoysticks(-ySupplier.getAsDouble(), 0) + .times(drive.getMaxLinearSpeedMetersPerSec()) + .plus(offsetVector) + .rotateBy(targetRotation2d); + + // Calculate angular speed + double omega = + angleController.calculate( + drive.getRotation().getRadians(), + targetRotation2d.rotateBy(Rotation2d.k180deg).getRadians()); + + // Convert to field relative speeds & send command + ChassisSpeeds speeds = new ChassisSpeeds(linearVelocity.getX(), linearVelocity.getY(), omega); + + drive.runVelocity(ChassisSpeeds.fromFieldRelativeSpeeds(speeds, drive.getRotation())); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + running = false; + } + + // Returns true when withing a lateral tolerance + public boolean withinTolerance(double dist) { + return running ? Math.abs(relativePose2d.getY()) < dist : false; + } + + private static Translation2d getLinearVelocityFromJoysticks(double x, double y) { + // Apply deadband + double linearMagnitude = MathUtil.applyDeadband(Math.hypot(x, y), DEADBAND); + Rotation2d linearDirection = new Rotation2d(Math.atan2(y, x)); + + // Square magnitude for more precise control + linearMagnitude = linearMagnitude * linearMagnitude; + + // Return new linear velocity + return new Pose2d(new Translation2d(), linearDirection) + .transformBy(new Transform2d(linearMagnitude, 0.0, new Rotation2d())) + .getTranslation(); + } } /** diff --git a/src/main/java/frc/robot/subsystems/Superstructure.java b/src/main/java/frc/robot/subsystems/Superstructure.java index e1f1113..37156f8 100644 --- a/src/main/java/frc/robot/subsystems/Superstructure.java +++ b/src/main/java/frc/robot/subsystems/Superstructure.java @@ -28,4 +28,8 @@ public Command bargeShot() { public Command scoreCoral() { return endEffector.teleScoreCoral(elevator.isAtSetpoint); } + + public Command algaeMode() { + return endEffector.intakeAlgae().alongWith(algaeArm.deploy()); + } } diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java index 90d44e3..d118dc9 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java @@ -1,14 +1,29 @@ package frc.robot.subsystems.algae_arm; +import static edu.wpi.first.units.Units.Rotations; import static frc.robot.subsystems.algae_arm.AlgaeArmConstants.*; +import edu.wpi.first.math.MathUtil; import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.SubsystemBase; +import edu.wpi.first.wpilibj2.command.button.Trigger; import frc.robot.util.io.talon.TalonFXIO; import frc.robot.util.io.talon.TalonFXIOImpl; +import frc.robot.util.io.talon.TalonFXIOInputsAutoLogged; +import org.littletonrobotics.junction.Logger; public class AlgaeArm extends SubsystemBase { private final TalonFXIO io; + private final TalonFXIOInputsAutoLogged inputs = new TalonFXIOInputsAutoLogged(); + + private final Trigger hasDeployed = + new Trigger( + () -> MathUtil.isNear(inputs.position.in(Rotations), kDeployedAngle.in(Rotations), 0.01)); + + private final Trigger hasStowed = + new Trigger( + () -> MathUtil.isNear(inputs.position.in(Rotations), kDeployedAngle.in(Rotations), 0.01)); public AlgaeArm(TalonFXIO motorIO) { io = motorIO; @@ -16,6 +31,13 @@ public AlgaeArm(TalonFXIO motorIO) { setDefaultCommand(stow()); } + @Override + public void periodic() { + io.updateInputs(inputs); + + Logger.processInputs("AlgaeArm/Motor", inputs); + } + public static AlgaeArm createReal() { return new AlgaeArm(new TalonFXIOImpl(kMotorID, kBus, kAlgaeArmCallback)); } @@ -25,10 +47,16 @@ public static AlgaeArm createSim() { } public Command deploy() { - return runOnce(() -> io.setPosition(kDeployedAngle)); + return Commands.sequence( + runOnce(() -> io.setDutyCycle(.8)), + Commands.waitUntil(hasDeployed), + runOnce(() -> io.stopMotor())); } public Command stow() { - return runOnce(() -> io.setPosition(kStowedAngle)); + return Commands.sequence( + runOnce(() -> io.setDutyCycle(-.8)), + Commands.waitUntil(hasStowed), + runOnce(() -> io.stopMotor())); } } diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java index caa8678..1ee0073 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java @@ -51,6 +51,7 @@ public final class AlgaeArmConstants { public static final Consumer kAlgaeArmCallback = config -> { + tryUntilOk(5, () -> config.apply(kSlot0)); tryUntilOk(5, () -> config.apply(kCurrentLimits)); tryUntilOk(5, () -> config.apply(kFeedback)); }; diff --git a/src/main/java/frc/robot/subsystems/drive/Drive.java b/src/main/java/frc/robot/subsystems/drive/Drive.java index 1dce1c3..1be3136 100644 --- a/src/main/java/frc/robot/subsystems/drive/Drive.java +++ b/src/main/java/frc/robot/subsystems/drive/Drive.java @@ -158,6 +158,7 @@ public void periodic() { odometryLock.lock(); // Prevents odometry updates while reading data gyroIO.updateInputs(gyroInputs); Logger.processInputs("Drive/Gyro", gyroInputs); + for (var module : modules) { module.periodic(); } diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java index 025ef88..efa8056 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java @@ -26,8 +26,8 @@ public static final class Exponential { public static final Velocity kMaxJerk = RotationsPerSecondPerSecond.per(Second).of(200); - public static final double kExpo_kV = 0.5; - public static final double kExpo_kA = 0.2; + public static final double kExpo_kV = 0.45; + public static final double kExpo_kA = 0.15; } /** Gains for moving the elevator to a setpoint from stow */ diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java index 61464e1..60b4ce5 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java @@ -171,4 +171,13 @@ public Command autoScoreCoral(BooleanSupplier elevatorIsAtHeight) { public Command scoreBarge() { return runOnce(() -> motorIO.setDutyCycle(-kAlgaeBargeSpeed)).beforeStarting(this::resetState); } + + public Command scoreProcessor() { + return runOnce(() -> motorIO.setDutyCycle(-kAlgaeProcessorSpeed)) + .beforeStarting(this::resetState); + } + + public Command intakeAlgae() { + return run(() -> motorIO.setDutyCycle(kIdleSpeed)).beforeStarting(this::resetState); + } } diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java index 700b39b..2b09f57 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java @@ -9,6 +9,7 @@ public final class EndEffectorConstants { kAutoEjectSpeed = 1, kSlowEjectSpeed = .3, kAlgaeBargeSpeed = 1, + kAlgaeProcessorSpeed = 0.3, kIdleSpeed = .25, kIntakeSpeed = 0.125, kDriveBackSpeed = 0.1; diff --git a/src/main/java/frc/robot/subsystems/vision/Vision.java b/src/main/java/frc/robot/subsystems/vision/Vision.java index 6fabfbb..916a381 100644 --- a/src/main/java/frc/robot/subsystems/vision/Vision.java +++ b/src/main/java/frc/robot/subsystems/vision/Vision.java @@ -48,6 +48,8 @@ public Vision(VisionConsumer consumer, VisionIO... io) { new Alert( "Vision camera " + Integer.toString(i) + " is disconnected.", AlertType.kWarning); } + + SmartDashboard.putBoolean("Use Vision", true); } /** @@ -66,6 +68,8 @@ public void periodic() { Logger.processInputs("Vision/Camera" + Integer.toString(i), inputs[i]); } + boolean enableVision = SmartDashboard.getBoolean("Use Vision", true); + // Initialize logging values List allTagPoses = new LinkedList<>(); List allRobotPoses = new LinkedList<>(); @@ -137,11 +141,13 @@ public void periodic() { SmartDashboard.putNumber("Camera " + cameraIndex + " Pose X", observation.pose().getX()); SmartDashboard.putNumber("Camera " + cameraIndex + " Pose Y", observation.pose().getY()); - // Send vision observation - consumer.accept( - observation.pose().toPose2d(), - observation.timestamp(), - VecBuilder.fill(linearStdDev, linearStdDev, angularStdDev)); + if (enableVision) { + // Send vision observation + consumer.accept( + observation.pose().toPose2d(), + observation.timestamp(), + VecBuilder.fill(linearStdDev, linearStdDev, angularStdDev)); + } } // Log camera datadata From 1ee9c18cdc53e4aa378030fc7ee340a535d6b5f9 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Tue, 19 Aug 2025 17:39:38 -0400 Subject: [PATCH 04/11] Moved to using SwerveSetpointGenerator, also started autos --- .../pathplanner/autos/Own Side 4pc.auto | 25 ++ .../paths/Own Cage to Branch J.path | 61 +++ src/main/deploy/pathplanner/settings.json | 13 +- src/main/java/frc/robot/Constants.java | 2 + src/main/java/frc/robot/Robot.java | 38 +- src/main/java/frc/robot/RobotContainer.java | 50 ++- .../frc/robot/generated/TunerConstants.java | 32 ++ .../frc/robot/subsystems/Superstructure.java | 10 +- .../frc/robot/subsystems/drive/Drive.java | 63 ++- .../robot/subsystems/elevator/Elevator.java | 4 + .../java/frc/robot/util/BDXboxController.java | 66 +++ src/main/java/frc/robot/util/Elastic.java | 390 ++++++++++++++++++ 12 files changed, 715 insertions(+), 39 deletions(-) create mode 100644 src/main/deploy/pathplanner/autos/Own Side 4pc.auto create mode 100644 src/main/deploy/pathplanner/paths/Own Cage to Branch J.path create mode 100644 src/main/java/frc/robot/util/BDXboxController.java create mode 100644 src/main/java/frc/robot/util/Elastic.java diff --git a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto new file mode 100644 index 0000000..387e82c --- /dev/null +++ b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto @@ -0,0 +1,25 @@ +{ + "version": "2025.0", + "command": { + "type": "sequential", + "data": { + "commands": [ + { + "type": "path", + "data": { + "pathName": "Own Cage to Branch J" + } + }, + { + "type": "named", + "data": { + "name": "score_coral" + } + } + ] + } + }, + "resetOdom": true, + "folder": null, + "choreoAuto": false +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path b/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path new file mode 100644 index 0000000..67b621d --- /dev/null +++ b/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path @@ -0,0 +1,61 @@ +{ + "version": "2025.0", + "waypoints": [ + { + "anchor": { + "x": 7.15, + "y": 6.15 + }, + "prevControl": null, + "nextControl": { + "x": 7.37915404232744, + "y": 6.249942107667359 + }, + "isLocked": false, + "linkedName": "Own Cage" + }, + { + "anchor": { + "x": 5.025681818181818, + "y": 5.27643465909091 + }, + "prevControl": { + "x": 5.4052670752795935, + "y": 5.43522218089631 + }, + "nextControl": null, + "isLocked": false, + "linkedName": "Branch J" + } + ], + "rotationTargets": [], + "constraintZones": [], + "pointTowardsZones": [], + "eventMarkers": [ + { + "name": "elevatorl3", + "waypointRelativePos": 0.8, + "endWaypointRelativePos": null, + "command": null + } + ], + "globalConstraints": { + "maxVelocity": 4.73, + "maxAcceleration": 5.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + }, + "goalEndState": { + "velocity": 0, + "rotation": -119.99999999999999 + }, + "reversed": false, + "folder": "Starting Paths", + "idealStartingState": { + "velocity": 0.0, + "rotation": -135.0 + }, + "useDefaultConstraints": true +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/settings.json b/src/main/deploy/pathplanner/settings.json index a08ec4a..2ed879e 100644 --- a/src/main/deploy/pathplanner/settings.json +++ b/src/main/deploy/pathplanner/settings.json @@ -2,7 +2,12 @@ "robotWidth": 0.9, "robotLength": 0.9, "holonomicMode": true, - "pathFolders": [], + "pathFolders": [ + "To Barge", + "Starting Paths", + "To Coral Station", + "To Reef" + ], "autoFolders": [], "defaultMaxVel": 4.73, "defaultMaxAccel": 5.0, @@ -16,7 +21,7 @@ "driveGearing": 5.143, "maxDriveSpeed": 5.45, "driveMotorType": "krakenX60FOC", - "driveCurrentLimit": 60.0, + "driveCurrentLimit": 100.0, "wheelCOF": 1.2, "flModuleX": 0.273, "flModuleY": 0.273, @@ -28,5 +33,7 @@ "brModuleY": -0.273, "bumperOffsetX": 0.0, "bumperOffsetY": 0.0, - "robotFeatures": [] + "robotFeatures": [ + "{\"name\":\"Rectangle\",\"type\":\"rounded_rect\",\"data\":{\"center\":{\"x\":0.25,\"y\":0.0},\"size\":{\"width\":0.2,\"length\":0.5},\"borderRadius\":0.0,\"strokeWidth\":0.02,\"filled\":false}}" + ] } diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index 7a782a5..a68dcd6 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -21,6 +21,8 @@ public final class Constants { public static final Mode simMode = Mode.SIM; public static final Mode currentMode = RobotBase.isReal() ? Mode.REAL : simMode; + public static final double TotalMemory = 100 * 1024 * 1024; + public static enum Mode { /** Running on a real robot. */ REAL, diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index aa92ca3..470452b 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -7,13 +7,12 @@ package frc.robot; -import com.ctre.phoenix6.swerve.SwerveModuleConstants; -import com.ctre.phoenix6.swerve.SwerveModuleConstants.DriveMotorArrangement; -import com.ctre.phoenix6.swerve.SwerveModuleConstants.SteerMotorArrangement; +import com.ctre.phoenix6.SignalLogger; +import edu.wpi.first.util.ClassPreloader; +import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.CommandScheduler; import frc.robot.autopilot.Quadrant; -import frc.robot.generated.TunerConstants; import org.littletonrobotics.junction.LogFileUtil; import org.littletonrobotics.junction.LoggedRobot; import org.littletonrobotics.junction.Logger; @@ -32,12 +31,25 @@ public class Robot extends LoggedRobot { private final RobotContainer robotContainer; public Robot() { + ClassPreloader.preload( + "frc.robot.RobotContainer", + "frc.robot.subsystems.drive.Drive", + "frc.robot.subsystems.drive.Module", + "frc.robot.subsystems.elevator.Elevator", + "frc.robot.subsystems.vision.Vision", + "frc.robot.subsystems.end_effector.EndEffector", + "frc.robot.subsystems.algae_arm.AlgaeArm", + "frc.robot.subsystems.Superstructure"); + + DriverStation.silenceJoystickConnectionWarning(true); + // Record metadata Logger.recordMetadata("ProjectName", BuildConstants.MAVEN_NAME); Logger.recordMetadata("BuildDate", BuildConstants.BUILD_DATE); Logger.recordMetadata("GitSHA", BuildConstants.GIT_SHA); Logger.recordMetadata("GitDate", BuildConstants.GIT_DATE); Logger.recordMetadata("GitBranch", BuildConstants.GIT_BRANCH); + switch (BuildConstants.DIRTY) { case 0: Logger.recordMetadata("GitDirty", "All changes committed"); @@ -56,6 +68,8 @@ public Robot() { // Running on a real robot, log to a USB stick ("/U/logs") Logger.addDataReceiver(new WPILOGWriter()); Logger.addDataReceiver(new NT4Publisher()); + // disable redundant logging from CTRE + SignalLogger.enableAutoLogging(false); break; case SIM: @@ -75,22 +89,6 @@ public Robot() { // Start AdvantageKit logger Logger.start(); - // Check for valid swerve config - var modules = - new SwerveModuleConstants[] { - TunerConstants.FrontLeft, - TunerConstants.FrontRight, - TunerConstants.BackLeft, - TunerConstants.BackRight - }; - for (var constants : modules) { - if (constants.DriveMotorType != DriveMotorArrangement.TalonFX_Integrated - || constants.SteerMotorType != SteerMotorArrangement.TalonFX_Integrated) { - throw new RuntimeException( - "You are using an unsupported swerve configuration, which this template does not support without manual customization. The 2025 release of Phoenix supports some swerve configurations which were not available during 2025 beta testing, preventing any development and support from the AdvantageKit developers."); - } - } - // Instantiate our RobotContainer. This will perform all our button bindings, // and put our autonomous chooser on the dashboard. robotContainer = new RobotContainer(); diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 8fb710f..3a0037d 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -8,6 +8,8 @@ package frc.robot; import com.pathplanner.lib.auto.AutoBuilder; +import com.pathplanner.lib.auto.NamedCommands; +import com.pathplanner.lib.commands.PathfindingCommand; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.wpilibj.GenericHID; import edu.wpi.first.wpilibj.XboxController; @@ -42,9 +44,13 @@ import frc.robot.subsystems.vision.VisionIO; import frc.robot.subsystems.vision.VisionIOPhotonVision; import frc.robot.subsystems.vision.VisionIOPhotonVisionSim; +import frc.robot.util.Elastic; +import frc.robot.util.Elastic.Notification; +import frc.robot.util.Elastic.NotificationLevel; import frc.robot.util.io.talon.TalonFXIO; import java.util.Set; import java.util.function.Supplier; +import org.littletonrobotics.junction.Logger; import org.littletonrobotics.junction.networktables.LoggedDashboardChooser; /** @@ -54,6 +60,21 @@ * subsystems, commands, and button mappings) should be declared here. */ public class RobotContainer { + // alert to display if preallocated memory is + private static final Notification kFullHeapNotification = + new Notification() + .withDescription( + "Used memory is more than 90% of preallocated memory, should increase amount of preallocated memory") + .withLevel(NotificationLevel.WARNING) + .withNoAutoDismiss(); + + private static final Notification kUnusedHeapNotification = + new Notification() + .withDescription( + "Used memory is less than 50% of preallocated memory, should reduce amount of preallocated memory") + .withLevel(NotificationLevel.WARNING) + .withNoAutoDismiss(); + // Subsystems private final Drive drive; @@ -88,6 +109,22 @@ private static enum ControlMode { /** The container for the robot. Contains subsystems, OI devices, and commands. */ public RobotContainer() { + Logger.runEveryN( + 10, + () -> { + var rt = Runtime.getRuntime(); + + var usedMem = (double) (rt.totalMemory() - rt.freeMemory()); + + if (usedMem >= 0.9 * Constants.TotalMemory) { + Elastic.sendNotification(kFullHeapNotification); + } else if (usedMem <= 0.5 * Constants.TotalMemory) { + Elastic.sendNotification(kUnusedHeapNotification); + } + + Logger.recordOutput("Robot/Utilized Memory Percent", usedMem / rt.totalMemory()); + }); + switch (Constants.currentMode) { case REAL: // Real robot, instantiate hardware IO implementations @@ -150,6 +187,8 @@ public RobotContainer() { superstructure = new Superstructure(endEffector, elevator, algaeArm); + PathfindingCommand.warmupCommand().schedule(); + // Set up auto routines autoChooser = new LoggedDashboardChooser<>("Auto Choices", AutoBuilder.buildAutoChooser()); @@ -195,7 +234,7 @@ private void configureButtonBindings() { () -> -controller.getLeftX(), () -> -controller.getRightX())); - controller.rightTrigger().and(coralMode).whileTrue(superstructure.scoreCoral()); + controller.rightTrigger().and(coralMode).whileTrue(superstructure.scoreCoral(false)); var deferredStow = Commands.defer( @@ -249,6 +288,15 @@ private void configureButtonBindings() { controller.rightTrigger().and(algaeMode).whileTrue(endEffector.scoreProcessor()); } + private void configureAutoCommands() { + // use NamedCommands for commands run outside of paths, EventTriggers for inside + // of paths only. + + NamedCommands.registerCommand("elevator_l3", elevator.setTarget(Setpoint.L3)); + NamedCommands.registerCommand("elevator_l4", elevator.setTarget(Setpoint.L4)); + NamedCommands.registerCommand("score_coral", superstructure.scoreCoral(true)); + } + private Command joystickApproach(Supplier approach) { return new DriveCommands.JoystickApproachCommand(drive, () -> -controller.getLeftY(), approach); } diff --git a/src/main/java/frc/robot/generated/TunerConstants.java b/src/main/java/frc/robot/generated/TunerConstants.java index c4aa590..806e0e7 100644 --- a/src/main/java/frc/robot/generated/TunerConstants.java +++ b/src/main/java/frc/robot/generated/TunerConstants.java @@ -8,9 +8,13 @@ import com.ctre.phoenix6.signals.*; import com.ctre.phoenix6.swerve.*; import com.ctre.phoenix6.swerve.SwerveModuleConstants.*; +import com.pathplanner.lib.config.ModuleConfig; +import com.pathplanner.lib.config.RobotConfig; import edu.wpi.first.math.Matrix; +import edu.wpi.first.math.geometry.Translation2d; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; +import edu.wpi.first.math.system.plant.DCMotor; import edu.wpi.first.units.measure.*; // Generated by the Tuner X Swerve Project Generator @@ -18,6 +22,34 @@ public class TunerConstants { // Both sets of gains need to be tuned to your individual robot. + private static RobotConfig createConfig() { + try { + return RobotConfig.fromGUISettings(); + } catch (Exception e) { + e.printStackTrace(); + + final ModuleConfig module = + new ModuleConfig( + Meters.of(0.048), + MetersPerSecond.of(5.450), + 1.2, + DCMotor.getKrakenX60Foc(1), + kSlipCurrent, + 1); + + return new RobotConfig( + Kilograms.of(74.088), + KilogramSquareMeters.of(6.883), + module, + new Translation2d(0.273, 0.273), + new Translation2d(0.273, -0.273), + new Translation2d(-0.273, 0.273), + new Translation2d(-0.273, -0.273)); + } + } + + public static final RobotConfig kAutoConfig = createConfig(); + // The steer motor uses any SwerveModule.SteerRequestType control request with the // output type specified by SwerveModuleConstants.SteerMotorClosedLoopOutput private static final Slot0Configs steerGains = diff --git a/src/main/java/frc/robot/subsystems/Superstructure.java b/src/main/java/frc/robot/subsystems/Superstructure.java index 37156f8..e15ef06 100644 --- a/src/main/java/frc/robot/subsystems/Superstructure.java +++ b/src/main/java/frc/robot/subsystems/Superstructure.java @@ -25,8 +25,14 @@ public Command bargeShot() { .andThen(endEffector.scoreBarge(), algaeArm.stow())); } - public Command scoreCoral() { - return endEffector.teleScoreCoral(elevator.isAtSetpoint); + public Command scoreCoral(boolean inAuto) { + if (inAuto) { + return elevator + .setTarget(Setpoint.L4) + .alongWith(endEffector.autoScoreCoral(elevator.isAtSetpoint)); + } else { + return endEffector.teleScoreCoral(elevator::shouldEjectFast); + } } public Command algaeMode() { diff --git a/src/main/java/frc/robot/subsystems/drive/Drive.java b/src/main/java/frc/robot/subsystems/drive/Drive.java index 1be3136..0327827 100644 --- a/src/main/java/frc/robot/subsystems/drive/Drive.java +++ b/src/main/java/frc/robot/subsystems/drive/Drive.java @@ -16,7 +16,10 @@ import com.pathplanner.lib.config.RobotConfig; import com.pathplanner.lib.controllers.PPHolonomicDriveController; import com.pathplanner.lib.pathfinding.Pathfinding; +import com.pathplanner.lib.util.DriveFeedforwards; import com.pathplanner.lib.util.PathPlannerLogging; +import com.pathplanner.lib.util.swerve.SwerveSetpoint; +import com.pathplanner.lib.util.swerve.SwerveSetpointGenerator; import edu.wpi.first.hal.FRCNetComm.tInstances; import edu.wpi.first.hal.FRCNetComm.tResourceType; import edu.wpi.first.hal.HAL; @@ -33,10 +36,14 @@ import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; import edu.wpi.first.math.system.plant.DCMotor; +import edu.wpi.first.units.measure.Time; import edu.wpi.first.wpilibj.Alert; import edu.wpi.first.wpilibj.Alert.AlertType; import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj.DriverStation.Alliance; +import edu.wpi.first.wpilibj.RobotController; +import edu.wpi.first.wpilibj.Timer; +import edu.wpi.first.wpilibj.Watchdog; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.SubsystemBase; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; @@ -100,6 +107,13 @@ public class Drive extends SubsystemBase { }; private final SwerveDrivePoseEstimator poseEstimator = new SwerveDrivePoseEstimator(kinematics, rawGyroRotation, lastModulePositions, new Pose2d()); + private final SwerveSetpointGenerator setpointGenerator; + private SwerveSetpoint previousSetpoint; + private final Timer sinceLastSetpoint = new Timer(); + + private final Watchdog watchdog = + new Watchdog( + 0.01, () -> System.err.println("Drive.periodic() exceeded allotted time (10ms)")); public Drive( GyroIO gyroIO, @@ -151,28 +165,41 @@ public Drive( (state) -> Logger.recordOutput("Drive/SysIdState", state.toString())), new SysIdRoutine.Mechanism( (voltage) -> runCharacterization(voltage.in(Volts)), null, this)); + + setpointGenerator = + new SwerveSetpointGenerator(TunerConstants.kAutoConfig, RotationsPerSecond.of(10)); + previousSetpoint = + new SwerveSetpoint(getChassisSpeeds(), getModuleStates(), DriveFeedforwards.zeros(4)); + + sinceLastSetpoint.start(); } @Override public void periodic() { + watchdog.reset(); + + watchdog.addEpoch("Waiting for odom lock"); odometryLock.lock(); // Prevents odometry updates while reading data - gyroIO.updateInputs(gyroInputs); - Logger.processInputs("Drive/Gyro", gyroInputs); + try { + gyroIO.updateInputs(gyroInputs); + Logger.processInputs("Drive/Gyro", gyroInputs); - for (var module : modules) { - module.periodic(); + int moduleNum = 0; + for (var module : modules) { + watchdog.addEpoch("Module " + moduleNum++ + " periodic"); + module.periodic(); + } + watchdog.addEpoch("Checking if disabled"); + } finally { + odometryLock.unlock(); } - odometryLock.unlock(); // Stop moving when disabled if (DriverStation.isDisabled()) { for (var module : modules) { module.stop(); } - } - - // Log empty setpoint states when disabled - if (DriverStation.isDisabled()) { + // Log empty setpoint states when disabled Logger.recordOutput("SwerveStates/Setpoints", new SwerveModuleState[] {}); Logger.recordOutput("SwerveStates/SetpointsOptimized", new SwerveModuleState[] {}); } @@ -182,10 +209,13 @@ public void periodic() { modules[0].getOdometryTimestamps(); // All signals are sampled together int sampleCount = sampleTimestamps.length; for (int i = 0; i < sampleCount; i++) { + watchdog.addEpoch("Processing sample " + i); // Read wheel positions and deltas from each module SwerveModulePosition[] modulePositions = new SwerveModulePosition[4]; SwerveModulePosition[] moduleDeltas = new SwerveModulePosition[4]; for (int moduleIndex = 0; moduleIndex < 4; moduleIndex++) { + watchdog.addEpoch("Processing sample " + i + " for module " + moduleIndex); + modulePositions[moduleIndex] = modules[moduleIndex].getOdometryPositions()[i]; moduleDeltas[moduleIndex] = new SwerveModulePosition( @@ -195,6 +225,7 @@ public void periodic() { lastModulePositions[moduleIndex] = modulePositions[moduleIndex]; } + watchdog.addEpoch("Updating gyro for sample" + i); // Update gyro angle if (gyroInputs.connected) { // Use the real gyro angle @@ -205,12 +236,15 @@ public void periodic() { rawGyroRotation = rawGyroRotation.plus(new Rotation2d(twist.dtheta)); } + watchdog.addEpoch("Adding sample " + i + " to pose estimator"); // Apply update poseEstimator.updateWithTime(sampleTimestamps[i], rawGyroRotation, modulePositions); } // Update gyro alert gyroDisconnectedAlert.set(!gyroInputs.connected && Constants.currentMode != Mode.SIM); + + Logger.runEveryN(10, watchdog::printEpochs); } /** @@ -219,14 +253,17 @@ public void periodic() { * @param speeds Speeds in meters/sec */ public void runVelocity(ChassisSpeeds speeds) { + Time elapsed = Seconds.of(sinceLastSetpoint.get()); + sinceLastSetpoint.reset(); + // Calculate module setpoints - ChassisSpeeds discreteSpeeds = ChassisSpeeds.discretize(speeds, 0.02); - SwerveModuleState[] setpointStates = kinematics.toSwerveModuleStates(discreteSpeeds); - SwerveDriveKinematics.desaturateWheelSpeeds(setpointStates, TunerConstants.kSpeedAt12Volts); + previousSetpoint = + setpointGenerator.generateSetpoint( + previousSetpoint, speeds, elapsed, Volts.of(RobotController.getBatteryVoltage())); + SwerveModuleState[] setpointStates = previousSetpoint.moduleStates(); // Log unoptimized setpoints and setpoint speeds Logger.recordOutput("SwerveStates/Setpoints", setpointStates); - Logger.recordOutput("SwerveChassisSpeeds/Setpoints", discreteSpeeds); // Send setpoints to modules for (int i = 0; i < 4; i++) { diff --git a/src/main/java/frc/robot/subsystems/elevator/Elevator.java b/src/main/java/frc/robot/subsystems/elevator/Elevator.java index f867727..000b866 100644 --- a/src/main/java/frc/robot/subsystems/elevator/Elevator.java +++ b/src/main/java/frc/robot/subsystems/elevator/Elevator.java @@ -95,4 +95,8 @@ public Command stow() { public boolean madeProgress(double percentage) { return inputs.leaderPosition.gt(currentSetpoint.target.times(percentage)); } + + public boolean shouldEjectFast() { + return currentSetpoint == Setpoint.L4; + } } diff --git a/src/main/java/frc/robot/util/BDXboxController.java b/src/main/java/frc/robot/util/BDXboxController.java new file mode 100644 index 0000000..9e6b9ff --- /dev/null +++ b/src/main/java/frc/robot/util/BDXboxController.java @@ -0,0 +1,66 @@ +package frc.robot.util; + +import edu.wpi.first.wpilibj.XboxController.Button; +import edu.wpi.first.wpilibj.event.EventLoop; +import edu.wpi.first.wpilibj2.command.button.CommandXboxController; +import edu.wpi.first.wpilibj2.command.button.Trigger; +import java.util.Arrays; +import java.util.function.IntPredicate; +import java.util.stream.IntStream; + +public class BDXboxController extends CommandXboxController { + /** + * Constructs an instance of a controller. + * + * @param port The port index on the Driver Station that the controller is plugged into. + */ + public BDXboxController(int port) { + super(port); + } + + public boolean getRawButton(int button) { + return getHID().getRawButton(button); + } + + public Trigger allMeetPredicate( + final EventLoop loop, final IntPredicate predicate, final Button... buttons) { + final IntStream stream = Arrays.asList(buttons).stream().mapToInt(b -> b.value); + + return new Trigger(loop, () -> stream.allMatch(predicate)); + } + + public Trigger allMeetPredicate(final IntPredicate predicate, final Button... buttons) { + final IntStream stream = Arrays.asList(buttons).stream().mapToInt(b -> b.value); + + return new Trigger(() -> stream.allMatch(predicate)); + } + + public Trigger anyMeetPredicate( + final EventLoop loop, final IntPredicate predicate, final Button... buttons) { + final IntStream stream = Arrays.asList(buttons).stream().mapToInt(b -> b.value); + + return new Trigger(loop, () -> stream.anyMatch(predicate)); + } + + public Trigger anyMeetPredicate(final IntPredicate predicate, final Button... buttons) { + final IntStream stream = Arrays.asList(buttons).stream().mapToInt(b -> b.value); + + return new Trigger(() -> stream.anyMatch(predicate)); + } + + public Trigger all(final EventLoop loop, final Button... buttons) { + return allMeetPredicate(loop, this::getRawButton, buttons); + } + + public Trigger all(final Button... buttons) { + return allMeetPredicate(this::getRawButton, buttons); + } + + public Trigger any(final EventLoop loop, final Button... buttons) { + return anyMeetPredicate(loop, this::getRawButton, buttons); + } + + public Trigger any(final Button... buttons) { + return anyMeetPredicate(this::getRawButton, buttons); + } +} diff --git a/src/main/java/frc/robot/util/Elastic.java b/src/main/java/frc/robot/util/Elastic.java new file mode 100644 index 0000000..b3d7627 --- /dev/null +++ b/src/main/java/frc/robot/util/Elastic.java @@ -0,0 +1,390 @@ +// Copyright (c) 2023-2025 Gold87 and other Elastic contributors +// This software can be modified and/or shared under the terms +// defined by the Elastic license: +// https://github.com/Gold872/elastic-dashboard/blob/main/LICENSE + +package frc.robot.util; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import edu.wpi.first.networktables.NetworkTableInstance; +import edu.wpi.first.networktables.PubSubOption; +import edu.wpi.first.networktables.StringPublisher; +import edu.wpi.first.networktables.StringTopic; + +public final class Elastic { + private static final StringTopic notificationTopic = + NetworkTableInstance.getDefault().getStringTopic("/Elastic/RobotNotifications"); + private static final StringPublisher notificationPublisher = + notificationTopic.publish(PubSubOption.sendAll(true), PubSubOption.keepDuplicates(true)); + private static final StringTopic selectedTabTopic = + NetworkTableInstance.getDefault().getStringTopic("/Elastic/SelectedTab"); + private static final StringPublisher selectedTabPublisher = + selectedTabTopic.publish(PubSubOption.keepDuplicates(true)); + private static final ObjectMapper objectMapper = new ObjectMapper(); + + /** + * Represents the possible levels of notifications for the Elastic dashboard. These levels are + * used to indicate the severity or type of notification. + */ + public enum NotificationLevel { + /** Informational Message */ + INFO, + /** Warning message */ + WARNING, + /** Error message */ + ERROR + } + + /** + * Sends an notification to the Elastic dashboard. The notification is serialized as a JSON string + * before being published. + * + * @param notification the {@link Notification} object containing notification details + */ + public static void sendNotification(Notification notification) { + try { + notificationPublisher.set(objectMapper.writeValueAsString(notification)); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } + + /** + * Selects the tab of the dashboard with the given name. If no tab matches the name, this will + * have no effect on the widgets or tabs in view. + * + *

If the given name is a number, Elastic will select the tab whose index equals the number + * provided. + * + * @param tabName the name of the tab to select + */ + public static void selectTab(String tabName) { + selectedTabPublisher.set(tabName); + } + + /** + * Selects the tab of the dashboard at the given index. If this index is greater than or equal to + * the number of tabs, this will have no effect. + * + * @param tabIndex the index of the tab to select. + */ + public static void selectTab(int tabIndex) { + selectTab(Integer.toString(tabIndex)); + } + + /** + * Represents an notification object to be sent to the Elastic dashboard. This object holds + * properties such as level, title, description, display time, and dimensions to control how the + * notification is displayed on the dashboard. + */ + public static class Notification { + @JsonProperty("level") + private NotificationLevel level; + + @JsonProperty("title") + private String title; + + @JsonProperty("description") + private String description; + + @JsonProperty("displayTime") + private int displayTimeMillis; + + @JsonProperty("width") + private double width; + + @JsonProperty("height") + private double height; + + /** + * Creates a new Notification with all default parameters. This constructor is intended to be + * used with the chainable decorator methods + * + *

Title and description fields are empty. + */ + public Notification() { + this(NotificationLevel.INFO, "", ""); + } + + /** + * Creates a new Notification with all properties specified. + * + * @param level the level of the notification (e.g., INFO, WARNING, ERROR) + * @param title the title text of the notification + * @param description the descriptive text of the notification + * @param displayTimeMillis the time in milliseconds for which the notification is displayed + * @param width the width of the notification display area + * @param height the height of the notification display area, inferred if below zero + */ + public Notification( + NotificationLevel level, + String title, + String description, + int displayTimeMillis, + double width, + double height) { + this.level = level; + this.title = title; + this.displayTimeMillis = displayTimeMillis; + this.description = description; + this.height = height; + this.width = width; + } + + /** + * Creates a new Notification with default display time and dimensions. + * + * @param level the level of the notification + * @param title the title text of the notification + * @param description the descriptive text of the notification + */ + public Notification(NotificationLevel level, String title, String description) { + this(level, title, description, 3000, 350, -1); + } + + /** + * Creates a new Notification with a specified display time and default dimensions. + * + * @param level the level of the notification + * @param title the title text of the notification + * @param description the descriptive text of the notification + * @param displayTimeMillis the display time in milliseconds + */ + public Notification( + NotificationLevel level, String title, String description, int displayTimeMillis) { + this(level, title, description, displayTimeMillis, 350, -1); + } + + /** + * Creates a new Notification with specified dimensions and default display time. If the height + * is below zero, it is automatically inferred based on screen size. + * + * @param level the level of the notification + * @param title the title text of the notification + * @param description the descriptive text of the notification + * @param width the width of the notification display area + * @param height the height of the notification display area, inferred if below zero + */ + public Notification( + NotificationLevel level, String title, String description, double width, double height) { + this(level, title, description, 3000, width, height); + } + + /** + * Updates the level of this notification + * + * @param level the level to set the notification to + */ + public void setLevel(NotificationLevel level) { + this.level = level; + } + + /** + * @return the level of this notification + */ + public NotificationLevel getLevel() { + return level; + } + + /** + * Updates the title of this notification + * + * @param title the title to set the notification to + */ + public void setTitle(String title) { + this.title = title; + } + + /** + * Gets the title of this notification + * + * @return the title of this notification + */ + public String getTitle() { + return title; + } + + /** + * Updates the description of this notification + * + * @param description the description to set the notification to + */ + public void setDescription(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + /** + * Updates the display time of the notification + * + * @param seconds the number of seconds to display the notification for + */ + public void setDisplayTimeSeconds(double seconds) { + setDisplayTimeMillis((int) Math.round(seconds * 1000)); + } + + /** + * Updates the display time of the notification in milliseconds + * + * @param displayTimeMillis the number of milliseconds to display the notification for + */ + public void setDisplayTimeMillis(int displayTimeMillis) { + this.displayTimeMillis = displayTimeMillis; + } + + /** + * Gets the display time of the notification in milliseconds + * + * @return the number of milliseconds the notification is displayed for + */ + public int getDisplayTimeMillis() { + return displayTimeMillis; + } + + /** + * Updates the width of the notification + * + * @param width the width to set the notification to + */ + public void setWidth(double width) { + this.width = width; + } + + /** + * Gets the width of the notification + * + * @return the width of the notification + */ + public double getWidth() { + return width; + } + + /** + * Updates the height of the notification + * + *

If the height is set to -1, the height will be determined automatically by the dashboard + * + * @param height the height to set the notification to + */ + public void setHeight(double height) { + this.height = height; + } + + /** + * Gets the height of the notification + * + * @return the height of the notification + */ + public double getHeight() { + return height; + } + + /** + * Modifies the notification's level and returns itself to allow for method chaining + * + * @param level the level to set the notification to + * @return the current notification + */ + public Notification withLevel(NotificationLevel level) { + this.level = level; + return this; + } + + /** + * Modifies the notification's title and returns itself to allow for method chaining + * + * @param title the title to set the notification to + * @return the current notification + */ + public Notification withTitle(String title) { + setTitle(title); + return this; + } + + /** + * Modifies the notification's description and returns itself to allow for method chaining + * + * @param description the description to set the notification to + * @return the current notification + */ + public Notification withDescription(String description) { + setDescription(description); + return this; + } + + /** + * Modifies the notification's display time and returns itself to allow for method chaining + * + * @param seconds the number of seconds to display the notification for + * @return the current notification + */ + public Notification withDisplaySeconds(double seconds) { + return withDisplayMilliseconds((int) Math.round(seconds * 1000)); + } + + /** + * Modifies the notification's display time and returns itself to allow for method chaining + * + * @param displayTimeMillis the number of milliseconds to display the notification for + * @return the current notification + */ + public Notification withDisplayMilliseconds(int displayTimeMillis) { + setDisplayTimeMillis(displayTimeMillis); + return this; + } + + /** + * Modifies the notification's width and returns itself to allow for method chaining + * + * @param width the width to set the notification to + * @return the current notification + */ + public Notification withWidth(double width) { + setWidth(width); + return this; + } + + /** + * Modifies the notification's height and returns itself to allow for method chaining + * + * @param height the height to set the notification to + * @return the current notification + */ + public Notification withHeight(double height) { + setHeight(height); + return this; + } + + /** + * Modifies the notification's height and returns itself to allow for method chaining + * + *

This will set the height to -1 to have it automatically determined by the dashboard + * + * @return the current notification + */ + public Notification withAutomaticHeight() { + setHeight(-1); + return this; + } + + /** + * Modifies the notification to disable the auto dismiss behavior + * + *

This sets the display time to 0 milliseconds + * + *

The auto dismiss behavior can be re-enabled by setting the display time to a number + * greater than 0 + * + * @return the current notification + */ + public Notification withNoAutoDismiss() { + setDisplayTimeMillis(0); + return this; + } + } +} From ce97b5c818ae942320746cd6375fa6d908b30854 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Tue, 19 Aug 2025 20:24:07 -0400 Subject: [PATCH 05/11] Implemented climber, switched to MotionMagic for swerve module turning --- src/main/java/frc/robot/RobotContainer.java | 12 ++++ .../robot/subsystems/algae_arm/AlgaeArm.java | 2 +- .../algae_arm/AlgaeArmConstants.java | 16 +++-- .../subsystems/algae_arm/AlgaeArmIOSim.java | 2 +- .../frc/robot/subsystems/climber/Climber.java | 60 +++++++++++++++++++ .../subsystems/climber/ClimberConstants.java | 19 ++++++ .../frc/robot/subsystems/climber/ServoIO.java | 14 +++++ .../robot/subsystems/climber/ServoIOReal.java | 21 +++++++ .../frc/robot/subsystems/drive/Drive.java | 15 +++-- .../subsystems/drive/ModuleIOTalonFX.java | 8 +-- .../subsystems/end_effector/EndEffector.java | 10 +--- .../robot/util/io/talon/TalonFXIOImpl.java | 9 +-- .../robot/util/io/talon/TalonFXIOInputs.java | 25 -------- .../robot/util/io/talon/TalonFXIOSimImpl.java | 5 +- 14 files changed, 155 insertions(+), 63 deletions(-) create mode 100644 src/main/java/frc/robot/subsystems/climber/Climber.java create mode 100644 src/main/java/frc/robot/subsystems/climber/ClimberConstants.java create mode 100644 src/main/java/frc/robot/subsystems/climber/ServoIO.java create mode 100644 src/main/java/frc/robot/subsystems/climber/ServoIOReal.java delete mode 100644 src/main/java/frc/robot/util/io/talon/TalonFXIOInputs.java diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 3a0037d..2447104 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -26,6 +26,8 @@ import frc.robot.generated.TunerConstants; import frc.robot.subsystems.Superstructure; import frc.robot.subsystems.algae_arm.AlgaeArm; +import frc.robot.subsystems.climber.Climber; +import frc.robot.subsystems.climber.ServoIO; import frc.robot.subsystems.drive.Drive; import frc.robot.subsystems.drive.GyroIO; import frc.robot.subsystems.drive.GyroIOPigeon2; @@ -84,6 +86,7 @@ public class RobotContainer { private final EndEffector endEffector; private final Elevator elevator; private final AlgaeArm algaeArm; + private final Climber climber; private final Superstructure superstructure; @@ -185,6 +188,12 @@ public RobotContainer() { break; } + if (Constants.currentMode == Mode.REAL) { + climber = Climber.createReal(); + } else { + climber = new Climber(new TalonFXIO() {}, new ServoIO() {}); + } + superstructure = new Superstructure(endEffector, elevator, algaeArm); PathfindingCommand.warmupCommand().schedule(); @@ -286,6 +295,9 @@ private void configureButtonBindings() { .onFalse(Commands.runOnce(() -> controlMode = ControlMode.Coral)); controller.rightTrigger().and(algaeMode).whileTrue(endEffector.scoreProcessor()); + + controller.povDown().whileTrue(climber.deploy()).onFalse(climber.stop()); + controller.povUp().whileTrue(climber.retract()).onFalse(climber.stop()); } private void configureAutoCommands() { diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java index d118dc9..0f1f258 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java @@ -39,7 +39,7 @@ public void periodic() { } public static AlgaeArm createReal() { - return new AlgaeArm(new TalonFXIOImpl(kMotorID, kBus, kAlgaeArmCallback)); + return new AlgaeArm(new TalonFXIOImpl(kMotorID, kBus, kAlgaeArmConfig)); } public static AlgaeArm createSim() { diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java index 1ee0073..3b93e02 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java @@ -3,19 +3,17 @@ import static edu.wpi.first.units.Units.Amps; import static edu.wpi.first.units.Units.Inches; import static edu.wpi.first.units.Units.Rotations; -import static frc.robot.util.phoenix.PhoenixUtil.tryUntilOk; import com.ctre.phoenix6.CANBus; import com.ctre.phoenix6.configs.CurrentLimitsConfigs; import com.ctre.phoenix6.configs.FeedbackConfigs; import com.ctre.phoenix6.configs.MotionMagicConfigs; import com.ctre.phoenix6.configs.Slot0Configs; -import com.ctre.phoenix6.configs.TalonFXConfigurator; +import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.signals.GravityTypeValue; import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.Distance; import frc.robot.Constants; -import java.util.function.Consumer; public final class AlgaeArmConstants { public static final int kMotorID = 21; @@ -49,10 +47,10 @@ public final class AlgaeArmConstants { .withKG(0.5) .withGravityType(GravityTypeValue.Arm_Cosine); - public static final Consumer kAlgaeArmCallback = - config -> { - tryUntilOk(5, () -> config.apply(kSlot0)); - tryUntilOk(5, () -> config.apply(kCurrentLimits)); - tryUntilOk(5, () -> config.apply(kFeedback)); - }; + public static final TalonFXConfiguration kAlgaeArmConfig = + new TalonFXConfiguration() + .withCurrentLimits(kCurrentLimits) + .withFeedback(kFeedback) + .withMotionMagic(kMotionMagic) + .withSlot0(kSlot0); } diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java index 1131b56..bd30e20 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java @@ -18,7 +18,7 @@ public class AlgaeArmIOSim extends TalonFXIOImpl { private double lastTimestamp = Timer.getTimestamp(); public AlgaeArmIOSim() { - super(kMotorID, kBus, kAlgaeArmCallback); + super(kMotorID, kBus, kAlgaeArmConfig); simState = talon.getSimState(); DCMotor motor = DCMotor.getKrakenX60Foc(1).withReduction(kReduction); diff --git a/src/main/java/frc/robot/subsystems/climber/Climber.java b/src/main/java/frc/robot/subsystems/climber/Climber.java new file mode 100644 index 0000000..4582a19 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/climber/Climber.java @@ -0,0 +1,60 @@ +package frc.robot.subsystems.climber; + +import static frc.robot.subsystems.climber.ClimberConstants.*; + +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import frc.robot.Constants; +import frc.robot.util.io.talon.TalonFXIO; +import frc.robot.util.io.talon.TalonFXIOImpl; +import frc.robot.util.io.talon.TalonFXIOInputsAutoLogged; +import org.littletonrobotics.junction.Logger; + +public class Climber extends SubsystemBase { + private final TalonFXIO motor; + private final TalonFXIOInputsAutoLogged motorInputs = new TalonFXIOInputsAutoLogged(); + + private final ServoIO servo; + private final ServoIOInputsAutoLogged servoInputs = new ServoIOInputsAutoLogged(); + + public Climber(TalonFXIO motorIO, ServoIO servoIO) { + motor = motorIO; + servo = servoIO; + } + + @Override + public void periodic() { + motor.updateInputs(motorInputs); + servo.updateInputs(servoInputs); + + Logger.processInputs("Climber/Motor", motorInputs); + Logger.processInputs("Climber/Servo", servoInputs); + } + + public static Climber createReal() { + return new Climber(new TalonFXIOImpl(kMotorId, Constants.kCanivore), new ServoIOReal(kServoId)); + } + + public Command deploy() { + return runOnce( + () -> { + motor.setDutyCycle(-0.9); + servo.setAngle(80); + }); + } + + public Command retract() { + return runOnce( + () -> { + motor.setDutyCycle(0.9); + }); + } + + public Command stop() { + return runOnce( + () -> { + motor.stopMotor(); + servo.setAngle(50); + }); + } +} diff --git a/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java b/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java new file mode 100644 index 0000000..464d1c8 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java @@ -0,0 +1,19 @@ +package frc.robot.subsystems.climber; + +import com.ctre.phoenix6.configs.CurrentLimitsConfigs; +import com.ctre.phoenix6.configs.MotorOutputConfigs; +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.signals.NeutralModeValue; + +public class ClimberConstants { + public static final int kMotorId = 30; + public static final int kServoId = 0; + + public static final TalonFXConfiguration kMotorConfig = + new TalonFXConfiguration() + .withMotorOutput(new MotorOutputConfigs().withNeutralMode(NeutralModeValue.Brake)) + .withCurrentLimits( + new CurrentLimitsConfigs() + .withStatorCurrentLimit(40) + .withStatorCurrentLimitEnable(true)); +} diff --git a/src/main/java/frc/robot/subsystems/climber/ServoIO.java b/src/main/java/frc/robot/subsystems/climber/ServoIO.java new file mode 100644 index 0000000..83ca9ab --- /dev/null +++ b/src/main/java/frc/robot/subsystems/climber/ServoIO.java @@ -0,0 +1,14 @@ +package frc.robot.subsystems.climber; + +import org.littletonrobotics.junction.AutoLog; + +public interface ServoIO { + @AutoLog + public static class ServoIOInputs { + public double angle = 0; + } + + public default void setAngle(double angle) {} + + public default void updateInputs(ServoIOInputs inputs) {} +} diff --git a/src/main/java/frc/robot/subsystems/climber/ServoIOReal.java b/src/main/java/frc/robot/subsystems/climber/ServoIOReal.java new file mode 100644 index 0000000..c8cc567 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/climber/ServoIOReal.java @@ -0,0 +1,21 @@ +package frc.robot.subsystems.climber; + +import edu.wpi.first.wpilibj.Servo; + +public class ServoIOReal implements ServoIO { + private final Servo servo; + + public ServoIOReal(int channel) { + servo = new Servo(channel); + } + + @Override + public void updateInputs(ServoIOInputs inputs) { + inputs.angle = servo.getAngle(); + } + + @Override + public void setAngle(double angle) { + servo.setAngle(angle); + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/Drive.java b/src/main/java/frc/robot/subsystems/drive/Drive.java index 0327827..d49d3c4 100644 --- a/src/main/java/frc/robot/subsystems/drive/Drive.java +++ b/src/main/java/frc/robot/subsystems/drive/Drive.java @@ -178,18 +178,17 @@ public Drive( public void periodic() { watchdog.reset(); - watchdog.addEpoch("Waiting for odom lock"); odometryLock.lock(); // Prevents odometry updates while reading data + watchdog.addEpoch("Waiting for odom lock"); try { gyroIO.updateInputs(gyroInputs); Logger.processInputs("Drive/Gyro", gyroInputs); int moduleNum = 0; for (var module : modules) { - watchdog.addEpoch("Module " + moduleNum++ + " periodic"); module.periodic(); + watchdog.addEpoch("Module " + moduleNum++ + " periodic"); } - watchdog.addEpoch("Checking if disabled"); } finally { odometryLock.unlock(); } @@ -203,19 +202,17 @@ public void periodic() { Logger.recordOutput("SwerveStates/Setpoints", new SwerveModuleState[] {}); Logger.recordOutput("SwerveStates/SetpointsOptimized", new SwerveModuleState[] {}); } + watchdog.addEpoch("Checking if disabled"); // Update odometry double[] sampleTimestamps = modules[0].getOdometryTimestamps(); // All signals are sampled together int sampleCount = sampleTimestamps.length; for (int i = 0; i < sampleCount; i++) { - watchdog.addEpoch("Processing sample " + i); // Read wheel positions and deltas from each module SwerveModulePosition[] modulePositions = new SwerveModulePosition[4]; SwerveModulePosition[] moduleDeltas = new SwerveModulePosition[4]; for (int moduleIndex = 0; moduleIndex < 4; moduleIndex++) { - watchdog.addEpoch("Processing sample " + i + " for module " + moduleIndex); - modulePositions[moduleIndex] = modules[moduleIndex].getOdometryPositions()[i]; moduleDeltas[moduleIndex] = new SwerveModulePosition( @@ -223,9 +220,10 @@ public void periodic() { - lastModulePositions[moduleIndex].distanceMeters, modulePositions[moduleIndex].angle); lastModulePositions[moduleIndex] = modulePositions[moduleIndex]; + + watchdog.addEpoch("Processing sample " + i + " for module " + moduleIndex); } - watchdog.addEpoch("Updating gyro for sample" + i); // Update gyro angle if (gyroInputs.connected) { // Use the real gyro angle @@ -235,10 +233,11 @@ public void periodic() { Twist2d twist = kinematics.toTwist2d(moduleDeltas); rawGyroRotation = rawGyroRotation.plus(new Rotation2d(twist.dtheta)); } + watchdog.addEpoch("Updating gyro for sample" + i); - watchdog.addEpoch("Adding sample " + i + " to pose estimator"); // Apply update poseEstimator.updateWithTime(sampleTimestamps[i], rawGyroRotation, modulePositions); + watchdog.addEpoch("Adding sample " + i + " to pose estimator"); } // Update gyro alert diff --git a/src/main/java/frc/robot/subsystems/drive/ModuleIOTalonFX.java b/src/main/java/frc/robot/subsystems/drive/ModuleIOTalonFX.java index ba370a7..6227811 100644 --- a/src/main/java/frc/robot/subsystems/drive/ModuleIOTalonFX.java +++ b/src/main/java/frc/robot/subsystems/drive/ModuleIOTalonFX.java @@ -13,7 +13,7 @@ import com.ctre.phoenix6.StatusSignal; import com.ctre.phoenix6.configs.CANcoderConfiguration; import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.controls.PositionTorqueCurrentFOC; +import com.ctre.phoenix6.controls.MotionMagicTorqueCurrentFOC; import com.ctre.phoenix6.controls.PositionVoltage; import com.ctre.phoenix6.controls.TorqueCurrentFOC; import com.ctre.phoenix6.controls.VelocityTorqueCurrentFOC; @@ -60,8 +60,8 @@ public class ModuleIOTalonFX implements ModuleIO { // Torque-current control requests private final TorqueCurrentFOC torqueCurrentRequest = new TorqueCurrentFOC(0); - private final PositionTorqueCurrentFOC positionTorqueCurrentRequest = - new PositionTorqueCurrentFOC(0.0); + private final MotionMagicTorqueCurrentFOC positionTorqueCurrentRequest = + new MotionMagicTorqueCurrentFOC(0.0); private final VelocityTorqueCurrentFOC velocityTorqueCurrentRequest = new VelocityTorqueCurrentFOC(0.0); @@ -128,7 +128,7 @@ public ModuleIOTalonFX( turnConfig.Feedback.RotorToSensorRatio = constants.SteerMotorGearRatio; turnConfig.MotionMagic.MotionMagicCruiseVelocity = 100.0 / constants.SteerMotorGearRatio; turnConfig.MotionMagic.MotionMagicAcceleration = - turnConfig.MotionMagic.MotionMagicCruiseVelocity / 0.100; + turnConfig.MotionMagic.MotionMagicCruiseVelocity * 7.5; turnConfig.MotionMagic.MotionMagicExpo_kV = 0.12 * constants.SteerMotorGearRatio; turnConfig.MotionMagic.MotionMagicExpo_kA = 0.1; turnConfig.ClosedLoopGeneral.ContinuousWrap = true; diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java index 60b4ce5..3d7f069 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java @@ -4,6 +4,7 @@ import static frc.robot.subsystems.end_effector.EndEffectorConstants.*; import com.ctre.phoenix6.configs.CurrentLimitsConfigs; +import com.ctre.phoenix6.configs.TalonFXConfiguration; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; @@ -14,7 +15,6 @@ import frc.robot.util.io.talon.TalonFXIOImpl; import frc.robot.util.io.talon.TalonFXIOInputsAutoLogged; import frc.robot.util.io.talon.TalonFXIOSimImpl; -import frc.robot.util.phoenix.PhoenixUtil; import java.util.function.BooleanSupplier; import org.littletonrobotics.junction.Logger; @@ -46,13 +46,7 @@ public static EndEffector createReal() { return new EndEffector( new TalonFXIOImpl( - kMotorID, - kMotorBus, - config -> - PhoenixUtil.tryUntilOk( - 5, - () -> config.apply(configs), - "Could not apply end effector motor current limits")), + kMotorID, kMotorBus, new TalonFXConfiguration().withCurrentLimits(configs)), new BeamBreakIODIO(kEntranceBreakerID), new BeamBreakIODIO(kExitBreakerID), true); diff --git a/src/main/java/frc/robot/util/io/talon/TalonFXIOImpl.java b/src/main/java/frc/robot/util/io/talon/TalonFXIOImpl.java index e6fb4d3..c84ae41 100644 --- a/src/main/java/frc/robot/util/io/talon/TalonFXIOImpl.java +++ b/src/main/java/frc/robot/util/io/talon/TalonFXIOImpl.java @@ -1,10 +1,12 @@ package frc.robot.util.io.talon; +import static frc.robot.util.phoenix.PhoenixUtil.tryUntilOk; + import com.ctre.phoenix6.BaseStatusSignal; import com.ctre.phoenix6.CANBus; import com.ctre.phoenix6.StatusCode; import com.ctre.phoenix6.StatusSignal; -import com.ctre.phoenix6.configs.TalonFXConfigurator; +import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.controls.DutyCycleOut; import com.ctre.phoenix6.controls.PositionTorqueCurrentFOC; import com.ctre.phoenix6.hardware.TalonFX; @@ -14,7 +16,6 @@ import edu.wpi.first.units.measure.Current; import edu.wpi.first.units.measure.Temperature; import edu.wpi.first.units.measure.Voltage; -import java.util.function.Consumer; public class TalonFXIOImpl implements TalonFXIO { protected final TalonFX talon; @@ -60,10 +61,10 @@ public TalonFXIOImpl(int port, CANBus bus) { }; } - public TalonFXIOImpl(int port, CANBus bus, Consumer config) { + public TalonFXIOImpl(int port, CANBus bus, TalonFXConfiguration config) { this(port, bus); - config.accept(talon.getConfigurator()); + tryUntilOk(5, () -> talon.getConfigurator().apply(config)); } @Override diff --git a/src/main/java/frc/robot/util/io/talon/TalonFXIOInputs.java b/src/main/java/frc/robot/util/io/talon/TalonFXIOInputs.java deleted file mode 100644 index b49d79b..0000000 --- a/src/main/java/frc/robot/util/io/talon/TalonFXIOInputs.java +++ /dev/null @@ -1,25 +0,0 @@ -package frc.robot.util.io.talon; - -import static edu.wpi.first.units.Units.Amps; -import static edu.wpi.first.units.Units.Celsius; -import static edu.wpi.first.units.Units.Rotations; -import static edu.wpi.first.units.Units.RotationsPerSecond; -import static edu.wpi.first.units.Units.RotationsPerSecondPerSecond; -import static edu.wpi.first.units.Units.Volts; - -import edu.wpi.first.units.measure.Angle; -import edu.wpi.first.units.measure.AngularAcceleration; -import edu.wpi.first.units.measure.AngularVelocity; -import edu.wpi.first.units.measure.Current; -import edu.wpi.first.units.measure.Temperature; -import edu.wpi.first.units.measure.Voltage; - -public class TalonFXIOInputs { - public boolean connected = false; - public Angle position = Rotations.of(0); - public AngularVelocity velocity = RotationsPerSecond.of(0); - public AngularAcceleration acceleration = RotationsPerSecondPerSecond.of(0); - public Voltage appliedVoltage = Volts.of(0); - public Current supplyCurrent = Amps.of(0), torqueCurrent = Amps.of(0); - public Temperature temp = Celsius.of(0); -} diff --git a/src/main/java/frc/robot/util/io/talon/TalonFXIOSimImpl.java b/src/main/java/frc/robot/util/io/talon/TalonFXIOSimImpl.java index 97938a0..b3da713 100644 --- a/src/main/java/frc/robot/util/io/talon/TalonFXIOSimImpl.java +++ b/src/main/java/frc/robot/util/io/talon/TalonFXIOSimImpl.java @@ -2,7 +2,7 @@ import com.ctre.phoenix6.CANBus; import com.ctre.phoenix6.Utils; -import com.ctre.phoenix6.configs.TalonFXConfigurator; +import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.sim.TalonFXSimState; import edu.wpi.first.math.system.plant.DCMotor; import edu.wpi.first.math.system.plant.LinearSystemId; @@ -10,7 +10,6 @@ import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj.simulation.DCMotorSim; -import java.util.function.Consumer; public final class TalonFXIOSimImpl extends TalonFXIOImpl { private final DCMotorSim physicsSim; @@ -35,7 +34,7 @@ public TalonFXIOSimImpl( int port, CANBus bus, boolean enableFOC, - Consumer config, + TalonFXConfiguration config, double moi, double reduction) { super(port, bus, config); From b19aa3ed19482df415ad57519e3fe00213d05deb Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Tue, 23 Sep 2025 17:06:15 -0400 Subject: [PATCH 06/11] General improvements --- .../pathplanner/autos/Own Side 4pc.auto | 12 +++ .../paths/Branch J to Left CS.path | 91 +++++++++++++++++++ .../paths/Own Cage to Branch J.path | 8 +- src/main/java/frc/robot/RobotContainer.java | 8 +- .../frc/robot/subsystems/Superstructure.java | 4 + .../robot/subsystems/algae_arm/AlgaeArm.java | 3 +- .../robot/subsystems/elevator/Elevator.java | 25 ++--- .../elevator/ElevatorConstants.java | 2 +- .../robot/subsystems/elevator/ElevatorIO.java | 6 +- .../elevator/ElevatorIOTalonFX.java | 28 +++--- .../subsystems/end_effector/EndEffector.java | 1 + .../end_effector/EndEffectorConstants.java | 6 +- 12 files changed, 150 insertions(+), 44 deletions(-) create mode 100644 src/main/deploy/pathplanner/paths/Branch J to Left CS.path diff --git a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto index 387e82c..a44a058 100644 --- a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto +++ b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto @@ -15,6 +15,18 @@ "data": { "name": "score_coral" } + }, + { + "type": "path", + "data": { + "pathName": "Branch J to Left CS" + } + }, + { + "type": "named", + "data": { + "name": "coral_intake" + } } ] } diff --git a/src/main/deploy/pathplanner/paths/Branch J to Left CS.path b/src/main/deploy/pathplanner/paths/Branch J to Left CS.path new file mode 100644 index 0000000..20f146a --- /dev/null +++ b/src/main/deploy/pathplanner/paths/Branch J to Left CS.path @@ -0,0 +1,91 @@ +{ + "version": "2025.0", + "waypoints": [ + { + "anchor": { + "x": 5.025681818181818, + "y": 5.27643465909091 + }, + "prevControl": null, + "nextControl": { + "x": 4.851084662804219, + "y": 5.455364347331992 + }, + "isLocked": false, + "linkedName": "Branch J" + }, + { + "anchor": { + "x": 4.337642045454546, + "y": 6.024303977272727 + }, + "prevControl": { + "x": 4.736059652283863, + "y": 5.725808536121974 + }, + "nextControl": { + "x": 3.8236001165089073, + "y": 6.409425442088779 + }, + "isLocked": false, + "linkedName": null + }, + { + "anchor": { + "x": 1.6153977272727271, + "y": 7.300667613636364 + }, + "prevControl": { + "x": 2.239728575541882, + "y": 7.020369433743416 + }, + "nextControl": null, + "isLocked": false, + "linkedName": null + } + ], + "rotationTargets": [], + "constraintZones": [ + { + "name": "Elevator slow", + "minWaypointRelativePos": 0, + "maxWaypointRelativePos": 0.6, + "constraints": { + "maxVelocity": 4.73, + "maxAcceleration": 3.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + } + } + ], + "pointTowardsZones": [], + "eventMarkers": [ + { + "name": "elevator_stow", + "waypointRelativePos": 0.36075322101090235, + "endWaypointRelativePos": null, + "command": null + } + ], + "globalConstraints": { + "maxVelocity": 4.73, + "maxAcceleration": 5.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + }, + "goalEndState": { + "velocity": 0, + "rotation": -54.0 + }, + "reversed": false, + "folder": "To Coral Station", + "idealStartingState": { + "velocity": 0, + "rotation": -119.99999999999999 + }, + "useDefaultConstraints": true +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path b/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path index 67b621d..07bfa03 100644 --- a/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path +++ b/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path @@ -33,15 +33,15 @@ "pointTowardsZones": [], "eventMarkers": [ { - "name": "elevatorl3", + "name": "elevator_l3", "waypointRelativePos": 0.8, "endWaypointRelativePos": null, "command": null } ], "globalConstraints": { - "maxVelocity": 4.73, - "maxAcceleration": 5.0, + "maxVelocity": 4.0, + "maxAcceleration": 3.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, @@ -57,5 +57,5 @@ "velocity": 0.0, "rotation": -135.0 }, - "useDefaultConstraints": true + "useDefaultConstraints": false } \ No newline at end of file diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 2447104..c9fbe4d 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -219,6 +219,7 @@ public RobotContainer() { // Configure the button bindings configureButtonBindings(); + configureAutoCommands(); SmartDashboard.putData("Field", field); } @@ -301,12 +302,13 @@ private void configureButtonBindings() { } private void configureAutoCommands() { - // use NamedCommands for commands run outside of paths, EventTriggers for inside - // of paths only. - + NamedCommands.registerCommand("elevator_stow", elevator.setTarget(Setpoint.Stowed)); NamedCommands.registerCommand("elevator_l3", elevator.setTarget(Setpoint.L3)); NamedCommands.registerCommand("elevator_l4", elevator.setTarget(Setpoint.L4)); + NamedCommands.registerCommand("coral_intake", endEffector.autoIntake(true)); + NamedCommands.registerCommand("coral_jog", superstructure.intakeCoralThenL3()); NamedCommands.registerCommand("score_coral", superstructure.scoreCoral(true)); + NamedCommands.registerCommand("score_barge", superstructure.bargeShot()); } private Command joystickApproach(Supplier approach) { diff --git a/src/main/java/frc/robot/subsystems/Superstructure.java b/src/main/java/frc/robot/subsystems/Superstructure.java index e15ef06..c137dd9 100644 --- a/src/main/java/frc/robot/subsystems/Superstructure.java +++ b/src/main/java/frc/robot/subsystems/Superstructure.java @@ -38,4 +38,8 @@ public Command scoreCoral(boolean inAuto) { public Command algaeMode() { return endEffector.intakeAlgae().alongWith(algaeArm.deploy()); } + + public Command intakeCoralThenL3() { + return endEffector.autoIntake(true).andThen(elevator.setTarget(Setpoint.L3)); + } } diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java index 0f1f258..1f5c697 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java @@ -50,7 +50,8 @@ public Command deploy() { return Commands.sequence( runOnce(() -> io.setDutyCycle(.8)), Commands.waitUntil(hasDeployed), - runOnce(() -> io.stopMotor())); + runOnce(() -> io.stopMotor()), + Commands.idle(this)); } public Command stow() { diff --git a/src/main/java/frc/robot/subsystems/elevator/Elevator.java b/src/main/java/frc/robot/subsystems/elevator/Elevator.java index 000b866..853a25a 100644 --- a/src/main/java/frc/robot/subsystems/elevator/Elevator.java +++ b/src/main/java/frc/robot/subsystems/elevator/Elevator.java @@ -2,6 +2,9 @@ import static edu.wpi.first.units.Units.Rotations; +import java.util.HashMap; +import java.util.Map; + import edu.wpi.first.units.measure.Angle; import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.Command; @@ -11,7 +14,7 @@ public class Elevator extends SubsystemBase { public static enum Setpoint { - Stowed(0), + Stowed(0.25), L2(1.67), L3(2.82), L4(4.7), @@ -56,7 +59,8 @@ public boolean isAlgae() { private final ElevatorIO io; private final ElevatorIOInputsAutoLogged inputs = new ElevatorIOInputsAutoLogged(); - private Setpoint lastSetpoint = Setpoint.Stowed, currentSetpoint = Setpoint.Stowed; + private Setpoint currentSetpoint = Setpoint.Stowed; + private final Map cachedCommands = new HashMap<>(Setpoint.values().length); public final Trigger isAtSetpoint = new Trigger(() -> inputs.leaderPosition.isNear(currentSetpoint.target, Rotations.of(0.05))); @@ -73,23 +77,14 @@ public void periodic() { SmartDashboard.putNumber("Elevator Setpoint", currentSetpoint.target.in(Rotations)); } - private void setRotationalTarget(Angle rots) { - io.setTarget(rots, lastSetpoint.isElevated() && currentSetpoint.isElevated()); - } - - private void newSetpoint(Setpoint setpoint) { - lastSetpoint = currentSetpoint; - currentSetpoint = setpoint; - } - public Command setTarget(Setpoint setpoint) { - return runOnce(() -> setRotationalTarget(setpoint.target)) - .beforeStarting(() -> newSetpoint(setpoint)); + return cachedCommands.computeIfAbsent(setpoint, s -> runOnce( + () -> io.setTarget(setpoint) + ).beforeStarting(() -> currentSetpoint = s)); } public Command stow() { - return runOnce(() -> setRotationalTarget(Setpoint.Stowed.target)) - .beforeStarting(() -> newSetpoint(Setpoint.Stowed)); + return setTarget(Setpoint.Stowed); } public boolean madeProgress(double percentage) { diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java index efa8056..fe19ce4 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java @@ -16,7 +16,7 @@ public final class ElevatorConstants { public static final class Trapezoidal { public static final AngularVelocity kMaxVelocity = RotationsPerSecond.of(15); - public static final AngularAcceleration kMaxAcceleration = RotationsPerSecondPerSecond.of(35); + public static final AngularAcceleration kMaxAcceleration = RotationsPerSecondPerSecond.of(40); public static final Velocity kMaxJerk = RotationsPerSecondPerSecond.per(Second).of(100); } diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java index bdfdcd1..efd570e 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java @@ -8,6 +8,8 @@ import static edu.wpi.first.units.Units.Volts; import edu.wpi.first.units.measure.*; +import frc.robot.subsystems.elevator.Elevator.Setpoint; + import org.littletonrobotics.junction.AutoLog; public interface ElevatorIO { @@ -31,7 +33,5 @@ public static class ElevatorIOInputs { default void updateInputs(ElevatorIOInputs inputs) {} - default void setTarget(Angle angle, boolean useTrapezoidal) {} - - default void stow() {} + default void setTarget(Setpoint setpoint) {} } diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java index edb9e0e..77faf81 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java @@ -17,12 +17,15 @@ import com.ctre.phoenix6.controls.MotionMagicExpoTorqueCurrentFOC; import com.ctre.phoenix6.hardware.TalonFX; import com.ctre.phoenix6.signals.NeutralModeValue; + +import edu.wpi.first.math.MathUtil; import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.AngularAcceleration; import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.units.measure.Current; import edu.wpi.first.units.measure.Voltage; import frc.robot.subsystems.elevator.Elevator.Setpoint; +import lombok.val; public sealed class ElevatorIOTalonFX implements ElevatorIO permits ElevatorIOSim { protected final TalonFX leader = new TalonFX(kLeaderId, kMotorBus); @@ -66,7 +69,7 @@ public sealed class ElevatorIOTalonFX implements ElevatorIO permits ElevatorIOSi /** Control request for moving up to a setpoint, or for stowing the carriage */ private final MotionMagicExpoTorqueCurrentFOC exponential = new MotionMagicExpoTorqueCurrentFOC(0) - .withUpdateFreqHz(Hertz.of(200)) + .withUpdateFreqHz(1000) .withFeedForward(Amps.of(8)); /** Control request for moving between setpoints, where neither is from stow */ private final DynamicMotionMagicTorqueCurrentFOC trapezoidal = @@ -75,7 +78,7 @@ public sealed class ElevatorIOTalonFX implements ElevatorIO permits ElevatorIOSi Trapezoidal.kMaxVelocity, Trapezoidal.kMaxAcceleration, Trapezoidal.kMaxJerk) - .withUseTimesync(true) + .withUpdateFreqHz(1000) .withFeedForward(Amps.of(8)); public ElevatorIOTalonFX() { @@ -107,7 +110,9 @@ public ElevatorIOTalonFX() { tryUntilOk(5, () -> leader.getConfigurator().apply(config)); tryUntilOk(5, () -> follower.getConfigurator().apply(config)); - tryUntilOk(5, () -> follower.setControl(new Follower(kLeaderId, true))); + tryUntilOk(5, () -> follower.setControl( + new Follower(kLeaderId, true) + .withUpdateFreqHz(1000))); leader.setPosition(0); leader.setNeutralMode(NeutralModeValue.Brake); @@ -148,20 +153,15 @@ public void updateInputs(ElevatorIOInputs inputs) { } @Override - public void setTarget(Angle angle, boolean useTrapezoidal) { - ControlRequest req; + public void setTarget(Setpoint setpoint) { + final ControlRequest request; - if (useTrapezoidal) { - req = trapezoidal.withPosition(angle).withSlot(2); + if (setpoint == Setpoint.Stowed) { + request = trapezoidal.withPosition(setpoint.target); } else { - req = exponential.withPosition(angle).withSlot(0); + request = exponential.withPosition(setpoint.target); } - leader.setControl(req); - } - - @Override - public void stow() { - leader.setControl(exponential.withPosition(0).withSlot(1)); + leader.setControl(request); } } diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java index 3d7f069..f2b67e5 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java @@ -34,6 +34,7 @@ public EndEffector(TalonFXIO motor, BeamBreakIO entrance, BeamBreakIO exit, bool setDefaultCommand(teleIntake()); jogDuringIntake = jog; + SmartDashboard.putBoolean("Demo Intake", false); } public static EndEffector createReal() { diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java index 2b09f57..dc02b43 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java @@ -10,9 +10,9 @@ public final class EndEffectorConstants { kSlowEjectSpeed = .3, kAlgaeBargeSpeed = 1, kAlgaeProcessorSpeed = 0.3, - kIdleSpeed = .25, - kIntakeSpeed = 0.125, - kDriveBackSpeed = 0.1; + kIdleSpeed = .175, + kIntakeSpeed = 0.1, + kDriveBackSpeed = 0.075; // TODO: TUNE THIS VALUE (ASK MARK/BRENNAN) public static final double kSystemMOI = 0.02; From f6d6eacc467d362ba5ecf0c11d691d89c1cc6bbf Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Mon, 29 Sep 2025 15:52:33 -0400 Subject: [PATCH 07/11] Fixed some logic, started autos --- .../pathplanner/autos/Own Side 4pc.auto | 12 + .../paths/Branch J to Left CS.path | 33 +-- .../paths/Left CS to Branch K.path | 91 +++++++ .../paths/Own Cage to Branch J.path | 25 +- src/main/deploy/pathplanner/settings.json | 2 +- src/main/java/frc/robot/Constants.java | 1 + src/main/java/frc/robot/Robot.java | 78 +++--- src/main/java/frc/robot/RobotContainer.java | 132 ++++------ src/main/java/frc/robot/RobotSimState.java | 11 - .../frc/robot/commands/DriveCommands.java | 94 +------ .../frc/robot/generated/TunerConstants.java | 34 +-- .../frc/robot/subsystems/Superstructure.java | 12 +- .../robot/subsystems/algae_arm/AlgaeArm.java | 49 +--- .../algae_arm/AlgaeArmConstants.java | 35 +-- .../subsystems/algae_arm/AlgaeArmIO.java | 25 ++ .../subsystems/algae_arm/AlgaeArmIOSim.java | 16 +- .../algae_arm/AlgaeArmIOTalonFX.java | 53 ++++ .../frc/robot/subsystems/climber/Climber.java | 55 ++--- .../subsystems/climber/ClimberConstants.java | 10 +- .../robot/subsystems/climber/ClimberIO.java | 26 ++ .../subsystems/climber/ClimberIOReal.java | 49 ++++ .../frc/robot/subsystems/climber/ServoIO.java | 14 -- .../robot/subsystems/climber/ServoIOReal.java | 21 -- .../frc/robot/subsystems/drive/Drive.java | 141 +++++------ .../robot/subsystems/elevator/Elevator.java | 25 +- .../elevator/ElevatorConstants.java | 4 +- .../robot/subsystems/elevator/ElevatorIO.java | 1 - .../elevator/ElevatorIOTalonFX.java | 11 +- .../subsystems/end_effector/EndEffector.java | 21 +- .../end_effector/EndEffectorConstants.java | 3 +- .../subsystems/vision/RegisteredCamera.java | 108 ++++++++ .../vision/RegisteredSimCamera.java | 61 +++++ .../frc/robot/subsystems/vision/Vision.java | 233 +++++++----------- .../subsystems/vision/VisionConstants.java | 94 +++---- .../frc/robot/subsystems/vision/VisionIO.java | 80 +++--- .../vision/VisionIOPhotonVision.java | 125 ---------- .../vision/VisionIOPhotonVisionSim.java | 54 ---- .../subsystems/vision/VisionOdometry.java | 64 +++++ src/main/java/frc/robot/util/Allocated.java | 22 ++ src/main/java/frc/robot/util/Lazy.java | 21 ++ .../frc/robot/util/ParallelizedOdometry.java | 52 ++++ 41 files changed, 1058 insertions(+), 940 deletions(-) create mode 100644 src/main/deploy/pathplanner/paths/Left CS to Branch K.path delete mode 100644 src/main/java/frc/robot/RobotSimState.java create mode 100644 src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIO.java create mode 100644 src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOTalonFX.java create mode 100644 src/main/java/frc/robot/subsystems/climber/ClimberIO.java create mode 100644 src/main/java/frc/robot/subsystems/climber/ClimberIOReal.java delete mode 100644 src/main/java/frc/robot/subsystems/climber/ServoIO.java delete mode 100644 src/main/java/frc/robot/subsystems/climber/ServoIOReal.java create mode 100644 src/main/java/frc/robot/subsystems/vision/RegisteredCamera.java create mode 100644 src/main/java/frc/robot/subsystems/vision/RegisteredSimCamera.java delete mode 100644 src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java delete mode 100644 src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java create mode 100644 src/main/java/frc/robot/subsystems/vision/VisionOdometry.java create mode 100644 src/main/java/frc/robot/util/Allocated.java create mode 100644 src/main/java/frc/robot/util/Lazy.java create mode 100644 src/main/java/frc/robot/util/ParallelizedOdometry.java diff --git a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto index a44a058..84d6f0a 100644 --- a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto +++ b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto @@ -27,6 +27,18 @@ "data": { "name": "coral_intake" } + }, + { + "type": "path", + "data": { + "pathName": "Left CS to Branch K" + } + }, + { + "type": "named", + "data": { + "name": "score_coral" + } } ] } diff --git a/src/main/deploy/pathplanner/paths/Branch J to Left CS.path b/src/main/deploy/pathplanner/paths/Branch J to Left CS.path index 20f146a..cdd3d21 100644 --- a/src/main/deploy/pathplanner/paths/Branch J to Left CS.path +++ b/src/main/deploy/pathplanner/paths/Branch J to Left CS.path @@ -3,13 +3,13 @@ "waypoints": [ { "anchor": { - "x": 5.025681818181818, - "y": 5.27643465909091 + "x": 5.035, + "y": 5.25 }, "prevControl": null, "nextControl": { - "x": 4.851084662804219, - "y": 5.455364347331992 + "x": 4.91825858778626, + "y": 5.585768129770992 }, "isLocked": false, "linkedName": "Branch J" @@ -20,12 +20,12 @@ "y": 6.024303977272727 }, "prevControl": { - "x": 4.736059652283863, - "y": 5.725808536121974 + "x": 5.017651888559972, + "y": 5.377055366251678 }, "nextControl": { - "x": 3.8236001165089073, - "y": 6.409425442088779 + "x": 3.711164038856905, + "y": 6.620599786394851 }, "isLocked": false, "linkedName": null @@ -36,12 +36,12 @@ "y": 7.300667613636364 }, "prevControl": { - "x": 2.239728575541882, - "y": 7.020369433743416 + "x": 1.7799223233224872, + "y": 7.112434626902733 }, "nextControl": null, "isLocked": false, - "linkedName": null + "linkedName": "Left CS Outside" } ], "rotationTargets": [], @@ -64,14 +64,19 @@ "eventMarkers": [ { "name": "elevator_stow", - "waypointRelativePos": 0.36075322101090235, + "waypointRelativePos": 0.4, "endWaypointRelativePos": null, - "command": null + "command": { + "type": "named", + "data": { + "name": "elevator_stow" + } + } } ], "globalConstraints": { "maxVelocity": 4.73, - "maxAcceleration": 5.0, + "maxAcceleration": 4.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/paths/Left CS to Branch K.path b/src/main/deploy/pathplanner/paths/Left CS to Branch K.path new file mode 100644 index 0000000..1d14903 --- /dev/null +++ b/src/main/deploy/pathplanner/paths/Left CS to Branch K.path @@ -0,0 +1,91 @@ +{ + "version": "2025.0", + "waypoints": [ + { + "anchor": { + "x": 1.6153977272727271, + "y": 7.300667613636364 + }, + "prevControl": null, + "nextControl": { + "x": 2.3322726019898568, + "y": 6.725789978541568 + }, + "isLocked": false, + "linkedName": "Left CS Outside" + }, + { + "anchor": { + "x": 3.935, + "y": 5.25 + }, + "prevControl": { + "x": 3.034358556076907, + "y": 5.992592821541219 + }, + "nextControl": null, + "isLocked": false, + "linkedName": "Branch K" + } + ], + "rotationTargets": [], + "constraintZones": [ + { + "name": "Elevator Slow", + "minWaypointRelativePos": 0.6, + "maxWaypointRelativePos": 1.0, + "constraints": { + "maxVelocity": 4.73, + "maxAcceleration": 3.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + } + } + ], + "pointTowardsZones": [], + "eventMarkers": [ + { + "name": "coral_jog", + "waypointRelativePos": 0.0, + "endWaypointRelativePos": null, + "command": { + "type": "named", + "data": { + "name": "coral_jog" + } + } + }, + { + "name": "elevator_l4", + "waypointRelativePos": 0.8, + "endWaypointRelativePos": null, + "command": { + "type": "named", + "data": { + "name": "elevator_l4" + } + } + } + ], + "globalConstraints": { + "maxVelocity": 4.73, + "maxAcceleration": 4.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + }, + "goalEndState": { + "velocity": 0, + "rotation": -59.99999999999999 + }, + "reversed": false, + "folder": "To Reef", + "idealStartingState": { + "velocity": 0, + "rotation": -54.0 + }, + "useDefaultConstraints": true +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path b/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path index 07bfa03..2e339fc 100644 --- a/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path +++ b/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path @@ -3,25 +3,25 @@ "waypoints": [ { "anchor": { - "x": 7.15, + "x": 7.0, "y": 6.15 }, "prevControl": null, "nextControl": { - "x": 7.37915404232744, - "y": 6.249942107667359 + "x": 6.031808434661551, + "y": 5.688957694627683 }, "isLocked": false, "linkedName": "Own Cage" }, { "anchor": { - "x": 5.025681818181818, - "y": 5.27643465909091 + "x": 5.035, + "y": 5.25 }, "prevControl": { - "x": 5.4052670752795935, - "y": 5.43522218089631 + "x": 5.510795884425652, + "y": 5.488459919417843 }, "nextControl": null, "isLocked": false, @@ -33,10 +33,15 @@ "pointTowardsZones": [], "eventMarkers": [ { - "name": "elevator_l3", - "waypointRelativePos": 0.8, + "name": "elevator_l4", + "waypointRelativePos": 0.4, "endWaypointRelativePos": null, - "command": null + "command": { + "type": "named", + "data": { + "name": "elevator_l4" + } + } } ], "globalConstraints": { diff --git a/src/main/deploy/pathplanner/settings.json b/src/main/deploy/pathplanner/settings.json index 2ed879e..673258f 100644 --- a/src/main/deploy/pathplanner/settings.json +++ b/src/main/deploy/pathplanner/settings.json @@ -10,7 +10,7 @@ ], "autoFolders": [], "defaultMaxVel": 4.73, - "defaultMaxAccel": 5.0, + "defaultMaxAccel": 4.0, "defaultMaxAngVel": 540.0, "defaultMaxAngAccel": 720.0, "defaultNominalVoltage": 12.0, diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index a68dcd6..3cfed23 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -20,6 +20,7 @@ public final class Constants { public static final Mode simMode = Mode.SIM; public static final Mode currentMode = RobotBase.isReal() ? Mode.REAL : simMode; + public static final boolean DEVBOT = false; public static final double TotalMemory = 100 * 1024 * 1024; diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 470452b..81467ee 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -12,7 +12,10 @@ import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.CommandScheduler; -import frc.robot.autopilot.Quadrant; +import frc.robot.util.Elastic; +import frc.robot.util.Elastic.Notification; +import frc.robot.util.Elastic.NotificationLevel; +import lombok.val; import org.littletonrobotics.junction.LogFileUtil; import org.littletonrobotics.junction.LoggedRobot; import org.littletonrobotics.junction.Logger; @@ -30,7 +33,23 @@ public class Robot extends LoggedRobot { private Command autonomousCommand; private final RobotContainer robotContainer; - public Robot() { + // alert to display if preallocated memory is + private static final Notification kFullHeapNotification = + new Notification() + .withDescription( + "Used memory is more than 90% of preallocated memory, should increase amount of preallocated memory") + .withLevel(NotificationLevel.WARNING) + .withNoAutoDismiss(); + + private static final Notification kUnusedHeapNotification = + new Notification() + .withDescription( + "Used memory is less than 50% of preallocated memory, should reduce amount of preallocated memory") + .withLevel(NotificationLevel.WARNING) + .withNoAutoDismiss(); + + public Robot() { + // Preload subsystem classes ClassPreloader.preload( "frc.robot.RobotContainer", "frc.robot.subsystems.drive.Drive", @@ -97,6 +116,24 @@ public Robot() { /** This function is called periodically during all modes. */ @Override public void robotPeriodic() { + val rt = Runtime.getRuntime(); + + val usedMem = (double)(rt.totalMemory() - rt.freeMemory()); + + Logger.recordOutput("Robot/Utilized Memory %", usedMem / (double)rt.totalMemory()); + Logger.runEveryN( + // run every second + 2500, + () -> { + if (usedMem >= 0.9 * Constants.TotalMemory) { + // If memory utilization is too high, send an alert to increase allocated heap size in JVM args + Elastic.sendNotification(kFullHeapNotification); + } else if (usedMem <= 0.5 * Constants.TotalMemory) { + // If memory utilization is too low, send an alert to decrease allocated heap size in JVM args + Elastic.sendNotification(kUnusedHeapNotification); + } + }); + // Optionally switch the thread to high priority to improve loop // timing (see the template project documentation for details) // Threads.setCurrentThreadPriority(true, 99); @@ -117,20 +154,11 @@ public void robotPeriodic() { /** This function is called once when the robot is disabled. */ @Override public void disabledInit() { - new Thread( - () -> { - System.out.println("Initializing inter-quadrant pathfinds"); - - Quadrant.initializeAllPaths(); - - System.out.println("Finished initializing inter-quadrant pathfinds"); - }); + // Trigger a GC upon disable to ensure that all unnecessary objects are cleaned up. + // This is especially important after auto. + System.gc(); } - /** This function is called periodically when disabled. */ - @Override - public void disabledPeriodic() {} - /** This autonomous runs the autonomous command selected by your {@link RobotContainer} class. */ @Override public void autonomousInit() { @@ -142,10 +170,6 @@ public void autonomousInit() { } } - /** This function is called periodically during autonomous. */ - @Override - public void autonomousPeriodic() {} - /** This function is called once when teleop is enabled. */ @Override public void teleopInit() { @@ -156,11 +180,9 @@ public void teleopInit() { if (autonomousCommand != null) { autonomousCommand.cancel(); } - } - /** This function is called periodically during operator control. */ - @Override - public void teleopPeriodic() {} + robotContainer.stowElevator(); + } /** This function is called once when test mode is enabled. */ @Override @@ -168,16 +190,4 @@ public void testInit() { // Cancels all running commands at the start of test mode. CommandScheduler.getInstance().cancelAll(); } - - /** This function is called periodically during test mode. */ - @Override - public void testPeriodic() {} - - /** This function is called once when the robot is first started up. */ - @Override - public void simulationInit() {} - - /** This function is called periodically whilst in simulation. */ - @Override - public void simulationPeriodic() {} } diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index c9fbe4d..2c0ab11 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -9,6 +9,7 @@ import com.pathplanner.lib.auto.AutoBuilder; import com.pathplanner.lib.auto.NamedCommands; +import com.pathplanner.lib.commands.PathPlannerAuto; import com.pathplanner.lib.commands.PathfindingCommand; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.wpilibj.GenericHID; @@ -26,8 +27,10 @@ import frc.robot.generated.TunerConstants; import frc.robot.subsystems.Superstructure; import frc.robot.subsystems.algae_arm.AlgaeArm; +import frc.robot.subsystems.algae_arm.AlgaeArmIOSim; +import frc.robot.subsystems.algae_arm.AlgaeArmIOTalonFX; import frc.robot.subsystems.climber.Climber; -import frc.robot.subsystems.climber.ServoIO; +import frc.robot.subsystems.climber.ClimberIOReal; import frc.robot.subsystems.drive.Drive; import frc.robot.subsystems.drive.GyroIO; import frc.robot.subsystems.drive.GyroIOPigeon2; @@ -42,17 +45,11 @@ import frc.robot.subsystems.end_effector.BeamBreakIO; import frc.robot.subsystems.end_effector.EndEffector; import frc.robot.subsystems.vision.Vision; -import frc.robot.subsystems.vision.VisionConstants; -import frc.robot.subsystems.vision.VisionIO; -import frc.robot.subsystems.vision.VisionIOPhotonVision; -import frc.robot.subsystems.vision.VisionIOPhotonVisionSim; -import frc.robot.util.Elastic; -import frc.robot.util.Elastic.Notification; -import frc.robot.util.Elastic.NotificationLevel; +import frc.robot.subsystems.vision.VisionIO.VisionIOPhotonVision; +import frc.robot.subsystems.vision.VisionIO.VisionIOPhotonVisionSim; import frc.robot.util.io.talon.TalonFXIO; import java.util.Set; import java.util.function.Supplier; -import org.littletonrobotics.junction.Logger; import org.littletonrobotics.junction.networktables.LoggedDashboardChooser; /** @@ -62,21 +59,6 @@ * subsystems, commands, and button mappings) should be declared here. */ public class RobotContainer { - // alert to display if preallocated memory is - private static final Notification kFullHeapNotification = - new Notification() - .withDescription( - "Used memory is more than 90% of preallocated memory, should increase amount of preallocated memory") - .withLevel(NotificationLevel.WARNING) - .withNoAutoDismiss(); - - private static final Notification kUnusedHeapNotification = - new Notification() - .withDescription( - "Used memory is less than 50% of preallocated memory, should reduce amount of preallocated memory") - .withLevel(NotificationLevel.WARNING) - .withNoAutoDismiss(); - // Subsystems private final Drive drive; @@ -112,22 +94,6 @@ private static enum ControlMode { /** The container for the robot. Contains subsystems, OI devices, and commands. */ public RobotContainer() { - Logger.runEveryN( - 10, - () -> { - var rt = Runtime.getRuntime(); - - var usedMem = (double) (rt.totalMemory() - rt.freeMemory()); - - if (usedMem >= 0.9 * Constants.TotalMemory) { - Elastic.sendNotification(kFullHeapNotification); - } else if (usedMem <= 0.5 * Constants.TotalMemory) { - Elastic.sendNotification(kUnusedHeapNotification); - } - - Logger.recordOutput("Robot/Utilized Memory Percent", usedMem / rt.totalMemory()); - }); - switch (Constants.currentMode) { case REAL: // Real robot, instantiate hardware IO implementations @@ -140,14 +106,13 @@ public RobotContainer() { new ModuleIOTalonFX(TunerConstants.BackRight)); vision = new Vision( - drive::addVisionMeasurement, - new VisionIOPhotonVision( - VisionConstants.camera0Name, VisionConstants.robotToCamera0), - new VisionIOPhotonVision( - VisionConstants.camera1Name, VisionConstants.robotToCamera1)); + drive, + new VisionIOPhotonVision(0, drive::getPoseAtTime), + new VisionIOPhotonVision(1, drive::getPoseAtTime)); endEffector = EndEffector.createReal(); elevator = new Elevator(new ElevatorIOTalonFX()); - algaeArm = AlgaeArm.createReal(); + algaeArm = new AlgaeArm(new AlgaeArmIOTalonFX()); + climber = new Climber(new ClimberIOReal()); break; case SIM: @@ -161,14 +126,16 @@ public RobotContainer() { new ModuleIOSim(TunerConstants.BackRight)); vision = new Vision( - drive::addVisionMeasurement, - new VisionIOPhotonVisionSim( - VisionConstants.camera0Name, VisionConstants.robotToCamera0, drive::getPose), - new VisionIOPhotonVisionSim( - VisionConstants.camera1Name, VisionConstants.robotToCamera1, drive::getPose)); + drive, + new VisionIOPhotonVisionSim(0, drive::getPoseAtTime, drive::getPose), + new VisionIOPhotonVisionSim(0, drive::getPoseAtTime, drive::getPose)); + endEffector = EndEffector.createSim(simState); elevator = new Elevator(new ElevatorIOSim()); - algaeArm = AlgaeArm.createSim(); + algaeArm = new AlgaeArm(new AlgaeArmIOSim()); + // We don't simulate the climber due to the complexity of how it works and the ramifications it + // has on the rest of the robot + climber = new Climber(inputs -> {}); break; default: @@ -180,46 +147,44 @@ public RobotContainer() { new ModuleIO() {}, new ModuleIO() {}, new ModuleIO() {}); - vision = new Vision(drive::addVisionMeasurement, new VisionIO() {}, new VisionIO() {}); + vision = new Vision(drive, inputs -> {}, inputs -> {}); endEffector = new EndEffector(new TalonFXIO() {}, new BeamBreakIO() {}, new BeamBreakIO() {}, false); elevator = new Elevator(new ElevatorIO() {}); - algaeArm = new AlgaeArm(new TalonFXIO() {}); + algaeArm = new AlgaeArm(inputs -> {}); + climber = new Climber(inputs -> {}); break; } - if (Constants.currentMode == Mode.REAL) { - climber = Climber.createReal(); - } else { - climber = new Climber(new TalonFXIO() {}, new ServoIO() {}); - } - superstructure = new Superstructure(endEffector, elevator, algaeArm); + configureAutoCommands(); PathfindingCommand.warmupCommand().schedule(); - // Set up auto routines autoChooser = new LoggedDashboardChooser<>("Auto Choices", AutoBuilder.buildAutoChooser()); - // Set up SysId routines - autoChooser.addOption( - "Drive Wheel Radius Characterization", DriveCommands.wheelRadiusCharacterization(drive)); - autoChooser.addOption( - "Drive Simple FF Characterization", DriveCommands.feedforwardCharacterization(drive)); - autoChooser.addOption( - "Drive SysId (Quasistatic Forward)", - drive.sysIdQuasistatic(SysIdRoutine.Direction.kForward)); - autoChooser.addOption( - "Drive SysId (Quasistatic Reverse)", - drive.sysIdQuasistatic(SysIdRoutine.Direction.kReverse)); - autoChooser.addOption( - "Drive SysId (Dynamic Forward)", drive.sysIdDynamic(SysIdRoutine.Direction.kForward)); - autoChooser.addOption( - "Drive SysId (Dynamic Reverse)", drive.sysIdDynamic(SysIdRoutine.Direction.kReverse)); + autoChooser.addOption("Opps Side 4pc", new PathPlannerAuto("Own Side 4pc", true)); + + if (Constants.DEVBOT) { + // Set up SysId routines + autoChooser.addOption( + "Drive Wheel Radius Characterization", DriveCommands.wheelRadiusCharacterization(drive)); + autoChooser.addOption( + "Drive Simple FF Characterization", DriveCommands.feedforwardCharacterization(drive)); + autoChooser.addOption( + "Drive SysId (Quasistatic Forward)", + drive.sysIdQuasistatic(SysIdRoutine.Direction.kForward)); + autoChooser.addOption( + "Drive SysId (Quasistatic Reverse)", + drive.sysIdQuasistatic(SysIdRoutine.Direction.kReverse)); + autoChooser.addOption( + "Drive SysId (Dynamic Forward)", drive.sysIdDynamic(SysIdRoutine.Direction.kForward)); + autoChooser.addOption( + "Drive SysId (Dynamic Reverse)", drive.sysIdDynamic(SysIdRoutine.Direction.kReverse)); + } // Configure the button bindings configureButtonBindings(); - configureAutoCommands(); SmartDashboard.putData("Field", field); } @@ -297,16 +262,17 @@ private void configureButtonBindings() { controller.rightTrigger().and(algaeMode).whileTrue(endEffector.scoreProcessor()); - controller.povDown().whileTrue(climber.deploy()).onFalse(climber.stop()); - controller.povUp().whileTrue(climber.retract()).onFalse(climber.stop()); + controller.povDown().whileTrue(climber.deploy()); + controller.povUp().whileTrue(climber.retract()); } private void configureAutoCommands() { NamedCommands.registerCommand("elevator_stow", elevator.setTarget(Setpoint.Stowed)); NamedCommands.registerCommand("elevator_l3", elevator.setTarget(Setpoint.L3)); NamedCommands.registerCommand("elevator_l4", elevator.setTarget(Setpoint.L4)); - NamedCommands.registerCommand("coral_intake", endEffector.autoIntake(true)); - NamedCommands.registerCommand("coral_jog", superstructure.intakeCoralThenL3()); + NamedCommands.registerCommand( + "coral_intake", Commands.race(endEffector.autoIntake(), Commands.waitSeconds(1))); + NamedCommands.registerCommand("coral_jog", endEffector.autoIntake()); NamedCommands.registerCommand("score_coral", superstructure.scoreCoral(true)); NamedCommands.registerCommand("score_barge", superstructure.bargeShot()); } @@ -323,4 +289,8 @@ private Command joystickApproach(Supplier approach) { public Command getAutonomousCommand() { return autoChooser.get(); } + + public void stowElevator() { + elevator.setTarget(Setpoint.Stowed).schedule(); + } } diff --git a/src/main/java/frc/robot/RobotSimState.java b/src/main/java/frc/robot/RobotSimState.java deleted file mode 100644 index 39ce1ec..0000000 --- a/src/main/java/frc/robot/RobotSimState.java +++ /dev/null @@ -1,11 +0,0 @@ -package frc.robot; - -public final class RobotSimState { - // start with `true` because the robot starts with a coral - public boolean hasCoral = true; - public boolean hasAlgae = false; - - public boolean hasCoral() { - return hasCoral; - } -} diff --git a/src/main/java/frc/robot/commands/DriveCommands.java b/src/main/java/frc/robot/commands/DriveCommands.java index a52b03e..8ed5583 100644 --- a/src/main/java/frc/robot/commands/DriveCommands.java +++ b/src/main/java/frc/robot/commands/DriveCommands.java @@ -7,8 +7,6 @@ package frc.robot.commands; -import static frc.robot.util.PositionUtils.getDistance; - import edu.wpi.first.math.MathUtil; import edu.wpi.first.math.controller.ProfiledPIDController; import edu.wpi.first.math.filter.SlewRateLimiter; @@ -25,6 +23,9 @@ import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; import frc.robot.subsystems.drive.Drive; +import frc.robot.util.Allocated; +import lombok.val; + import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.LinkedList; @@ -42,12 +43,17 @@ public final class DriveCommands { private static final double ANGLE_MAX_VELOCITY = 8.0; private static final double ANGLE_MAX_ACCELERATION = 20.0; private static final double ANGLE_TOLERANCE = Units.degreesToRadians(5); - private static final double LINE_TOLERANCE = 0.05; private static final double POSITION_TOLERANCE = Units.inchesToMeters(1); private static final double FF_START_DELAY = 2.0; // Secs private static final double FF_RAMP_RATE = 0.1; // Volts/Sec private static final double WHEEL_RADIUS_MAX_VELOCITY = 0.25; // Rad/Sec private static final double WHEEL_RADIUS_RAMP_RATE = 0.05; // Rad/Sec^2 + private static final TrapezoidProfile.Constraints DRIVE_CONSTRAINTS = new TrapezoidProfile.Constraints( + Units.degreesToRadians(540), + Units.degreesToRadians(720)); + private static final TrapezoidProfile.Constraints ANGLE_CONSTRAINTS = new TrapezoidProfile.Constraints( + 4.73, + 5); private DriveCommands() {} @@ -222,7 +228,7 @@ public void execute() { // Calculate total linear velocity Translation2d linearVelocity = getLinearVelocityFromJoysticks(-ySupplier.getAsDouble(), 0) - .times(drive.getMaxLinearSpeedMetersPerSec()) + .times(drive.getMaxLinearSpeedMetersPerSec() / 2) .plus(offsetVector) .rotateBy(targetRotation2d); @@ -396,86 +402,6 @@ public static Command wheelRadiusCharacterization(Drive drive) { }))); } - @FunctionalInterface - interface RotationFunc { - public double getRotation(ProfiledPIDController controller, Pose2d current, Pose2d target); - } - - static final RotationFunc standardApproachRotation = - (controller, current, target) -> { - final Rotation2d currentRot = current.getRotation(), targetRot = target.getRotation(); - - double pidResult = controller.calculate(currentRot.getRadians(), targetRot.getRadians()); - System.out.println("StraightTowards::rotationFunc: pidResult = " + pidResult); - - double toGoal = targetRot.minus(currentRot).getRadians(); - System.out.println("StraightTowards::rotationFunc: toGoal = " + toGoal); - - double omega = toGoal * pidResult; - System.out.println("StraightTowards::rotationFunc: omega = " + omega); - - return omega; - }; - - public static Command straightTowards(Drive drive, Supplier target) { - return straightTowards(drive, target, standardApproachRotation); - } - - public static Command straightTowards( - Drive drive, Supplier targetSupplier, RotationFunc rotationFunc) { - final ProfiledPIDController alignController = - new ProfiledPIDController( - DRIVE_KP, - 0, - DRIVE_KD, - new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); - alignController.setTolerance(LINE_TOLERANCE); - alignController.setGoal(0); - - final ProfiledPIDController angleController = - new ProfiledPIDController( - DRIVE_KP, - 0, - DRIVE_KD, - new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); - angleController.setTolerance(ANGLE_TOLERANCE); - angleController.enableContinuousInput(-Math.PI, Math.PI); - - return Commands.run( - () -> { - final Pose2d robotPose = drive.getPose(), targetPose = targetSupplier.get(); - - var robotToGoal = targetPose.minus(robotPose).getTranslation(); - - double pidX = alignController.calculate(robotToGoal.getX()); - double pidY = alignController.calculate(robotToGoal.getY()); - - System.out.println("StraightTowards::cmd: pidScalars = (" + pidX + ", " + pidY + ")"); - - var pidTranslation = - new Translation2d(pidX * robotToGoal.getX(), pidY * robotToGoal.getY()); - - var resultVector = robotToGoal.plus(pidTranslation); - - System.out.println( - "StraightTowards::cmd: final vector = (" - + resultVector.getX() - + ", " - + resultVector.getY() - + ")"); - - final ChassisSpeeds speeds = - new ChassisSpeeds( - resultVector.getX(), - resultVector.getY(), - rotationFunc.getRotation(angleController, robotPose, targetPose)); - - drive.runVelocity(speeds); - }, - drive) - .until(() -> getDistance(drive, targetSupplier.get()) < POSITION_TOLERANCE); - } - private static class WheelRadiusCharacterizationState { double[] positions = new double[4]; Rotation2d lastAngle = new Rotation2d(); diff --git a/src/main/java/frc/robot/generated/TunerConstants.java b/src/main/java/frc/robot/generated/TunerConstants.java index 806e0e7..e3cc391 100644 --- a/src/main/java/frc/robot/generated/TunerConstants.java +++ b/src/main/java/frc/robot/generated/TunerConstants.java @@ -8,48 +8,16 @@ import com.ctre.phoenix6.signals.*; import com.ctre.phoenix6.swerve.*; import com.ctre.phoenix6.swerve.SwerveModuleConstants.*; -import com.pathplanner.lib.config.ModuleConfig; -import com.pathplanner.lib.config.RobotConfig; import edu.wpi.first.math.Matrix; -import edu.wpi.first.math.geometry.Translation2d; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; -import edu.wpi.first.math.system.plant.DCMotor; import edu.wpi.first.units.measure.*; // Generated by the Tuner X Swerve Project Generator // https://v6.docs.ctr-electronics.com/en/stable/docs/tuner/tuner-swerve/index.html -public class TunerConstants { +public final class TunerConstants { // Both sets of gains need to be tuned to your individual robot. - private static RobotConfig createConfig() { - try { - return RobotConfig.fromGUISettings(); - } catch (Exception e) { - e.printStackTrace(); - - final ModuleConfig module = - new ModuleConfig( - Meters.of(0.048), - MetersPerSecond.of(5.450), - 1.2, - DCMotor.getKrakenX60Foc(1), - kSlipCurrent, - 1); - - return new RobotConfig( - Kilograms.of(74.088), - KilogramSquareMeters.of(6.883), - module, - new Translation2d(0.273, 0.273), - new Translation2d(0.273, -0.273), - new Translation2d(-0.273, 0.273), - new Translation2d(-0.273, -0.273)); - } - } - - public static final RobotConfig kAutoConfig = createConfig(); - // The steer motor uses any SwerveModule.SteerRequestType control request with the // output type specified by SwerveModuleConstants.SteerMotorClosedLoopOutput private static final Slot0Configs steerGains = diff --git a/src/main/java/frc/robot/subsystems/Superstructure.java b/src/main/java/frc/robot/subsystems/Superstructure.java index c137dd9..9151076 100644 --- a/src/main/java/frc/robot/subsystems/Superstructure.java +++ b/src/main/java/frc/robot/subsystems/Superstructure.java @@ -21,15 +21,13 @@ public Superstructure(EndEffector endEffector, Elevator elevator, AlgaeArm algae public Command bargeShot() { return Commands.parallel( elevator.setTarget(Setpoint.Barge), - Commands.waitUntil(() -> elevator.madeProgress(.75)) - .andThen(endEffector.scoreBarge(), algaeArm.stow())); + Commands.waitSeconds(0.35).andThen(endEffector.scoreBarge(), algaeArm.stow())); } public Command scoreCoral(boolean inAuto) { if (inAuto) { - return elevator - .setTarget(Setpoint.L4) - .alongWith(endEffector.autoScoreCoral(elevator.isAtSetpoint)); + return Commands.print("Scoring coral") + .andThen(endEffector.autoScoreCoral(elevator.isAtSetpoint)); } else { return endEffector.teleScoreCoral(elevator::shouldEjectFast); } @@ -38,8 +36,4 @@ public Command scoreCoral(boolean inAuto) { public Command algaeMode() { return endEffector.intakeAlgae().alongWith(algaeArm.deploy()); } - - public Command intakeCoralThenL3() { - return endEffector.autoIntake(true).andThen(elevator.setTarget(Setpoint.L3)); - } } diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java index 1f5c697..67ee2bf 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java @@ -1,63 +1,30 @@ package frc.robot.subsystems.algae_arm; -import static edu.wpi.first.units.Units.Rotations; -import static frc.robot.subsystems.algae_arm.AlgaeArmConstants.*; - -import edu.wpi.first.math.MathUtil; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.SubsystemBase; -import edu.wpi.first.wpilibj2.command.button.Trigger; -import frc.robot.util.io.talon.TalonFXIO; -import frc.robot.util.io.talon.TalonFXIOImpl; -import frc.robot.util.io.talon.TalonFXIOInputsAutoLogged; import org.littletonrobotics.junction.Logger; -public class AlgaeArm extends SubsystemBase { - private final TalonFXIO io; - private final TalonFXIOInputsAutoLogged inputs = new TalonFXIOInputsAutoLogged(); - - private final Trigger hasDeployed = - new Trigger( - () -> MathUtil.isNear(inputs.position.in(Rotations), kDeployedAngle.in(Rotations), 0.01)); - - private final Trigger hasStowed = - new Trigger( - () -> MathUtil.isNear(inputs.position.in(Rotations), kDeployedAngle.in(Rotations), 0.01)); - - public AlgaeArm(TalonFXIO motorIO) { - io = motorIO; +public final class AlgaeArm extends SubsystemBase { + private final AlgaeArmIO io; + private final AlgaeArmIOInputsAutoLogged inputs = new AlgaeArmIOInputsAutoLogged(); - setDefaultCommand(stow()); + public AlgaeArm(AlgaeArmIO io) { + this.io = io; } @Override public void periodic() { io.updateInputs(inputs); - Logger.processInputs("AlgaeArm/Motor", inputs); - } - - public static AlgaeArm createReal() { - return new AlgaeArm(new TalonFXIOImpl(kMotorID, kBus, kAlgaeArmConfig)); - } - - public static AlgaeArm createSim() { - return new AlgaeArm(new AlgaeArmIOSim()); + Logger.processInputs("AlgaeArm", inputs); } public Command deploy() { - return Commands.sequence( - runOnce(() -> io.setDutyCycle(.8)), - Commands.waitUntil(hasDeployed), - runOnce(() -> io.stopMotor()), - Commands.idle(this)); + return runOnce(io::deploy).andThen(Commands.idle(this)).withName("Deploy Algae Arm"); } public Command stow() { - return Commands.sequence( - runOnce(() -> io.setDutyCycle(-.8)), - Commands.waitUntil(hasStowed), - runOnce(() -> io.stopMotor())); + return runOnce(io::stow).andThen(Commands.idle(this)).withName("Stow Algae Arm"); } } diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java index 3b93e02..d5fb7e7 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java @@ -7,36 +7,39 @@ import com.ctre.phoenix6.CANBus; import com.ctre.phoenix6.configs.CurrentLimitsConfigs; import com.ctre.phoenix6.configs.FeedbackConfigs; -import com.ctre.phoenix6.configs.MotionMagicConfigs; +import com.ctre.phoenix6.configs.MotorOutputConfigs; import com.ctre.phoenix6.configs.Slot0Configs; import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.signals.GravityTypeValue; +import com.ctre.phoenix6.signals.NeutralModeValue; + import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.Distance; import frc.robot.Constants; public final class AlgaeArmConstants { - public static final int kMotorID = 21; - public static final CANBus kBus = Constants.kRIOBus; - public static final int kReduction = 25; + public static final int MOTOR_ID = 21; + public static final CANBus MOTOR_BUS = Constants.kRIOBus; + public static final int SYSTEM_REDUCTION = 25; - public static final Angle kStowedAngle = Rotations.of(0); - public static final Angle kDeployedAngle = Rotations.of(0.283); + public static final Angle STOWED_ANGLE = Rotations.of(0); + public static final Angle DEPLOYED_ANGLE = Rotations.of(0.283); // TODO: CORRECT THIS VALUE WITH CAD public static final Distance kArmLength = Inches.of(9); // TODO: CORRECT THIS VALUE (ASK BRENNAN/MARK) public static final double kMoi = 0.4; - public static final CurrentLimitsConfigs kCurrentLimits = + public static final CurrentLimitsConfigs CURRENT_LIMITS = new CurrentLimitsConfigs() .withStatorCurrentLimit(Amps.of(10)) .withStatorCurrentLimitEnable(true) .withSupplyCurrentLimit(Amps.of(40)) .withSupplyCurrentLimitEnable(true); - public static final FeedbackConfigs kFeedback = - new FeedbackConfigs().withSensorToMechanismRatio(kReduction); - public static final MotionMagicConfigs kMotionMagic = new MotionMagicConfigs(); - public static final Slot0Configs kSlot0 = + public static final FeedbackConfigs FEEDBACK_CONFIGS = + new FeedbackConfigs().withSensorToMechanismRatio(SYSTEM_REDUCTION); + public static final MotorOutputConfigs MOTOR_OUTPUT = + new MotorOutputConfigs().withNeutralMode(NeutralModeValue.Brake); + public static final Slot0Configs SLOT_0 = new Slot0Configs() .withKP(10) .withKI(0) @@ -47,10 +50,10 @@ public final class AlgaeArmConstants { .withKG(0.5) .withGravityType(GravityTypeValue.Arm_Cosine); - public static final TalonFXConfiguration kAlgaeArmConfig = + public static final TalonFXConfiguration MOTOR_CONFIG = new TalonFXConfiguration() - .withCurrentLimits(kCurrentLimits) - .withFeedback(kFeedback) - .withMotionMagic(kMotionMagic) - .withSlot0(kSlot0); + .withCurrentLimits(CURRENT_LIMITS) + .withFeedback(FEEDBACK_CONFIGS) + .withMotorOutput(MOTOR_OUTPUT) + .withSlot0(SLOT_0); } diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIO.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIO.java new file mode 100644 index 0000000..1cdc153 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIO.java @@ -0,0 +1,25 @@ +package frc.robot.subsystems.algae_arm; + +import static edu.wpi.first.units.Units.Rotations; +import static edu.wpi.first.units.Units.RotationsPerSecond; + +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; +import org.littletonrobotics.junction.AutoLog; + +@FunctionalInterface +public interface AlgaeArmIO { + @AutoLog + public static class AlgaeArmIOInputs { + public boolean connected = false; + public Angle position = Rotations.zero(); + public AngularVelocity velocity = RotationsPerSecond.zero(); + public Angle setpoint = Rotations.zero(); + } + + public void updateInputs(AlgaeArmIOInputs inputs); + + public default void deploy() {} + + public default void stow() {} +} diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java index bd30e20..595f4cd 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java @@ -10,34 +10,34 @@ import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj.simulation.SingleJointedArmSim; -import frc.robot.util.io.talon.TalonFXIOImpl; +import lombok.val; -public class AlgaeArmIOSim extends TalonFXIOImpl { +public final class AlgaeArmIOSim extends AlgaeArmIOTalonFX { private final SingleJointedArmSim physicsSim; private final TalonFXSimState simState; private double lastTimestamp = Timer.getTimestamp(); public AlgaeArmIOSim() { - super(kMotorID, kBus, kAlgaeArmConfig); + super(); simState = talon.getSimState(); - DCMotor motor = DCMotor.getKrakenX60Foc(1).withReduction(kReduction); + DCMotor motor = DCMotor.getKrakenX60Foc(1).withReduction(SYSTEM_REDUCTION); // the reduction is already accounted for, so set it to 1 - var linearSystem = LinearSystemId.createSingleJointedArmSystem(motor, kMoi, 1); + val linearSystem = LinearSystemId.createSingleJointedArmSystem(motor, kMoi, 1); physicsSim = new SingleJointedArmSim( linearSystem, motor, 1, kArmLength.in(Meters), - kStowedAngle.in(Radians), - kDeployedAngle.in(Radians), + STOWED_ANGLE.in(Radians), + DEPLOYED_ANGLE.in(Radians), true, 0); } @Override - public void updateInputs(TalonFXIOInputs inputs) { + public void updateInputs(AlgaeArmIOInputs inputs) { simState.setSupplyVoltage(RobotController.getBatteryVoltage()); physicsSim.setInputVoltage(simState.getMotorVoltage()); diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOTalonFX.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOTalonFX.java new file mode 100644 index 0000000..daef348 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOTalonFX.java @@ -0,0 +1,53 @@ +package frc.robot.subsystems.algae_arm; + +import static edu.wpi.first.units.Units.Amps; +import static frc.robot.subsystems.algae_arm.AlgaeArmConstants.*; +import static frc.robot.util.phoenix.PhoenixUtil.tryUntilOk; + +import com.ctre.phoenix6.BaseStatusSignal; +import com.ctre.phoenix6.StatusSignal; +import com.ctre.phoenix6.controls.PositionTorqueCurrentFOC; +import com.ctre.phoenix6.hardware.TalonFX; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; + +public sealed class AlgaeArmIOTalonFX implements AlgaeArmIO permits AlgaeArmIOSim { + protected final TalonFX talon = new TalonFX(MOTOR_ID, MOTOR_BUS); + private final PositionTorqueCurrentFOC positionRequest = + new PositionTorqueCurrentFOC(0).withSlot(0).withUpdateFreqHz(100).withFeedForward(Amps.of(4)); + + private final StatusSignal position = talon.getPosition(); + private final StatusSignal velocity = talon.getVelocity(); + private Angle target = STOWED_ANGLE; + + public AlgaeArmIOTalonFX() { + tryUntilOk(5, () -> talon.getConfigurator().apply(MOTOR_CONFIG)); + + BaseStatusSignal.setUpdateFrequencyForAll(100, position, velocity); + talon.optimizeBusUtilization(); + } + + @Override + public void updateInputs(AlgaeArmIOInputs inputs) { + inputs.connected = BaseStatusSignal.refreshAll(position, velocity).isOK(); + + inputs.position = position.getValue(); + inputs.velocity = velocity.getValue(); + inputs.setpoint = target; + } + + private void executeTarget(Angle target) { + this.target = target; + talon.setControl(positionRequest.withPosition(target)); + } + + @Override + public void deploy() { + executeTarget(DEPLOYED_ANGLE); + } + + @Override + public void stow() { + executeTarget(STOWED_ANGLE); + } +} diff --git a/src/main/java/frc/robot/subsystems/climber/Climber.java b/src/main/java/frc/robot/subsystems/climber/Climber.java index 4582a19..29c7c43 100644 --- a/src/main/java/frc/robot/subsystems/climber/Climber.java +++ b/src/main/java/frc/robot/subsystems/climber/Climber.java @@ -1,60 +1,35 @@ package frc.robot.subsystems.climber; -import static frc.robot.subsystems.climber.ClimberConstants.*; - import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.SubsystemBase; -import frc.robot.Constants; -import frc.robot.util.io.talon.TalonFXIO; -import frc.robot.util.io.talon.TalonFXIOImpl; -import frc.robot.util.io.talon.TalonFXIOInputsAutoLogged; import org.littletonrobotics.junction.Logger; public class Climber extends SubsystemBase { - private final TalonFXIO motor; - private final TalonFXIOInputsAutoLogged motorInputs = new TalonFXIOInputsAutoLogged(); - - private final ServoIO servo; - private final ServoIOInputsAutoLogged servoInputs = new ServoIOInputsAutoLogged(); + private final ClimberIO io; + private final ClimberIOInputsAutoLogged inputs = new ClimberIOInputsAutoLogged(); - public Climber(TalonFXIO motorIO, ServoIO servoIO) { - motor = motorIO; - servo = servoIO; + public Climber(ClimberIO io) { + this.io = io; } @Override public void periodic() { - motor.updateInputs(motorInputs); - servo.updateInputs(servoInputs); - - Logger.processInputs("Climber/Motor", motorInputs); - Logger.processInputs("Climber/Servo", servoInputs); - } + io.updateInputs(inputs); - public static Climber createReal() { - return new Climber(new TalonFXIOImpl(kMotorId, Constants.kCanivore), new ServoIOReal(kServoId)); + Logger.processInputs("Climber", inputs); } public Command deploy() { - return runOnce( - () -> { - motor.setDutyCycle(-0.9); - servo.setAngle(80); - }); + return runOnce(io::deploy) + .andThen(Commands.idle(this)) + .finallyDo(io::stop) + .withName("Deploy Climber"); } - public Command retract() { - return runOnce( - () -> { - motor.setDutyCycle(0.9); - }); - } - - public Command stop() { - return runOnce( - () -> { - motor.stopMotor(); - servo.setAngle(50); - }); + return runOnce(io::retract) + .andThen(Commands.idle(this)) + .finallyDo(io::stop) + .withName("Retract Climber"); } } diff --git a/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java b/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java index 464d1c8..9a600a2 100644 --- a/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java +++ b/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java @@ -1,15 +1,19 @@ package frc.robot.subsystems.climber; +import com.ctre.phoenix6.CANBus; import com.ctre.phoenix6.configs.CurrentLimitsConfigs; import com.ctre.phoenix6.configs.MotorOutputConfigs; import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.signals.NeutralModeValue; +import frc.robot.Constants; + public class ClimberConstants { - public static final int kMotorId = 30; - public static final int kServoId = 0; + public static final int MOTOR_ID = 30; + public static final int SERVO_ID = 0; + public static final CANBus MOTOR_BUS = Constants.kCanivore; - public static final TalonFXConfiguration kMotorConfig = + public static final TalonFXConfiguration MOTOR_CONFIG = new TalonFXConfiguration() .withMotorOutput(new MotorOutputConfigs().withNeutralMode(NeutralModeValue.Brake)) .withCurrentLimits( diff --git a/src/main/java/frc/robot/subsystems/climber/ClimberIO.java b/src/main/java/frc/robot/subsystems/climber/ClimberIO.java new file mode 100644 index 0000000..8dfc11d --- /dev/null +++ b/src/main/java/frc/robot/subsystems/climber/ClimberIO.java @@ -0,0 +1,26 @@ +package frc.robot.subsystems.climber; + +import static edu.wpi.first.units.Units.Degrees; +import static edu.wpi.first.units.Units.RotationsPerSecond; + +import org.littletonrobotics.junction.AutoLog; + +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; + +@FunctionalInterface +public interface ClimberIO { + @AutoLog + public static class ClimberIOInputs { + public boolean connected; + + public AngularVelocity motorSpeed = RotationsPerSecond.zero(); + public Angle servoSetpoint = Degrees.zero(); + } + + public void updateInputs(ClimberIOInputs inputs); + + public default void deploy() {} + public default void retract() {} + public default void stop() {} +} diff --git a/src/main/java/frc/robot/subsystems/climber/ClimberIOReal.java b/src/main/java/frc/robot/subsystems/climber/ClimberIOReal.java new file mode 100644 index 0000000..735ec7d --- /dev/null +++ b/src/main/java/frc/robot/subsystems/climber/ClimberIOReal.java @@ -0,0 +1,49 @@ +package frc.robot.subsystems.climber; + +import static edu.wpi.first.units.Units.Degrees; +import static frc.robot.subsystems.climber.ClimberConstants.*; +import static frc.robot.util.phoenix.PhoenixUtil.tryUntilOk; + +import com.ctre.phoenix6.StatusSignal; +import com.ctre.phoenix6.hardware.TalonFX; + +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.wpilibj.Servo; + +public class ClimberIOReal implements ClimberIO { + private final Servo servo = new Servo(SERVO_ID); + private final TalonFX talon = new TalonFX(MOTOR_ID, MOTOR_BUS); + private final StatusSignal velocity = talon.getVelocity(); + + public ClimberIOReal() { + tryUntilOk(5, () -> talon.getConfigurator().apply(MOTOR_CONFIG)); + velocity.setUpdateFrequency(100); + talon.optimizeBusUtilization(); + } + + @Override + public void updateInputs(ClimberIOInputs inputs) { + velocity.refresh(); + + inputs.connected = velocity.getStatus().isOK(); + inputs.motorSpeed = velocity.getValue(); + inputs.servoSetpoint = Degrees.of(servo.getAngle()); + } + + @Override + public void deploy() { + servo.setAngle(80); + talon.set(-1); + } + + @Override + public void retract() { + talon.set(1); + } + + @Override + public void stop() { + talon.stopMotor(); + servo.setAngle(50); + } +} diff --git a/src/main/java/frc/robot/subsystems/climber/ServoIO.java b/src/main/java/frc/robot/subsystems/climber/ServoIO.java deleted file mode 100644 index 83ca9ab..0000000 --- a/src/main/java/frc/robot/subsystems/climber/ServoIO.java +++ /dev/null @@ -1,14 +0,0 @@ -package frc.robot.subsystems.climber; - -import org.littletonrobotics.junction.AutoLog; - -public interface ServoIO { - @AutoLog - public static class ServoIOInputs { - public double angle = 0; - } - - public default void setAngle(double angle) {} - - public default void updateInputs(ServoIOInputs inputs) {} -} diff --git a/src/main/java/frc/robot/subsystems/climber/ServoIOReal.java b/src/main/java/frc/robot/subsystems/climber/ServoIOReal.java deleted file mode 100644 index c8cc567..0000000 --- a/src/main/java/frc/robot/subsystems/climber/ServoIOReal.java +++ /dev/null @@ -1,21 +0,0 @@ -package frc.robot.subsystems.climber; - -import edu.wpi.first.wpilibj.Servo; - -public class ServoIOReal implements ServoIO { - private final Servo servo; - - public ServoIOReal(int channel) { - servo = new Servo(channel); - } - - @Override - public void updateInputs(ServoIOInputs inputs) { - inputs.angle = servo.getAngle(); - } - - @Override - public void setAngle(double angle) { - servo.setAngle(angle); - } -} diff --git a/src/main/java/frc/robot/subsystems/drive/Drive.java b/src/main/java/frc/robot/subsystems/drive/Drive.java index d49d3c4..2f9db96 100644 --- a/src/main/java/frc/robot/subsystems/drive/Drive.java +++ b/src/main/java/frc/robot/subsystems/drive/Drive.java @@ -16,10 +16,7 @@ import com.pathplanner.lib.config.RobotConfig; import com.pathplanner.lib.controllers.PPHolonomicDriveController; import com.pathplanner.lib.pathfinding.Pathfinding; -import com.pathplanner.lib.util.DriveFeedforwards; import com.pathplanner.lib.util.PathPlannerLogging; -import com.pathplanner.lib.util.swerve.SwerveSetpoint; -import com.pathplanner.lib.util.swerve.SwerveSetpointGenerator; import edu.wpi.first.hal.FRCNetComm.tInstances; import edu.wpi.first.hal.FRCNetComm.tResourceType; import edu.wpi.first.hal.HAL; @@ -36,27 +33,25 @@ import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; import edu.wpi.first.math.system.plant.DCMotor; -import edu.wpi.first.units.measure.Time; import edu.wpi.first.wpilibj.Alert; import edu.wpi.first.wpilibj.Alert.AlertType; import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj.DriverStation.Alliance; -import edu.wpi.first.wpilibj.RobotController; -import edu.wpi.first.wpilibj.Timer; -import edu.wpi.first.wpilibj.Watchdog; +import edu.wpi.first.wpilibj.RobotBase; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.SubsystemBase; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; import frc.robot.Constants; import frc.robot.Constants.Mode; import frc.robot.generated.TunerConstants; +import frc.robot.subsystems.vision.Vision.VisionConsumer; import frc.robot.util.LocalADStarAK; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import org.littletonrobotics.junction.AutoLogOutput; import org.littletonrobotics.junction.Logger; -public class Drive extends SubsystemBase { +public class Drive extends SubsystemBase implements VisionConsumer { // TunerConstants doesn't include these constants, so they are declared locally static final double ODOMETRY_FREQUENCY = new CANBus(TunerConstants.DrivetrainConstants.CANBusName).isNetworkFD() ? 250.0 : 100.0; @@ -72,20 +67,28 @@ public class Drive extends SubsystemBase { // PathPlanner config constants private static final double ROBOT_MASS_KG = 74.088; private static final double ROBOT_MOI = 6.883; - private static final double WHEEL_COF = 1.43; - private static final RobotConfig PP_CONFIG = - new RobotConfig( - ROBOT_MASS_KG, - ROBOT_MOI, - new ModuleConfig( - TunerConstants.FrontLeft.WheelRadius, - TunerConstants.kSpeedAt12Volts.in(MetersPerSecond), - WHEEL_COF, - DCMotor.getKrakenX60Foc(1) - .withReduction(TunerConstants.FrontLeft.DriveMotorGearRatio), - TunerConstants.FrontLeft.SlipCurrent, - 1), - getModuleTranslations()); + private static final double WHEEL_COF = 1.2; + private static RobotConfig PP_CONFIG; + + static { + try { + PP_CONFIG = RobotConfig.fromGUISettings(); + } catch (Exception e) { + PP_CONFIG = + new RobotConfig( + ROBOT_MASS_KG, + ROBOT_MOI, + new ModuleConfig( + TunerConstants.FrontLeft.WheelRadius, + TunerConstants.kSpeedAt12Volts.in(MetersPerSecond), + WHEEL_COF, + DCMotor.getKrakenX60Foc(1) + .withReduction(TunerConstants.FrontLeft.DriveMotorGearRatio), + TunerConstants.FrontLeft.SlipCurrent, + 1), + getModuleTranslations()); + } + } static final Lock odometryLock = new ReentrantLock(); private final GyroIO gyroIO; @@ -95,9 +98,8 @@ public class Drive extends SubsystemBase { private final Alert gyroDisconnectedAlert = new Alert("Disconnected gyro, using kinematics as fallback.", AlertType.kError); - private final SwerveDriveKinematics kinematics = - new SwerveDriveKinematics(getModuleTranslations()); - private Rotation2d rawGyroRotation = new Rotation2d(); + private SwerveDriveKinematics kinematics = new SwerveDriveKinematics(getModuleTranslations()); + private Rotation2d rawGyroRotation = Rotation2d.kZero; private SwerveModulePosition[] lastModulePositions = // For delta tracking new SwerveModulePosition[] { new SwerveModulePosition(), @@ -105,15 +107,8 @@ public class Drive extends SubsystemBase { new SwerveModulePosition(), new SwerveModulePosition() }; - private final SwerveDrivePoseEstimator poseEstimator = - new SwerveDrivePoseEstimator(kinematics, rawGyroRotation, lastModulePositions, new Pose2d()); - private final SwerveSetpointGenerator setpointGenerator; - private SwerveSetpoint previousSetpoint; - private final Timer sinceLastSetpoint = new Timer(); - - private final Watchdog watchdog = - new Watchdog( - 0.01, () -> System.err.println("Drive.periodic() exceeded allotted time (10ms)")); + private SwerveDrivePoseEstimator poseEstimator = + new SwerveDrivePoseEstimator(kinematics, rawGyroRotation, lastModulePositions, Pose2d.kZero); public Drive( GyroIO gyroIO, @@ -136,14 +131,15 @@ public Drive( // Configure AutoBuilder for PathPlanner AutoBuilder.configure( this::getPose, - this::setPose, + this::setPoseIfSim, this::getChassisSpeeds, this::runVelocity, new PPHolonomicDriveController( - new PIDConstants(5.0, 0.0, 0.0), new PIDConstants(5.0, 0.0, 0.0)), + new PIDConstants(6.0, 0.0, 0.0), new PIDConstants(5.0, 0.0, 0.0)), PP_CONFIG, () -> DriverStation.getAlliance().orElse(Alliance.Blue) == Alliance.Red, this); + Pathfinding.setPathfinder(new LocalADStarAK()); PathPlannerLogging.setLogActivePathCallback( (activePath) -> { @@ -165,44 +161,30 @@ public Drive( (state) -> Logger.recordOutput("Drive/SysIdState", state.toString())), new SysIdRoutine.Mechanism( (voltage) -> runCharacterization(voltage.in(Volts)), null, this)); - - setpointGenerator = - new SwerveSetpointGenerator(TunerConstants.kAutoConfig, RotationsPerSecond.of(10)); - previousSetpoint = - new SwerveSetpoint(getChassisSpeeds(), getModuleStates(), DriveFeedforwards.zeros(4)); - - sinceLastSetpoint.start(); } @Override public void periodic() { - watchdog.reset(); - odometryLock.lock(); // Prevents odometry updates while reading data - watchdog.addEpoch("Waiting for odom lock"); - try { - gyroIO.updateInputs(gyroInputs); - Logger.processInputs("Drive/Gyro", gyroInputs); - - int moduleNum = 0; - for (var module : modules) { - module.periodic(); - watchdog.addEpoch("Module " + moduleNum++ + " periodic"); - } - } finally { - odometryLock.unlock(); + gyroIO.updateInputs(gyroInputs); + Logger.processInputs("Drive/Gyro", gyroInputs); + for (var module : modules) { + module.periodic(); } + odometryLock.unlock(); // Stop moving when disabled if (DriverStation.isDisabled()) { for (var module : modules) { module.stop(); } - // Log empty setpoint states when disabled + } + + // Log empty setpoint states when disabled + if (DriverStation.isDisabled()) { Logger.recordOutput("SwerveStates/Setpoints", new SwerveModuleState[] {}); Logger.recordOutput("SwerveStates/SetpointsOptimized", new SwerveModuleState[] {}); } - watchdog.addEpoch("Checking if disabled"); // Update odometry double[] sampleTimestamps = @@ -220,8 +202,6 @@ public void periodic() { - lastModulePositions[moduleIndex].distanceMeters, modulePositions[moduleIndex].angle); lastModulePositions[moduleIndex] = modulePositions[moduleIndex]; - - watchdog.addEpoch("Processing sample " + i + " for module " + moduleIndex); } // Update gyro angle @@ -233,17 +213,13 @@ public void periodic() { Twist2d twist = kinematics.toTwist2d(moduleDeltas); rawGyroRotation = rawGyroRotation.plus(new Rotation2d(twist.dtheta)); } - watchdog.addEpoch("Updating gyro for sample" + i); // Apply update poseEstimator.updateWithTime(sampleTimestamps[i], rawGyroRotation, modulePositions); - watchdog.addEpoch("Adding sample " + i + " to pose estimator"); } // Update gyro alert gyroDisconnectedAlert.set(!gyroInputs.connected && Constants.currentMode != Mode.SIM); - - Logger.runEveryN(10, watchdog::printEpochs); } /** @@ -252,17 +228,14 @@ public void periodic() { * @param speeds Speeds in meters/sec */ public void runVelocity(ChassisSpeeds speeds) { - Time elapsed = Seconds.of(sinceLastSetpoint.get()); - sinceLastSetpoint.reset(); - // Calculate module setpoints - previousSetpoint = - setpointGenerator.generateSetpoint( - previousSetpoint, speeds, elapsed, Volts.of(RobotController.getBatteryVoltage())); - SwerveModuleState[] setpointStates = previousSetpoint.moduleStates(); + ChassisSpeeds discreteSpeeds = ChassisSpeeds.discretize(speeds, 0.02); + SwerveModuleState[] setpointStates = kinematics.toSwerveModuleStates(discreteSpeeds); + SwerveDriveKinematics.desaturateWheelSpeeds(setpointStates, TunerConstants.kSpeedAt12Volts); // Log unoptimized setpoints and setpoint speeds Logger.recordOutput("SwerveStates/Setpoints", setpointStates); + Logger.recordOutput("SwerveChassisSpeeds/Setpoints", discreteSpeeds); // Send setpoints to modules for (int i = 0; i < 4; i++) { @@ -273,6 +246,10 @@ public void runVelocity(ChassisSpeeds speeds) { Logger.recordOutput("SwerveStates/SetpointsOptimized", setpointStates); } + public void runFieldCentric(ChassisSpeeds speeds) { + runVelocity(ChassisSpeeds.fromFieldRelativeSpeeds(speeds, getRotation())); + } + /** Runs the drive in a straight line with the specified drive output. */ public void runCharacterization(double output) { for (int i = 0; i < 4; i++) { @@ -359,6 +336,10 @@ public Pose2d getPose() { return poseEstimator.getEstimatedPosition(); } + public Pose2d getPoseAtTime(double timestamp) { + return poseEstimator.sampleAt(timestamp).orElseGet(this::getPose); + } + /** Returns the current odometry rotation. */ public Rotation2d getRotation() { return getPose().getRotation(); @@ -369,13 +350,17 @@ public void setPose(Pose2d pose) { poseEstimator.resetPosition(rawGyroRotation, getModulePositions(), pose); } + /** Resets the current odometry pose if in simulation */ + public void setPoseIfSim(Pose2d pose) { + if (RobotBase.isSimulation()) { + setPose(pose); + } + } + + @Override /** Adds a new timestamped vision measurement. */ - public void addVisionMeasurement( - Pose2d visionRobotPoseMeters, - double timestampSeconds, - Matrix visionMeasurementStdDevs) { - poseEstimator.addVisionMeasurement( - visionRobotPoseMeters, timestampSeconds, visionMeasurementStdDevs); + public void addVisionPose(Pose2d pose, double timestamp, Matrix stdDevs) { + poseEstimator.addVisionMeasurement(pose, timestamp, stdDevs); } /** Returns the maximum linear speed in meters per sec. */ diff --git a/src/main/java/frc/robot/subsystems/elevator/Elevator.java b/src/main/java/frc/robot/subsystems/elevator/Elevator.java index 853a25a..d1cfe97 100644 --- a/src/main/java/frc/robot/subsystems/elevator/Elevator.java +++ b/src/main/java/frc/robot/subsystems/elevator/Elevator.java @@ -2,19 +2,16 @@ import static edu.wpi.first.units.Units.Rotations; -import java.util.HashMap; -import java.util.Map; - import edu.wpi.first.units.measure.Angle; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.SubsystemBase; import edu.wpi.first.wpilibj2.command.button.Trigger; import org.littletonrobotics.junction.Logger; public class Elevator extends SubsystemBase { public static enum Setpoint { - Stowed(0.25), + Stowed(0), L2(1.67), L3(2.82), L4(4.7), @@ -60,10 +57,9 @@ public boolean isAlgae() { private final ElevatorIO io; private final ElevatorIOInputsAutoLogged inputs = new ElevatorIOInputsAutoLogged(); private Setpoint currentSetpoint = Setpoint.Stowed; - private final Map cachedCommands = new HashMap<>(Setpoint.values().length); public final Trigger isAtSetpoint = - new Trigger(() -> inputs.leaderPosition.isNear(currentSetpoint.target, Rotations.of(0.05))); + new Trigger(() -> inputs.leaderPosition.isNear(currentSetpoint.target, Rotations.of(0.1))); public Elevator(ElevatorIO motorIO) { io = motorIO; @@ -74,13 +70,18 @@ public void periodic() { io.updateInputs(inputs); Logger.processInputs("Elevator/Motors", inputs); - SmartDashboard.putNumber("Elevator Setpoint", currentSetpoint.target.in(Rotations)); + Logger.recordOutput("Elevator/Setpoint", currentSetpoint.target.in(Rotations)); + Logger.recordOutput("Elevator/IsAtHeight", isAtSetpoint.getAsBoolean()); } public Command setTarget(Setpoint setpoint) { - return cachedCommands.computeIfAbsent(setpoint, s -> runOnce( - () -> io.setTarget(setpoint) - ).beforeStarting(() -> currentSetpoint = s)); + return Commands.sequence( + runOnce( + () -> { + currentSetpoint = setpoint; + io.setTarget(setpoint); + }), + Commands.idle(this)); } public Command stow() { @@ -88,7 +89,7 @@ public Command stow() { } public boolean madeProgress(double percentage) { - return inputs.leaderPosition.gt(currentSetpoint.target.times(percentage)); + return inputs.leaderPosition.gte(currentSetpoint.target.times(percentage)); } public boolean shouldEjectFast() { diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java index fe19ce4..ae35c37 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java @@ -15,8 +15,8 @@ public final class ElevatorConstants { public static final CANBus kMotorBus = new CANBus("canivore0"); public static final class Trapezoidal { - public static final AngularVelocity kMaxVelocity = RotationsPerSecond.of(15); - public static final AngularAcceleration kMaxAcceleration = RotationsPerSecondPerSecond.of(40); + public static final AngularVelocity kMaxVelocity = RotationsPerSecond.of(10); + public static final AngularAcceleration kMaxAcceleration = RotationsPerSecondPerSecond.of(25); public static final Velocity kMaxJerk = RotationsPerSecondPerSecond.per(Second).of(100); } diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java index efd570e..9142a4a 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorIO.java @@ -9,7 +9,6 @@ import edu.wpi.first.units.measure.*; import frc.robot.subsystems.elevator.Elevator.Setpoint; - import org.littletonrobotics.junction.AutoLog; public interface ElevatorIO { diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java index 77faf81..39a197e 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorIOTalonFX.java @@ -17,15 +17,12 @@ import com.ctre.phoenix6.controls.MotionMagicExpoTorqueCurrentFOC; import com.ctre.phoenix6.hardware.TalonFX; import com.ctre.phoenix6.signals.NeutralModeValue; - -import edu.wpi.first.math.MathUtil; import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.AngularAcceleration; import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.units.measure.Current; import edu.wpi.first.units.measure.Voltage; import frc.robot.subsystems.elevator.Elevator.Setpoint; -import lombok.val; public sealed class ElevatorIOTalonFX implements ElevatorIO permits ElevatorIOSim { protected final TalonFX leader = new TalonFX(kLeaderId, kMotorBus); @@ -68,9 +65,7 @@ public sealed class ElevatorIOTalonFX implements ElevatorIO permits ElevatorIOSi /** Control request for moving up to a setpoint, or for stowing the carriage */ private final MotionMagicExpoTorqueCurrentFOC exponential = - new MotionMagicExpoTorqueCurrentFOC(0) - .withUpdateFreqHz(1000) - .withFeedForward(Amps.of(8)); + new MotionMagicExpoTorqueCurrentFOC(0).withUpdateFreqHz(1000).withFeedForward(Amps.of(8)); /** Control request for moving between setpoints, where neither is from stow */ private final DynamicMotionMagicTorqueCurrentFOC trapezoidal = new DynamicMotionMagicTorqueCurrentFOC( @@ -110,9 +105,7 @@ public ElevatorIOTalonFX() { tryUntilOk(5, () -> leader.getConfigurator().apply(config)); tryUntilOk(5, () -> follower.getConfigurator().apply(config)); - tryUntilOk(5, () -> follower.setControl( - new Follower(kLeaderId, true) - .withUpdateFreqHz(1000))); + tryUntilOk(5, () -> follower.setControl(new Follower(kLeaderId, true).withUpdateFreqHz(1000))); leader.setPosition(0); leader.setNeutralMode(NeutralModeValue.Brake); diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java index f2b67e5..849e585 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java @@ -8,7 +8,6 @@ import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; -import edu.wpi.first.wpilibj2.command.ParallelRaceGroup; import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.RobotSimState; import frc.robot.util.io.talon.TalonFXIO; @@ -131,17 +130,8 @@ public Command teleIntake() { return runOnce(this::jogCoral).andThen(Commands.waitSeconds(0.02)); } - public Command autoIntake(boolean withTimeDeadline) { - ParallelRaceGroup group = - new ParallelRaceGroup( - Commands.waitUntil(() -> !exitIO.isBroken()), - run(this::jogCoral).finallyDo(this::resetState)); - - if (withTimeDeadline) { - group.addCommands(Commands.waitSeconds(0.4)); - } - - return group; + public Command autoIntake() { + return run(this::jogCoral).finallyDo(this::resetState); } public Command teleScoreCoral(BooleanSupplier ejectFast) { @@ -156,10 +146,13 @@ public Command teleScoreCoral(BooleanSupplier ejectFast) { public Command autoScoreCoral(BooleanSupplier elevatorIsAtHeight) { return Commands.sequence( - Commands.waitUntil(elevatorIsAtHeight), - Commands.waitSeconds(0.1), + // Commands.waitUntil(elevatorIsAtHeight), + // Commands.print("Elevator is at height"), + Commands.waitSeconds(0.25), runOnce(() -> motorIO.setDutyCycle(kAutoEjectSpeed)), + Commands.print("Motor is set to " + kAutoEjectSpeed), Commands.race(Commands.waitSeconds(0.2), Commands.waitUntil(() -> !exitIO.isBroken())), + Commands.print("Coral out"), runOnce(this::resetState)); } diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java index dc02b43..9f2301e 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java @@ -1,10 +1,11 @@ package frc.robot.subsystems.end_effector; import com.ctre.phoenix6.CANBus; +import frc.robot.Constants; public final class EndEffectorConstants { public static final int kMotorID = 20, kExitBreakerID = 0, kEntranceBreakerID = 1; - public static final CANBus kMotorBus = new CANBus("rio"); + public static final CANBus kMotorBus = Constants.kRIOBus; public static final double kFastEjectSpeed = .9, kAutoEjectSpeed = 1, kSlowEjectSpeed = .3, diff --git a/src/main/java/frc/robot/subsystems/vision/RegisteredCamera.java b/src/main/java/frc/robot/subsystems/vision/RegisteredCamera.java new file mode 100644 index 0000000..772620d --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/RegisteredCamera.java @@ -0,0 +1,108 @@ +package frc.robot.subsystems.vision; + +import static frc.robot.subsystems.vision.VisionConstants.*; + +import edu.wpi.first.math.Matrix; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Transform3d; +import edu.wpi.first.math.numbers.N1; +import edu.wpi.first.math.numbers.N3; +import edu.wpi.first.math.numbers.N8; +import frc.robot.subsystems.vision.VisionIO.PoseObservation; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.function.DoubleFunction; +import lombok.val; +import org.photonvision.PhotonCamera; +import org.photonvision.PhotonPoseEstimator; +import org.photonvision.estimation.TargetModel; + +/** Represents a single camera registered to VisionOdometry. */ +sealed class RegisteredCamera permits RegisteredSimCamera { + // camera data + protected final PhotonCamera camera; + protected final PhotonPoseEstimator poseEstimator; + protected final DoubleFunction robotPose; + // a cached list + final List poseObservations = new ArrayList<>(); + + // camera data caches for the pose estimator + private final Optional> cameraMatrix; + private final Optional> distanceCoeffs; + + /** + * Constructs a single registered camera. This method should only be called in {@link + * VisionOdometry}, or by {@link RegisteredSimCamera} + * + * @param name The name of the camera + * @param robotToCamera The transform vector to convert a camera-relative pose to a robot-relative + * pose. + * @param robotPoseSupplier A function to get the robot's pose at a given timestamp. + */ + protected RegisteredCamera( + String name, Transform3d robotToCamera, DoubleFunction robotPoseSupplier) { + camera = new PhotonCamera(name); + robotPose = robotPoseSupplier; + + poseEstimator = + new PhotonPoseEstimator(APRILTAG_LAYOUT, MULTI_TAG_POSE_STRATEGY, robotToCamera); + poseEstimator.setMultiTagFallbackStrategy(SINGLE_TAG_POSE_STRATEGY); + poseEstimator.setTagModel(TargetModel.kAprilTag36h11); + + cameraMatrix = camera.getCameraMatrix(); + distanceCoeffs = camera.getDistCoeffs(); + } + + /** + * Updates the camera's pose estimations, calculating poses for all unread results and adding them + * to this camera's cache. + */ + protected void update() { + for (val result : camera.getAllUnreadResults()) { + double timestamp = result.getTimestampSeconds(); + + val pose = robotPose.apply(timestamp); + poseEstimator.addHeadingData(timestamp, pose.getRotation()); + poseEstimator.setReferencePose(pose); + + val update = poseEstimator.update(result, cameraMatrix, distanceCoeffs); + + if (update.isPresent()) { + val estimation = update.get(); + + val targets = estimation.targetsUsed; + val numTargets = targets.size(); + + final int[] tagsUsed = new int[numTargets]; + double averageDistance = 0; + double averageAmbiguity = 0; + + for (int i = 0; i < numTargets; i++) { + val target = targets.get(i); + + tagsUsed[i] = target.fiducialId; + averageDistance += target.bestCameraToTarget.getTranslation().getNorm(); + averageAmbiguity += target.poseAmbiguity; + } + + val observation = + new PoseObservation( + estimation.estimatedPose, + tagsUsed, + averageDistance / numTargets, + averageAmbiguity / numTargets, + estimation.timestampSeconds); + poseObservations.add(observation); + } + } + } + + /** + * Clears this camera's cache, assuming all results have been logged and processed by {@link + * Vision#periodic()} + */ + public void clearCache() { + poseObservations.clear(); + } +} diff --git a/src/main/java/frc/robot/subsystems/vision/RegisteredSimCamera.java b/src/main/java/frc/robot/subsystems/vision/RegisteredSimCamera.java new file mode 100644 index 0000000..ea0f073 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/RegisteredSimCamera.java @@ -0,0 +1,61 @@ +package frc.robot.subsystems.vision; + +import static frc.robot.subsystems.vision.VisionConstants.*; + +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Transform3d; +import java.util.function.DoubleFunction; +import java.util.function.Supplier; +import org.photonvision.simulation.PhotonCameraSim; +import org.photonvision.simulation.SimCameraProperties; +import org.photonvision.simulation.VisionSystemSim; + +final class RegisteredSimCamera extends RegisteredCamera { + private static VisionSystemSim system = null; + + private static VisionSystemSim getSystem() { + if (system == null) { + system = new VisionSystemSim("main"); + system.addAprilTags(APRILTAG_LAYOUT); + } + + return system; + } + + private final PhotonCameraSim cameraSim; + private final Supplier currentPose; + + /** + * Constructs a new simulated camera that is registered by {@link VisionOdometry} + * + * @param name The name of the camera + * @param robotToCamera The transform that converts a camera-relative pose to a robot-relative + * pose + * @param robotPose A function that gets the robot's pose at a given time + * @param getCurrentPose Gets the current robot pose, for updating the vision system + * simulation. + */ + protected RegisteredSimCamera( + String name, + Transform3d robotToCamera, + DoubleFunction robotPose, + Supplier getCurrentPose) { + super(name, robotToCamera, robotPose); + this.currentPose = getCurrentPose; + + SimCameraProperties props = new SimCameraProperties(); + props.setAvgLatencyMs(30); + props.setFPS(CAMERA_FPS); + props.setLatencyStdDevMs(4); + + cameraSim = new PhotonCameraSim(camera, props); + getSystem().addCamera(cameraSim, robotToCamera); + } + + @Override + protected void update() { + getSystem().update(currentPose.get()); + + super.update(); + } +} diff --git a/src/main/java/frc/robot/subsystems/vision/Vision.java b/src/main/java/frc/robot/subsystems/vision/Vision.java index 916a381..2ff931d 100644 --- a/src/main/java/frc/robot/subsystems/vision/Vision.java +++ b/src/main/java/frc/robot/subsystems/vision/Vision.java @@ -1,192 +1,143 @@ -// Copyright (c) 2021-2025 Littleton Robotics -// http://github.com/Mechanical-Advantage -// -// Use of this source code is governed by a BSD -// license that can be found in the LICENSE file -// at the root directory of this project. - package frc.robot.subsystems.vision; -import static frc.robot.subsystems.vision.VisionConstants.*; +import static frc.robot.subsystems.vision.VisionConstants.APRILTAG_LAYOUT; +import static frc.robot.subsystems.vision.VisionConstants.CAMERA_NAMES; +import static frc.robot.subsystems.vision.VisionConstants.angularStdDevBaseline; +import static frc.robot.subsystems.vision.VisionConstants.cameraStdDevFactors; +import static frc.robot.subsystems.vision.VisionConstants.linearStdDevBaseline; +import static frc.robot.subsystems.vision.VisionConstants.maxAmbiguity; +import static frc.robot.subsystems.vision.VisionConstants.maxZError; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Pose3d; -import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; -import edu.wpi.first.wpilibj.Alert; -import edu.wpi.first.wpilibj.Alert.AlertType; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.SubsystemBase; -import frc.robot.subsystems.vision.VisionIO.PoseObservationType; -import java.util.LinkedList; -import java.util.List; +import java.util.ArrayList; +import java.util.concurrent.locks.Lock; +import lombok.val; import org.littletonrobotics.junction.Logger; -public class Vision extends SubsystemBase { +public final class Vision extends SubsystemBase { + static boolean visionEnabled = true; + + public static final void enable() { + visionEnabled = true; + } + + public static final void disable() { + visionEnabled = false; + } + private final VisionConsumer consumer; - private final VisionIO[] io; - private final VisionIOInputsAutoLogged[] inputs; - private final Alert[] disconnectedAlerts; + private final VisionIO[] cameras; + private final VisionIOInputsAutoLogged[] cameraInputs; + private final String[] logKeys; + private final Lock odometryLock; + private final int numCameras; + + private final ArrayList allRobotPoses = new ArrayList<>(); + private final ArrayList allAcceptedPoses = new ArrayList<>(); + private final ArrayList cameraRobotPoses = new ArrayList<>(); + private final ArrayList cameraAcceptedPoses = new ArrayList<>(); public Vision(VisionConsumer consumer, VisionIO... io) { this.consumer = consumer; - this.io = io; + cameras = io; - // Initialize inputs - this.inputs = new VisionIOInputsAutoLogged[io.length]; - for (int i = 0; i < inputs.length; i++) { - inputs[i] = new VisionIOInputsAutoLogged(); - } + numCameras = io.length; - // Initialize disconnected alerts - this.disconnectedAlerts = new Alert[io.length]; - for (int i = 0; i < inputs.length; i++) { - disconnectedAlerts[i] = - new Alert( - "Vision camera " + Integer.toString(i) + " is disconnected.", AlertType.kWarning); + cameraInputs = new VisionIOInputsAutoLogged[numCameras]; + logKeys = new String[numCameras]; + for (int i = 0; i < numCameras; i++) { + cameraInputs[i] = new VisionIOInputsAutoLogged(); + logKeys[i] = "Vision/" + CAMERA_NAMES[i]; } - SmartDashboard.putBoolean("Use Vision", true); - } - - /** - * Returns the X angle to the best target, which can be used for simple servoing with vision. - * - * @param cameraIndex The index of the camera to use. - */ - public Rotation2d getTargetX(int cameraIndex) { - return inputs[cameraIndex].latestTargetObservation.tx(); + odometryLock = VisionOdometry.getInstance().globalLock; } @Override public void periodic() { - for (int i = 0; i < io.length; i++) { - io[i].updateInputs(inputs[i]); - Logger.processInputs("Vision/Camera" + Integer.toString(i), inputs[i]); + odometryLock.lock(); + + try { + for (int i = 0; i < numCameras; i++) { + val inputs = cameraInputs[i]; + cameras[i].updateInputs(inputs); + Logger.processInputs(logKeys[i], inputs); + } + } finally { + odometryLock.unlock(); } - boolean enableVision = SmartDashboard.getBoolean("Use Vision", true); - - // Initialize logging values - List allTagPoses = new LinkedList<>(); - List allRobotPoses = new LinkedList<>(); - List allRobotPosesAccepted = new LinkedList<>(); - List allRobotPosesRejected = new LinkedList<>(); - - // Loop over cameras - for (int cameraIndex = 0; cameraIndex < io.length; cameraIndex++) { - // Update disconnected alert - disconnectedAlerts[cameraIndex].set(!inputs[cameraIndex].connected); - - // Initialize logging values - List tagPoses = new LinkedList<>(); - List robotPoses = new LinkedList<>(); - List robotPosesAccepted = new LinkedList<>(); - List robotPosesRejected = new LinkedList<>(); - - // Add tag poses - for (int tagId : inputs[cameraIndex].tagIds) { - var tagPose = aprilTagLayout.getTagPose(tagId); - if (tagPose.isPresent()) { - tagPoses.add(tagPose.get()); - } + Logger.recordOutput("Vision/Enabled", visionEnabled); + + for (int cameraIdx = 0; cameraIdx < numCameras; cameraIdx++) { + val inputs = cameraInputs[cameraIdx]; + // skip processing inputs if the camera is disconnected + if (!inputs.connected) { + continue; } - // Loop over pose observations - for (var observation : inputs[cameraIndex].poseObservations) { - // Check whether to reject pose - boolean rejectPose = - observation.tagCount() == 0 // Must have at least one tag - || (observation.tagCount() == 1 - && observation.ambiguity() > maxAmbiguity) // Cannot be high ambiguity - || Math.abs(observation.pose().getZ()) - > maxZError // Must have realistic Z coordinate - - // Must be within the field boundaries - || observation.pose().getX() < 0.0 - || observation.pose().getX() > aprilTagLayout.getFieldLength() - || observation.pose().getY() < 0.0 - || observation.pose().getY() > aprilTagLayout.getFieldWidth(); - - // Add pose to log - robotPoses.add(observation.pose()); - if (rejectPose) { - robotPosesRejected.add(observation.pose()); - } else { - robotPosesAccepted.add(observation.pose()); - } + cameraRobotPoses.clear(); + cameraAcceptedPoses.clear(); + + for (var observation : inputs.poseObservations) { + val tagsUsed = observation.tagsUsed(); + val pose = observation.pose(); - // Skip if rejected - if (rejectPose) { + boolean reject = + tagsUsed.length == 0 + || (tagsUsed.length == 1 && observation.averageAmbiguity() > maxAmbiguity) + || Math.abs(pose.getZ()) > maxZError + || pose.getX() < 0 + || pose.getX() > APRILTAG_LAYOUT.getFieldLength() + || pose.getY() < 0 + || pose.getY() > APRILTAG_LAYOUT.getFieldWidth(); + + cameraRobotPoses.add(pose); + if (reject) { continue; } - // Calculate standard deviations - double stdDevFactor = - (Math.pow(observation.averageTagDistance(), 2.0)) / observation.tagCount(); + cameraAcceptedPoses.add(pose); + + double stdDevFactor = Math.pow(observation.averageDistance(), 2) / tagsUsed.length; double linearStdDev = linearStdDevBaseline * stdDevFactor; double angularStdDev = angularStdDevBaseline * stdDevFactor; - if (observation.type() == PoseObservationType.MEGATAG_2) { - linearStdDev *= linearStdDevMegatag2Factor; - angularStdDev *= angularStdDevMegatag2Factor; - } - if (cameraIndex < cameraStdDevFactors.length) { - linearStdDev *= cameraStdDevFactors[cameraIndex]; - angularStdDev *= cameraStdDevFactors[cameraIndex]; - } - SmartDashboard.putNumber("Camera " + cameraIndex + " Pose X", observation.pose().getX()); - SmartDashboard.putNumber("Camera " + cameraIndex + " Pose Y", observation.pose().getY()); + if (cameraIdx < cameraStdDevFactors.length) { + linearStdDev *= cameraStdDevFactors[cameraIdx]; + angularStdDev *= cameraStdDevFactors[cameraIdx]; + } - if (enableVision) { - // Send vision observation - consumer.accept( - observation.pose().toPose2d(), + if (visionEnabled) { + consumer.addVisionPose( + pose.toPose2d(), observation.timestamp(), VecBuilder.fill(linearStdDev, linearStdDev, angularStdDev)); } } - // Log camera datadata Logger.recordOutput( - "Vision/Camera" + Integer.toString(cameraIndex) + "/TagPoses", - tagPoses.toArray(new Pose3d[tagPoses.size()])); + logKeys[cameraIdx] + "/RobotPoses", cameraRobotPoses.toArray(Pose3d[]::new)); Logger.recordOutput( - "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPoses", - robotPoses.toArray(new Pose3d[robotPoses.size()])); - Logger.recordOutput( - "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPosesAccepted", - robotPosesAccepted.toArray(new Pose3d[robotPosesAccepted.size()])); - Logger.recordOutput( - "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPosesRejected", - robotPosesRejected.toArray(new Pose3d[robotPosesRejected.size()])); - allTagPoses.addAll(tagPoses); - allRobotPoses.addAll(robotPoses); - allRobotPosesAccepted.addAll(robotPosesAccepted); - allRobotPosesRejected.addAll(robotPosesRejected); + logKeys[cameraIdx] + "/RobotPosesAccepted", cameraRobotPoses.toArray(Pose3d[]::new)); + + allRobotPoses.addAll(cameraRobotPoses); + allAcceptedPoses.addAll(cameraAcceptedPoses); } - // Log summary data - Logger.recordOutput( - "Vision/Summary/TagPoses", allTagPoses.toArray(new Pose3d[allTagPoses.size()])); - Logger.recordOutput( - "Vision/Summary/RobotPoses", allRobotPoses.toArray(new Pose3d[allRobotPoses.size()])); - Logger.recordOutput( - "Vision/Summary/RobotPosesAccepted", - allRobotPosesAccepted.toArray(new Pose3d[allRobotPosesAccepted.size()])); + Logger.recordOutput("Vision/Summary/RobotPoses", allRobotPoses.toArray(Pose3d[]::new)); Logger.recordOutput( - "Vision/Summary/RobotPosesRejected", - allRobotPosesRejected.toArray(new Pose3d[allRobotPosesRejected.size()])); + "Vision/Summary/RobotPosesAccepted", allAcceptedPoses.toArray(Pose3d[]::new)); } @FunctionalInterface - public static interface VisionConsumer { - public void accept( - Pose2d visionRobotPoseMeters, - double timestampSeconds, - Matrix visionMeasurementStdDevs); + public interface VisionConsumer { + public void addVisionPose(Pose2d pose, double timestamp, Matrix stdDevs); } } diff --git a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java index 458f346..49a863b 100644 --- a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java +++ b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java @@ -1,66 +1,52 @@ -// Copyright (c) 2021-2025 Littleton Robotics -// http://github.com/Mechanical-Advantage -// -// Use of this source code is governed by a BSD -// license that can be found in the LICENSE file -// at the root directory of this project. - package frc.robot.subsystems.vision; import edu.wpi.first.apriltag.AprilTagFieldLayout; import edu.wpi.first.apriltag.AprilTagFields; import edu.wpi.first.math.geometry.Rotation3d; import edu.wpi.first.math.geometry.Transform3d; -import edu.wpi.first.math.geometry.Translation3d; import edu.wpi.first.math.util.Units; +import edu.wpi.first.wpilibj.Filesystem; +import java.nio.file.Paths; +import org.photonvision.PhotonPoseEstimator.PoseStrategy; + +public final class VisionConstants { + private static AprilTagFieldLayout getLayout() { + try { + return new AprilTagFieldLayout( + Paths.get(Filesystem.getDeployDirectory().getAbsolutePath(), "reeftags.json")); + } catch (Exception e) { + e.printStackTrace(); + return AprilTagFieldLayout.loadField(AprilTagFields.k2025ReefscapeWelded); + } + } + + public static final double CAMERA_FPS = 30; + + public static final AprilTagFieldLayout APRILTAG_LAYOUT = getLayout(); + + public static final PoseStrategy MULTI_TAG_POSE_STRATEGY = + PoseStrategy.MULTI_TAG_PNP_ON_COPROCESSOR; + public static final PoseStrategy SINGLE_TAG_POSE_STRATEGY = PoseStrategy.CONSTRAINED_SOLVEPNP; + + public static final String[] CAMERA_NAMES = new String[] {"Left", "Right"}; + public static final Transform3d[] ROBOT_TO_CAMERAS = + new Transform3d[] { + new Transform3d( + Units.inchesToMeters(11.58), + Units.inchesToMeters(11.189), + Units.inchesToMeters(8.25), + new Rotation3d(0, Units.degreesToRadians(-15), Units.degreesToRadians(-20))), + new Transform3d( + Units.inchesToMeters(11.58), + Units.inchesToMeters(-11.189), + Units.inchesToMeters(8.25), + new Rotation3d(0, Units.degreesToRadians(-15), Units.degreesToRadians(15))) + }; -public class VisionConstants { - // AprilTag layout - public static AprilTagFieldLayout aprilTagLayout = - AprilTagFieldLayout.loadField(AprilTagFields.kDefaultField); - - // Camera names, must match names configured on coprocessor - public static final String camera0Name = "Left"; - public static final String camera1Name = "Right"; - - // Robot to camera transforms - // (Not used by Limelight, configure in web UI instead) - public static final Transform3d robotToCamera0 = - new Transform3d( - new Translation3d( - Units.inchesToMeters(11.58), - Units.inchesToMeters(11.189), - Units.inchesToMeters(8.25)), - new Rotation3d(0, Units.degreesToRadians(-15), Units.degreesToRadians(-20))); - public static final Transform3d robotToCamera1 = - new Transform3d( - new Translation3d( - Units.inchesToMeters(11.58), - Units.inchesToMeters(-11.189), - Units.inchesToMeters(8.25)), - new Rotation3d(0, Units.degreesToRadians(-15.0), Units.degreesToRadians(15.0))); - - // Basic filtering thresholds public static final double maxAmbiguity = 0.3; public static final double maxZError = 0.75; + public static final double linearStdDevBaseline = 0.03; + public static final double angularStdDevBaseline = 0.2; - // Standard deviation baselines, for 1 meter distance and 1 tag - // (Adjusted automatically based on distance and # of tags) - public static final double linearStdDevBaseline = 0.02; // Meters - public static final double angularStdDevBaseline = 0.2; // Radians - - // Standard deviation multipliers for each camera - // (Adjust to trust some cameras more than others) - public static final double[] cameraStdDevFactors = - new double[] { - 1.0, // Camera 0 - 1.0 // Camera 1 - }; - - // Multipliers to apply for MegaTag 2 observations - public static final double linearStdDevMegatag2Factor = 0.5; // More stable than full 3D solve - public static final double angularStdDevMegatag2Factor = - Double.POSITIVE_INFINITY; // No rotation data available - - public static final int numCameras = 2; + public static final double[] cameraStdDevFactors = new double[] {1.2, 1}; } diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIO.java b/src/main/java/frc/robot/subsystems/vision/VisionIO.java index e00368d..2ec0bc7 100644 --- a/src/main/java/frc/robot/subsystems/vision/VisionIO.java +++ b/src/main/java/frc/robot/subsystems/vision/VisionIO.java @@ -1,43 +1,65 @@ -// Copyright (c) 2021-2025 Littleton Robotics -// http://github.com/Mechanical-Advantage -// -// Use of this source code is governed by a BSD -// license that can be found in the LICENSE file -// at the root directory of this project. - package frc.robot.subsystems.vision; +import static frc.robot.subsystems.vision.VisionConstants.*; + +import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Pose3d; -import edu.wpi.first.math.geometry.Rotation2d; +import java.util.function.DoubleFunction; +import java.util.function.Supplier; import org.littletonrobotics.junction.AutoLog; +@FunctionalInterface public interface VisionIO { @AutoLog - public static class VisionIOInputs { + public class VisionIOInputs { public boolean connected = false; - public TargetObservation latestTargetObservation = - new TargetObservation(new Rotation2d(), new Rotation2d()); - public PoseObservation[] poseObservations = new PoseObservation[0]; - public int[] tagIds = new int[0]; + public PoseObservation[] poseObservations; } - /** Represents the angle to a simple target, not used for pose estimation. */ - public static record TargetObservation(Rotation2d tx, Rotation2d ty) {} - - /** Represents a robot pose sample used for pose estimation. */ - public static record PoseObservation( - double timestamp, + public final record PoseObservation( Pose3d pose, - double ambiguity, - int tagCount, - double averageTagDistance, - PoseObservationType type) {} - - public static enum PoseObservationType { - MEGATAG_1, - MEGATAG_2, - PHOTONVISION + int[] tagsUsed, + double averageDistance, + double averageAmbiguity, + double timestamp) {} + + public void updateInputs(VisionIOInputs inputs); + + public static final class VisionIOPhotonVision implements VisionIO { + private final RegisteredCamera camera; + + public VisionIOPhotonVision(int cameraIdx, DoubleFunction poseSupplier) { + camera = + VisionOdometry.getInstance() + .registerCamera(CAMERA_NAMES[cameraIdx], ROBOT_TO_CAMERAS[cameraIdx], poseSupplier); + } + + @Override + public void updateInputs(VisionIOInputs inputs) { + inputs.connected = camera.camera.isConnected(); + inputs.poseObservations = camera.poseObservations.toArray(PoseObservation[]::new); + camera.clearCache(); + } } - public default void updateInputs(VisionIOInputs inputs) {} + public final class VisionIOPhotonVisionSim implements VisionIO { + private final RegisteredSimCamera camera; + + public VisionIOPhotonVisionSim( + int cameraIdx, + final DoubleFunction poseSupplier, + final Supplier currentPose) { + camera = + VisionOdometry.getInstance() + .registerSimCamera( + CAMERA_NAMES[cameraIdx], ROBOT_TO_CAMERAS[cameraIdx], poseSupplier, currentPose); + } + + @Override + public void updateInputs(final VisionIOInputs inputs) { + inputs.connected = camera.camera.isConnected(); + inputs.poseObservations = camera.poseObservations.toArray(PoseObservation[]::new); + camera.clearCache(); + } + } } diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java deleted file mode 100644 index 2a65682..0000000 --- a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (c) 2021-2025 Littleton Robotics -// http://github.com/Mechanical-Advantage -// -// Use of this source code is governed by a BSD -// license that can be found in the LICENSE file -// at the root directory of this project. - -package frc.robot.subsystems.vision; - -import static frc.robot.subsystems.vision.VisionConstants.*; - -import edu.wpi.first.math.geometry.Pose3d; -import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.geometry.Transform3d; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import org.photonvision.PhotonCamera; - -/** IO implementation for real PhotonVision hardware. */ -public class VisionIOPhotonVision implements VisionIO { - protected final PhotonCamera camera; - protected final Transform3d robotToCamera; - - /** - * Creates a new VisionIOPhotonVision. - * - * @param name The configured name of the camera. - * @param rotationSupplier The 3D position of the camera relative to the robot. - */ - public VisionIOPhotonVision(String name, Transform3d robotToCamera) { - camera = new PhotonCamera(name); - this.robotToCamera = robotToCamera; - } - - @Override - public void updateInputs(VisionIOInputs inputs) { - inputs.connected = camera.isConnected(); - - // Read new camera observations - Set tagIds = new HashSet<>(); - List poseObservations = new LinkedList<>(); - for (var result : camera.getAllUnreadResults()) { - // Update latest target observation - if (result.hasTargets()) { - inputs.latestTargetObservation = - new TargetObservation( - Rotation2d.fromDegrees(result.getBestTarget().getYaw()), - Rotation2d.fromDegrees(result.getBestTarget().getPitch())); - } else { - inputs.latestTargetObservation = new TargetObservation(new Rotation2d(), new Rotation2d()); - } - - // Add pose observation - if (result.multitagResult.isPresent()) { // Multitag result - var multitagResult = result.multitagResult.get(); - - // Calculate robot pose - Transform3d fieldToCamera = multitagResult.estimatedPose.best; - Transform3d fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); - Pose3d robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); - - // Calculate average tag distance - double totalTagDistance = 0.0; - for (var target : result.targets) { - totalTagDistance += target.bestCameraToTarget.getTranslation().getNorm(); - } - - // Add tag IDs - tagIds.addAll(multitagResult.fiducialIDsUsed); - - // Add observation - poseObservations.add( - new PoseObservation( - result.getTimestampSeconds(), // Timestamp - robotPose, // 3D pose estimate - multitagResult.estimatedPose.ambiguity, // Ambiguity - multitagResult.fiducialIDsUsed.size(), // Tag count - totalTagDistance / result.targets.size(), // Average tag distance - PoseObservationType.PHOTONVISION)); // Observation type - - } else if (!result.targets.isEmpty()) { // Single tag result - var target = result.targets.get(0); - - // Calculate robot pose - var tagPose = aprilTagLayout.getTagPose(target.fiducialId); - if (tagPose.isPresent()) { - Transform3d fieldToTarget = - new Transform3d(tagPose.get().getTranslation(), tagPose.get().getRotation()); - Transform3d cameraToTarget = target.bestCameraToTarget; - Transform3d fieldToCamera = fieldToTarget.plus(cameraToTarget.inverse()); - Transform3d fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); - Pose3d robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); - - // Add tag ID - tagIds.add((short) target.fiducialId); - - // Add observation - poseObservations.add( - new PoseObservation( - result.getTimestampSeconds(), // Timestamp - robotPose, // 3D pose estimate - target.poseAmbiguity, // Ambiguity - 1, // Tag count - cameraToTarget.getTranslation().getNorm(), // Average tag distance - PoseObservationType.PHOTONVISION)); // Observation type - } - } - } - - // Save pose observations to inputs object - inputs.poseObservations = new PoseObservation[poseObservations.size()]; - for (int i = 0; i < poseObservations.size(); i++) { - inputs.poseObservations[i] = poseObservations.get(i); - } - - // Save tag IDs to inputs objects - inputs.tagIds = new int[tagIds.size()]; - int i = 0; - for (int id : tagIds) { - inputs.tagIds[i++] = id; - } - } -} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java deleted file mode 100644 index e1ef86c..0000000 --- a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) 2021-2025 Littleton Robotics -// http://github.com/Mechanical-Advantage -// -// Use of this source code is governed by a BSD -// license that can be found in the LICENSE file -// at the root directory of this project. - -package frc.robot.subsystems.vision; - -import static frc.robot.subsystems.vision.VisionConstants.aprilTagLayout; - -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Transform3d; -import java.util.function.Supplier; -import org.photonvision.simulation.PhotonCameraSim; -import org.photonvision.simulation.SimCameraProperties; -import org.photonvision.simulation.VisionSystemSim; - -/** IO implementation for physics sim using PhotonVision simulator. */ -public class VisionIOPhotonVisionSim extends VisionIOPhotonVision { - private static VisionSystemSim visionSim; - - private final Supplier poseSupplier; - private final PhotonCameraSim cameraSim; - - /** - * Creates a new VisionIOPhotonVisionSim. - * - * @param name The name of the camera. - * @param poseSupplier Supplier for the robot pose to use in simulation. - */ - public VisionIOPhotonVisionSim( - String name, Transform3d robotToCamera, Supplier poseSupplier) { - super(name, robotToCamera); - this.poseSupplier = poseSupplier; - - // Initialize vision sim - if (visionSim == null) { - visionSim = new VisionSystemSim("main"); - visionSim.addAprilTags(aprilTagLayout); - } - - // Add sim camera - var cameraProperties = new SimCameraProperties(); - cameraSim = new PhotonCameraSim(camera, cameraProperties, aprilTagLayout); - visionSim.addCamera(cameraSim, robotToCamera); - } - - @Override - public void updateInputs(VisionIOInputs inputs) { - visionSim.update(poseSupplier.get()); - super.updateInputs(inputs); - } -} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionOdometry.java b/src/main/java/frc/robot/subsystems/vision/VisionOdometry.java new file mode 100644 index 0000000..6e96ff3 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/VisionOdometry.java @@ -0,0 +1,64 @@ +package frc.robot.subsystems.vision; + +import static edu.wpi.first.units.Units.Hertz; +import static frc.robot.subsystems.vision.VisionConstants.CAMERA_FPS; + +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Transform3d; +import frc.robot.util.ParallelizedOdometry; +import frc.robot.util.ParallelizedOdometry.OdometryTask; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.DoubleFunction; +import java.util.function.Supplier; +import lombok.val; + +final class VisionOdometry implements OdometryTask { + private static VisionOdometry instance = null; + + public static VisionOdometry getInstance() { + if (instance == null) { + instance = new VisionOdometry(); + } + + return instance; + } + + public final Lock globalLock = new ReentrantLock(true); + private final List cameras = new ArrayList<>(2); + + public void start() { + ParallelizedOdometry.register(this, Hertz.of(CAMERA_FPS)); + } + + public RegisteredCamera registerCamera( + String name, Transform3d robotToCamera, DoubleFunction poseSupplier) { + val registered = new RegisteredCamera(name, robotToCamera, poseSupplier); + cameras.add(registered); + + return registered; + } + + public RegisteredSimCamera registerSimCamera( + String name, + Transform3d robotToCamera, + DoubleFunction poseSupplier, + Supplier currentPose) { + val registered = new RegisteredSimCamera(name, robotToCamera, poseSupplier, currentPose); + cameras.add(registered); + + return registered; + } + + @Override + public void updateOdometry() { + globalLock.lock(); + try { + cameras.forEach(RegisteredCamera::update); + } finally { + globalLock.unlock(); + } + } +} diff --git a/src/main/java/frc/robot/util/Allocated.java b/src/main/java/frc/robot/util/Allocated.java new file mode 100644 index 0000000..7285b0f --- /dev/null +++ b/src/main/java/frc/robot/util/Allocated.java @@ -0,0 +1,22 @@ +package frc.robot.util; + +import java.util.function.Supplier; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class Allocated implements Supplier { + private T value; + + @Override + public T get() { + return value; + } + + public T set(T newValue) { + final T oldValue = this.value; + this.value = newValue; + + return oldValue; + } +} \ No newline at end of file diff --git a/src/main/java/frc/robot/util/Lazy.java b/src/main/java/frc/robot/util/Lazy.java new file mode 100644 index 0000000..ac7666f --- /dev/null +++ b/src/main/java/frc/robot/util/Lazy.java @@ -0,0 +1,21 @@ +package frc.robot.util; + +import java.util.function.Supplier; + +public final class Lazy implements Supplier { + private T value = null; + private final Supplier supplier; + + public Lazy(Supplier supplier) { + this.supplier = supplier; + } + + @Override + public T get() { + if (value == null) { + value = supplier.get(); + } + + return value; + } +} diff --git a/src/main/java/frc/robot/util/ParallelizedOdometry.java b/src/main/java/frc/robot/util/ParallelizedOdometry.java new file mode 100644 index 0000000..b97fc21 --- /dev/null +++ b/src/main/java/frc/robot/util/ParallelizedOdometry.java @@ -0,0 +1,52 @@ +package frc.robot.util; + +import static edu.wpi.first.units.Units.*; + +import edu.wpi.first.units.measure.Frequency; +import edu.wpi.first.wpilibj.DriverStation; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +public final class ParallelizedOdometry { + private static final ThreadGroup THREAD_GROUP = new ThreadGroup("OdometryThreadGroup"); + private static int THREAD_ID = 0; + private static final Map> scheduledOdometry = + new ConcurrentHashMap<>(); + private static final ScheduledExecutorService workPool = + Executors.newScheduledThreadPool( + 1, + action -> { + Thread thread = new Thread(THREAD_GROUP, action, "OdometryThread" + THREAD_ID++); + thread.setDaemon(true); + + thread.setUncaughtExceptionHandler( + (t, exception) -> { + DriverStation.reportError( + "Uncaught error in odometry threads: " + exception.getMessage(), + exception.getStackTrace()); + }); + + return thread; + }); + + @FunctionalInterface + public interface OdometryTask { + public void updateOdometry(); + } + + public static ScheduledFuture register(OdometryTask task, Frequency freq) { + var future = + workPool.scheduleAtFixedRate( + task::updateOdometry, + 0, + (long) (freq.asPeriod().in(Microseconds)), + TimeUnit.MICROSECONDS); + scheduledOdometry.put(task, future); + + return future; + } +} From cceb44e37112bb485902f754e936b5b7d3c6ba39 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Thu, 2 Oct 2025 19:01:45 -0400 Subject: [PATCH 08/11] Working 3.5pc auto --- .../pathplanner/autos/Own Side 4pc.auto | 30 +++ .../paths/Branch J to Left CS.path | 18 +- .../paths/Branch K to Left CS.path | 66 ++++++ .../paths/Branch L to Left CS.path | 66 ++++++ .../paths/Left CS to Branch K.path | 40 +++- .../paths/Left CS to Branch L.path | 77 +++++++ .../paths/Own Cage to Branch J.path | 30 ++- src/main/deploy/pathplanner/settings.json | 2 +- src/main/java/frc/robot/Constants.java | 6 +- src/main/java/frc/robot/Robot.java | 22 +- src/main/java/frc/robot/RobotContainer.java | 60 +++-- .../frc/robot/commands/DriveCommands.java | 30 ++- .../robot/subsystems/algae_arm/AlgaeArm.java | 48 +++- .../algae_arm/AlgaeArmConstants.java | 3 +- .../subsystems/algae_arm/AlgaeArmIO.java | 25 -- .../subsystems/algae_arm/AlgaeArmIOSim.java | 12 +- .../algae_arm/AlgaeArmIOTalonFX.java | 53 ----- .../frc/robot/subsystems/climber/Climber.java | 13 +- .../subsystems/climber/ClimberConstants.java | 1 - .../robot/subsystems/climber/ClimberIO.java | 5 +- .../subsystems/climber/ClimberIOReal.java | 71 +++--- .../frc/robot/subsystems/drive/Drive.java | 48 ++-- .../robot/subsystems/elevator/Elevator.java | 2 +- .../subsystems/end_effector/EndEffector.java | 7 +- .../subsystems/vision/RegisteredCamera.java | 108 --------- .../vision/RegisteredSimCamera.java | 61 ----- .../frc/robot/subsystems/vision/Vision.java | 217 ++++++++++-------- .../subsystems/vision/VisionConstants.java | 2 +- .../frc/robot/subsystems/vision/VisionIO.java | 73 ++---- .../vision/VisionIOPhotonVision.java | 116 ++++++++++ .../vision/VisionIOPhotonVisionExt.java | 178 ++++++++++++++ .../vision/VisionIOPhotonVisionSim.java | 54 +++++ .../subsystems/vision/VisionOdometry.java | 64 ------ src/main/java/frc/robot/util/Allocated.java | 23 +- .../java/frc/robot/util/BDXboxController.java | 66 ------ .../frc/robot/util/ParallelizedOdometry.java | 52 ----- .../java/frc/robot/util/PositionUtils.java | 8 + src/main/java/frc/robot/util/Statics.java | 26 +++ 38 files changed, 1044 insertions(+), 739 deletions(-) create mode 100644 src/main/deploy/pathplanner/paths/Branch K to Left CS.path create mode 100644 src/main/deploy/pathplanner/paths/Branch L to Left CS.path create mode 100644 src/main/deploy/pathplanner/paths/Left CS to Branch L.path delete mode 100644 src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIO.java delete mode 100644 src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOTalonFX.java delete mode 100644 src/main/java/frc/robot/subsystems/vision/RegisteredCamera.java delete mode 100644 src/main/java/frc/robot/subsystems/vision/RegisteredSimCamera.java create mode 100644 src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java create mode 100644 src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionExt.java create mode 100644 src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java delete mode 100644 src/main/java/frc/robot/subsystems/vision/VisionOdometry.java delete mode 100644 src/main/java/frc/robot/util/BDXboxController.java delete mode 100644 src/main/java/frc/robot/util/ParallelizedOdometry.java create mode 100644 src/main/java/frc/robot/util/Statics.java diff --git a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto index 84d6f0a..d34b6be 100644 --- a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto +++ b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto @@ -39,6 +39,36 @@ "data": { "name": "score_coral" } + }, + { + "type": "path", + "data": { + "pathName": "Branch K to Left CS" + } + }, + { + "type": "named", + "data": { + "name": "coral_intake" + } + }, + { + "type": "path", + "data": { + "pathName": "Left CS to Branch L" + } + }, + { + "type": "named", + "data": { + "name": "score_coral" + } + }, + { + "type": "path", + "data": { + "pathName": "Branch L to Left CS" + } } ] } diff --git a/src/main/deploy/pathplanner/paths/Branch J to Left CS.path b/src/main/deploy/pathplanner/paths/Branch J to Left CS.path index cdd3d21..c54de20 100644 --- a/src/main/deploy/pathplanner/paths/Branch J to Left CS.path +++ b/src/main/deploy/pathplanner/paths/Branch J to Left CS.path @@ -3,13 +3,13 @@ "waypoints": [ { "anchor": { - "x": 5.035, - "y": 5.25 + "x": 4.965, + "y": 5.19 }, "prevControl": null, "nextControl": { - "x": 4.91825858778626, - "y": 5.585768129770992 + "x": 4.84825858778626, + "y": 5.525768129770992 }, "isLocked": false, "linkedName": "Branch J" @@ -32,12 +32,12 @@ }, { "anchor": { - "x": 1.6153977272727271, - "y": 7.300667613636364 + "x": 1.45, + "y": 7.4 }, "prevControl": { - "x": 1.7799223233224872, - "y": 7.112434626902733 + "x": 1.61452459604976, + "y": 7.211767013266369 }, "nextControl": null, "isLocked": false, @@ -76,7 +76,7 @@ ], "globalConstraints": { "maxVelocity": 4.73, - "maxAcceleration": 4.0, + "maxAcceleration": 2.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/paths/Branch K to Left CS.path b/src/main/deploy/pathplanner/paths/Branch K to Left CS.path new file mode 100644 index 0000000..38c2800 --- /dev/null +++ b/src/main/deploy/pathplanner/paths/Branch K to Left CS.path @@ -0,0 +1,66 @@ +{ + "version": "2025.0", + "waypoints": [ + { + "anchor": { + "x": 4.005, + "y": 5.15 + }, + "prevControl": null, + "nextControl": { + "x": 3.248855152232501, + "y": 5.8234050800915345 + }, + "isLocked": false, + "linkedName": "Branch K" + }, + { + "anchor": { + "x": 1.45, + "y": 7.4 + }, + "prevControl": { + "x": 1.7577511668472265, + "y": 7.068527226356515 + }, + "nextControl": null, + "isLocked": false, + "linkedName": "Left CS Outside" + } + ], + "rotationTargets": [], + "constraintZones": [], + "pointTowardsZones": [], + "eventMarkers": [ + { + "name": "elevator_stow", + "waypointRelativePos": 0.1, + "endWaypointRelativePos": null, + "command": { + "type": "named", + "data": { + "name": "elevator_stow" + } + } + } + ], + "globalConstraints": { + "maxVelocity": 4.73, + "maxAcceleration": 2.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + }, + "goalEndState": { + "velocity": 0, + "rotation": -54.0 + }, + "reversed": false, + "folder": "To Coral Station", + "idealStartingState": { + "velocity": 0, + "rotation": -59.99999999999999 + }, + "useDefaultConstraints": true +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/paths/Branch L to Left CS.path b/src/main/deploy/pathplanner/paths/Branch L to Left CS.path new file mode 100644 index 0000000..daf9dd7 --- /dev/null +++ b/src/main/deploy/pathplanner/paths/Branch L to Left CS.path @@ -0,0 +1,66 @@ +{ + "version": "2025.0", + "waypoints": [ + { + "anchor": { + "x": 3.692533396946565, + "y": 5.088382633587786 + }, + "prevControl": null, + "nextControl": { + "x": 2.8215852252247746, + "y": 5.94660399525088 + }, + "isLocked": false, + "linkedName": "Branch L" + }, + { + "anchor": { + "x": 1.45, + "y": 7.4 + }, + "prevControl": { + "x": 1.9812049832571688, + "y": 6.854587884873947 + }, + "nextControl": null, + "isLocked": false, + "linkedName": "Left CS Outside" + } + ], + "rotationTargets": [], + "constraintZones": [], + "pointTowardsZones": [], + "eventMarkers": [ + { + "name": "elevator_stow", + "waypointRelativePos": 0.1, + "endWaypointRelativePos": null, + "command": { + "type": "named", + "data": { + "name": "elevator_stow" + } + } + } + ], + "globalConstraints": { + "maxVelocity": 4.73, + "maxAcceleration": 2.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + }, + "goalEndState": { + "velocity": 0, + "rotation": -54.0 + }, + "reversed": false, + "folder": "To Coral Station", + "idealStartingState": { + "velocity": 0, + "rotation": -59.99999999999999 + }, + "useDefaultConstraints": true +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/paths/Left CS to Branch K.path b/src/main/deploy/pathplanner/paths/Left CS to Branch K.path index 1d14903..06e5770 100644 --- a/src/main/deploy/pathplanner/paths/Left CS to Branch K.path +++ b/src/main/deploy/pathplanner/paths/Left CS to Branch K.path @@ -3,25 +3,41 @@ "waypoints": [ { "anchor": { - "x": 1.6153977272727271, - "y": 7.300667613636364 + "x": 1.45, + "y": 7.4 }, "prevControl": null, "nextControl": { - "x": 2.3322726019898568, - "y": 6.725789978541568 + "x": 2.2601284158419173, + "y": 6.792802327309882 }, "isLocked": false, "linkedName": "Left CS Outside" }, { "anchor": { - "x": 3.935, - "y": 5.25 + "x": 3.3305113636363637, + "y": 6.094105113636363 }, "prevControl": { - "x": 3.034358556076907, - "y": 5.992592821541219 + "x": 3.169357917234621, + "y": 6.285232209341919 + }, + "nextControl": { + "x": 3.4916648100381065, + "y": 5.902978017930808 + }, + "isLocked": false, + "linkedName": null + }, + { + "anchor": { + "x": 4.005, + "y": 5.15 + }, + "prevControl": { + "x": 2.9816800023468852, + "y": 6.569473380310416 }, "nextControl": null, "isLocked": false, @@ -32,8 +48,8 @@ "constraintZones": [ { "name": "Elevator Slow", - "minWaypointRelativePos": 0.6, - "maxWaypointRelativePos": 1.0, + "minWaypointRelativePos": 1.2, + "maxWaypointRelativePos": 2.0, "constraints": { "maxVelocity": 4.73, "maxAcceleration": 3.0, @@ -59,7 +75,7 @@ }, { "name": "elevator_l4", - "waypointRelativePos": 0.8, + "waypointRelativePos": 0.5, "endWaypointRelativePos": null, "command": { "type": "named", @@ -71,7 +87,7 @@ ], "globalConstraints": { "maxVelocity": 4.73, - "maxAcceleration": 4.0, + "maxAcceleration": 2.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/paths/Left CS to Branch L.path b/src/main/deploy/pathplanner/paths/Left CS to Branch L.path new file mode 100644 index 0000000..8407e72 --- /dev/null +++ b/src/main/deploy/pathplanner/paths/Left CS to Branch L.path @@ -0,0 +1,77 @@ +{ + "version": "2025.0", + "waypoints": [ + { + "anchor": { + "x": 1.45, + "y": 7.4 + }, + "prevControl": null, + "nextControl": { + "x": 1.9424841780334252, + "y": 6.824329313184941 + }, + "isLocked": false, + "linkedName": "Left CS Outside" + }, + { + "anchor": { + "x": 3.692533396946565, + "y": 5.088382633587786 + }, + "prevControl": { + "x": 3.149674538700275, + "y": 5.708378454126026 + }, + "nextControl": null, + "isLocked": false, + "linkedName": "Branch L" + } + ], + "rotationTargets": [], + "constraintZones": [], + "pointTowardsZones": [], + "eventMarkers": [ + { + "name": "coral_jog", + "waypointRelativePos": 0, + "endWaypointRelativePos": null, + "command": { + "type": "named", + "data": { + "name": "coral_jog" + } + } + }, + { + "name": "elevator_l4", + "waypointRelativePos": 0.4, + "endWaypointRelativePos": null, + "command": { + "type": "named", + "data": { + "name": "elevator_l4" + } + } + } + ], + "globalConstraints": { + "maxVelocity": 4.73, + "maxAcceleration": 2.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + }, + "goalEndState": { + "velocity": 0, + "rotation": -59.99999999999999 + }, + "reversed": false, + "folder": "To Reef", + "idealStartingState": { + "velocity": 0, + "rotation": -54.0 + }, + "useDefaultConstraints": true +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path b/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path index 2e339fc..d9a1d86 100644 --- a/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path +++ b/src/main/deploy/pathplanner/paths/Own Cage to Branch J.path @@ -8,20 +8,36 @@ }, "prevControl": null, "nextControl": { - "x": 6.031808434661551, - "y": 5.688957694627683 + "x": 5.849087030710886, + "y": 5.944372766023675 }, "isLocked": false, "linkedName": "Own Cage" }, { "anchor": { - "x": 5.035, - "y": 5.25 + "x": 5.584, + "y": 5.945 }, "prevControl": { - "x": 5.510795884425652, - "y": 5.488459919417843 + "x": 5.798306238353328, + "y": 6.073735528129753 + }, + "nextControl": { + "x": 5.291531837432583, + "y": 5.76931195816531 + }, + "isLocked": false, + "linkedName": null + }, + { + "anchor": { + "x": 4.96, + "y": 5.19 + }, + "prevControl": { + "x": 5.093145881788202, + "y": 5.401594362313466 }, "nextControl": null, "isLocked": false, @@ -46,7 +62,7 @@ ], "globalConstraints": { "maxVelocity": 4.0, - "maxAcceleration": 3.0, + "maxAcceleration": 2.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/settings.json b/src/main/deploy/pathplanner/settings.json index 673258f..c105c31 100644 --- a/src/main/deploy/pathplanner/settings.json +++ b/src/main/deploy/pathplanner/settings.json @@ -10,7 +10,7 @@ ], "autoFolders": [], "defaultMaxVel": 4.73, - "defaultMaxAccel": 4.0, + "defaultMaxAccel": 2.0, "defaultMaxAngVel": 540.0, "defaultMaxAngAccel": 720.0, "defaultNominalVoltage": 12.0, diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index 3cfed23..e0836e0 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -20,17 +20,15 @@ public final class Constants { public static final Mode simMode = Mode.SIM; public static final Mode currentMode = RobotBase.isReal() ? Mode.REAL : simMode; - public static final boolean DEVBOT = false; + public static final boolean DEVBOT = RobotBase.isSimulation() ? true : false; public static final double TotalMemory = 100 * 1024 * 1024; public static enum Mode { /** Running on a real robot. */ REAL, - - /** Running a physics simulator. */ + /** Running a physics or match simulator. */ SIM, - /** Replaying from a log file. */ REPLAY } diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 81467ee..b741309 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -48,7 +48,7 @@ public class Robot extends LoggedRobot { .withLevel(NotificationLevel.WARNING) .withNoAutoDismiss(); - public Robot() { + public Robot() { // Preload subsystem classes ClassPreloader.preload( "frc.robot.RobotContainer", @@ -118,18 +118,20 @@ public Robot() { public void robotPeriodic() { val rt = Runtime.getRuntime(); - val usedMem = (double)(rt.totalMemory() - rt.freeMemory()); + val usedMem = (double) (rt.totalMemory() - rt.freeMemory()); - Logger.recordOutput("Robot/Utilized Memory %", usedMem / (double)rt.totalMemory()); + Logger.recordOutput("Robot/Utilized Memory %", usedMem / (double) rt.totalMemory()); Logger.runEveryN( // run every second 2500, () -> { if (usedMem >= 0.9 * Constants.TotalMemory) { - // If memory utilization is too high, send an alert to increase allocated heap size in JVM args + // If memory utilization is too high, send an alert to increase allocated heap size in + // JVM args Elastic.sendNotification(kFullHeapNotification); } else if (usedMem <= 0.5 * Constants.TotalMemory) { - // If memory utilization is too low, send an alert to decrease allocated heap size in JVM args + // If memory utilization is too low, send an alert to decrease allocated heap size in + // JVM args Elastic.sendNotification(kUnusedHeapNotification); } }); @@ -159,6 +161,16 @@ public void disabledInit() { System.gc(); } + @Override + public void disabledPeriodic() { + robotContainer.disabledPeriodic(); + } + + @Override + public void disabledExit() { + Logger.recordOutput("Robot/Near Auto Start", false); + } + /** This autonomous runs the autonomous command selected by your {@link RobotContainer} class. */ @Override public void autonomousInit() { diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 2c0ab11..8852db5 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -7,6 +7,9 @@ package frc.robot; +import static frc.robot.subsystems.vision.VisionConstants.CAMERA_NAMES; +import static frc.robot.subsystems.vision.VisionConstants.ROBOT_TO_CAMERAS; + import com.pathplanner.lib.auto.AutoBuilder; import com.pathplanner.lib.auto.NamedCommands; import com.pathplanner.lib.commands.PathPlannerAuto; @@ -21,14 +24,12 @@ import edu.wpi.first.wpilibj2.command.button.CommandXboxController; import edu.wpi.first.wpilibj2.command.button.Trigger; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; -import frc.robot.Constants.Mode; import frc.robot.FieldConstants.ReefSide; import frc.robot.commands.DriveCommands; +import frc.robot.commands.DriveCommands.JoystickApproachCommand; import frc.robot.generated.TunerConstants; import frc.robot.subsystems.Superstructure; import frc.robot.subsystems.algae_arm.AlgaeArm; -import frc.robot.subsystems.algae_arm.AlgaeArmIOSim; -import frc.robot.subsystems.algae_arm.AlgaeArmIOTalonFX; import frc.robot.subsystems.climber.Climber; import frc.robot.subsystems.climber.ClimberIOReal; import frc.robot.subsystems.drive.Drive; @@ -45,11 +46,14 @@ import frc.robot.subsystems.end_effector.BeamBreakIO; import frc.robot.subsystems.end_effector.EndEffector; import frc.robot.subsystems.vision.Vision; -import frc.robot.subsystems.vision.VisionIO.VisionIOPhotonVision; -import frc.robot.subsystems.vision.VisionIO.VisionIOPhotonVisionSim; +import frc.robot.subsystems.vision.VisionIOPhotonVision; +import frc.robot.subsystems.vision.VisionIOPhotonVisionSim; +import frc.robot.util.PositionUtils; import frc.robot.util.io.talon.TalonFXIO; import java.util.Set; import java.util.function.Supplier; +import lombok.val; +import org.littletonrobotics.junction.Logger; import org.littletonrobotics.junction.networktables.LoggedDashboardChooser; /** @@ -72,9 +76,6 @@ public class RobotContainer { private final Superstructure superstructure; - private final RobotSimState simState = - Constants.currentMode == Mode.SIM ? new RobotSimState() : null; - // Controller private final CommandXboxController controller = new CommandXboxController(0); @@ -107,11 +108,11 @@ public RobotContainer() { vision = new Vision( drive, - new VisionIOPhotonVision(0, drive::getPoseAtTime), - new VisionIOPhotonVision(1, drive::getPoseAtTime)); + new VisionIOPhotonVision(CAMERA_NAMES[0], ROBOT_TO_CAMERAS[0]), + new VisionIOPhotonVision(CAMERA_NAMES[1], ROBOT_TO_CAMERAS[1])); endEffector = EndEffector.createReal(); elevator = new Elevator(new ElevatorIOTalonFX()); - algaeArm = new AlgaeArm(new AlgaeArmIOTalonFX()); + algaeArm = AlgaeArm.createReal(); climber = new Climber(new ClimberIOReal()); break; @@ -127,13 +128,14 @@ public RobotContainer() { vision = new Vision( drive, - new VisionIOPhotonVisionSim(0, drive::getPoseAtTime, drive::getPose), - new VisionIOPhotonVisionSim(0, drive::getPoseAtTime, drive::getPose)); + new VisionIOPhotonVisionSim(CAMERA_NAMES[0], ROBOT_TO_CAMERAS[0], drive::getPose), + new VisionIOPhotonVisionSim(CAMERA_NAMES[1], ROBOT_TO_CAMERAS[1], drive::getPose)); - endEffector = EndEffector.createSim(simState); + endEffector = EndEffector.createSim(); elevator = new Elevator(new ElevatorIOSim()); - algaeArm = new AlgaeArm(new AlgaeArmIOSim()); - // We don't simulate the climber due to the complexity of how it works and the ramifications it + algaeArm = AlgaeArm.createSim(); + // We don't simulate the climber due to the complexity of how it works and the ramifications + // it // has on the rest of the robot climber = new Climber(inputs -> {}); break; @@ -151,7 +153,7 @@ public RobotContainer() { endEffector = new EndEffector(new TalonFXIO() {}, new BeamBreakIO() {}, new BeamBreakIO() {}, false); elevator = new Elevator(new ElevatorIO() {}); - algaeArm = new AlgaeArm(inputs -> {}); + algaeArm = new AlgaeArm(new TalonFXIO() {}); climber = new Climber(inputs -> {}); break; } @@ -186,12 +188,26 @@ public RobotContainer() { // Configure the button bindings configureButtonBindings(); SmartDashboard.putData("Field", field); + SmartDashboard.putData( + "Pathfind To Auto", DriveCommands.pathfindToAuto(drive, autoChooser::get)); } public void periodic() { field.setRobotPose(drive.getPose()); - SmartDashboard.putString("Control Mode", controlMode.toString()); + Logger.recordOutput("Robot/Control Mode", controlMode); + } + + public void disabledPeriodic() { + val auto = autoChooser.get(); + + if (auto instanceof PathPlannerAuto a) { + Logger.recordOutput( + "Robot/Near Auto Start", + PositionUtils.isNear(drive.getPose(), a.getStartingPose(), 0.04)); + } else { + Logger.recordOutput("Robot/Near Auto Start", false); + } } /** @@ -263,7 +279,7 @@ private void configureButtonBindings() { controller.rightTrigger().and(algaeMode).whileTrue(endEffector.scoreProcessor()); controller.povDown().whileTrue(climber.deploy()); - controller.povUp().whileTrue(climber.retract()); + controller.povUp().whileTrue(climber.retract().alongWith(algaeArm.deploy())); } private void configureAutoCommands() { @@ -278,7 +294,7 @@ private void configureAutoCommands() { } private Command joystickApproach(Supplier approach) { - return new DriveCommands.JoystickApproachCommand(drive, () -> -controller.getLeftY(), approach); + return new JoystickApproachCommand(drive, () -> -controller.getLeftY(), approach); } /** @@ -290,6 +306,10 @@ public Command getAutonomousCommand() { return autoChooser.get(); } + /** + * Start the command to stow the elevator. This is so that autonomous doesn't exit with the + * elevator setpoint non-stowed + */ public void stowElevator() { elevator.setTarget(Setpoint.Stowed).schedule(); } diff --git a/src/main/java/frc/robot/commands/DriveCommands.java b/src/main/java/frc/robot/commands/DriveCommands.java index 8ed5583..6c31e24 100644 --- a/src/main/java/frc/robot/commands/DriveCommands.java +++ b/src/main/java/frc/robot/commands/DriveCommands.java @@ -7,6 +7,10 @@ package frc.robot.commands; +import static frc.robot.subsystems.drive.Drive.PP_CONSTRAINTS; + +import com.pathplanner.lib.auto.AutoBuilder; +import com.pathplanner.lib.commands.PathPlannerAuto; import edu.wpi.first.math.MathUtil; import edu.wpi.first.math.controller.ProfiledPIDController; import edu.wpi.first.math.filter.SlewRateLimiter; @@ -23,15 +27,13 @@ import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; import frc.robot.subsystems.drive.Drive; -import frc.robot.util.Allocated; -import lombok.val; - import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.LinkedList; import java.util.List; import java.util.function.DoubleSupplier; import java.util.function.Supplier; +import lombok.val; import org.littletonrobotics.junction.Logger; public final class DriveCommands { @@ -43,17 +45,12 @@ public final class DriveCommands { private static final double ANGLE_MAX_VELOCITY = 8.0; private static final double ANGLE_MAX_ACCELERATION = 20.0; private static final double ANGLE_TOLERANCE = Units.degreesToRadians(5); + private static final double LINE_TOLERANCE = 0.05; private static final double POSITION_TOLERANCE = Units.inchesToMeters(1); private static final double FF_START_DELAY = 2.0; // Secs private static final double FF_RAMP_RATE = 0.1; // Volts/Sec private static final double WHEEL_RADIUS_MAX_VELOCITY = 0.25; // Rad/Sec private static final double WHEEL_RADIUS_RAMP_RATE = 0.05; // Rad/Sec^2 - private static final TrapezoidProfile.Constraints DRIVE_CONSTRAINTS = new TrapezoidProfile.Constraints( - Units.degreesToRadians(540), - Units.degreesToRadians(720)); - private static final TrapezoidProfile.Constraints ANGLE_CONSTRAINTS = new TrapezoidProfile.Constraints( - 4.73, - 5); private DriveCommands() {} @@ -228,7 +225,7 @@ public void execute() { // Calculate total linear velocity Translation2d linearVelocity = getLinearVelocityFromJoysticks(-ySupplier.getAsDouble(), 0) - .times(drive.getMaxLinearSpeedMetersPerSec() / 2) + .times(drive.getMaxLinearSpeedMetersPerSec()) .plus(offsetVector) .rotateBy(targetRotation2d); @@ -402,6 +399,19 @@ public static Command wheelRadiusCharacterization(Drive drive) { }))); } + public static Command pathfindToAuto(Drive drive, Supplier autoSupplier) { + return drive.defer( + () -> { + val auto = autoSupplier.get(); + + if (auto instanceof PathPlannerAuto a) { + return AutoBuilder.pathfindToPose(a.getStartingPose(), PP_CONSTRAINTS); + } else { + return Commands.none(); + } + }); + } + private static class WheelRadiusCharacterizationState { double[] positions = new double[4]; Rotation2d lastAngle = new Rotation2d(); diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java index 67ee2bf..206b729 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java @@ -1,30 +1,62 @@ package frc.robot.subsystems.algae_arm; +import static edu.wpi.first.units.Units.Rotations; +import static frc.robot.subsystems.algae_arm.AlgaeArmConstants.*; + +import edu.wpi.first.math.MathUtil; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.SubsystemBase; +import edu.wpi.first.wpilibj2.command.button.Trigger; +import frc.robot.util.io.talon.TalonFXIO; +import frc.robot.util.io.talon.TalonFXIOImpl; +import frc.robot.util.io.talon.TalonFXIOInputsAutoLogged; import org.littletonrobotics.junction.Logger; -public final class AlgaeArm extends SubsystemBase { - private final AlgaeArmIO io; - private final AlgaeArmIOInputsAutoLogged inputs = new AlgaeArmIOInputsAutoLogged(); +public class AlgaeArm extends SubsystemBase { + private final TalonFXIO io; + private final TalonFXIOInputsAutoLogged inputs = new TalonFXIOInputsAutoLogged(); + + private final Trigger hasDeployed = + new Trigger( + () -> MathUtil.isNear(inputs.position.in(Rotations), DEPLOYED_ANGLE.in(Rotations), 0.01)); + + private final Trigger hasStowed = + new Trigger( + () -> MathUtil.isNear(inputs.position.in(Rotations), DEPLOYED_ANGLE.in(Rotations), 0.01)); + + public AlgaeArm(TalonFXIO motorIO) { + io = motorIO; - public AlgaeArm(AlgaeArmIO io) { - this.io = io; + setDefaultCommand(stow()); } @Override public void periodic() { io.updateInputs(inputs); - Logger.processInputs("AlgaeArm", inputs); + Logger.processInputs("AlgaeArm/Motor", inputs); + } + + public static AlgaeArm createReal() { + return new AlgaeArm(new TalonFXIOImpl(MOTOR_ID, MOTOR_BUS, MOTOR_CONFIG)); + } + + public static AlgaeArm createSim() { + return new AlgaeArm(new AlgaeArmIOSim()); } public Command deploy() { - return runOnce(io::deploy).andThen(Commands.idle(this)).withName("Deploy Algae Arm"); + return Commands.sequence( + runOnce(() -> io.setDutyCycle(.8)), + Commands.waitUntil(hasDeployed), + runOnce(() -> io.stopMotor())); } public Command stow() { - return runOnce(io::stow).andThen(Commands.idle(this)).withName("Stow Algae Arm"); + return Commands.sequence( + runOnce(() -> io.setDutyCycle(-.8)), + Commands.waitUntil(hasStowed), + runOnce(() -> io.stopMotor())); } } diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java index d5fb7e7..aaad1cd 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmConstants.java @@ -12,7 +12,6 @@ import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.signals.GravityTypeValue; import com.ctre.phoenix6.signals.NeutralModeValue; - import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.Distance; import frc.robot.Constants; @@ -37,7 +36,7 @@ public final class AlgaeArmConstants { .withSupplyCurrentLimitEnable(true); public static final FeedbackConfigs FEEDBACK_CONFIGS = new FeedbackConfigs().withSensorToMechanismRatio(SYSTEM_REDUCTION); - public static final MotorOutputConfigs MOTOR_OUTPUT = + public static final MotorOutputConfigs MOTOR_OUTPUT = new MotorOutputConfigs().withNeutralMode(NeutralModeValue.Brake); public static final Slot0Configs SLOT_0 = new Slot0Configs() diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIO.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIO.java deleted file mode 100644 index 1cdc153..0000000 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIO.java +++ /dev/null @@ -1,25 +0,0 @@ -package frc.robot.subsystems.algae_arm; - -import static edu.wpi.first.units.Units.Rotations; -import static edu.wpi.first.units.Units.RotationsPerSecond; - -import edu.wpi.first.units.measure.Angle; -import edu.wpi.first.units.measure.AngularVelocity; -import org.littletonrobotics.junction.AutoLog; - -@FunctionalInterface -public interface AlgaeArmIO { - @AutoLog - public static class AlgaeArmIOInputs { - public boolean connected = false; - public Angle position = Rotations.zero(); - public AngularVelocity velocity = RotationsPerSecond.zero(); - public Angle setpoint = Rotations.zero(); - } - - public void updateInputs(AlgaeArmIOInputs inputs); - - public default void deploy() {} - - public default void stow() {} -} diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java index 595f4cd..dd58b2f 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOSim.java @@ -10,20 +10,20 @@ import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj.simulation.SingleJointedArmSim; -import lombok.val; +import frc.robot.util.io.talon.TalonFXIOImpl; -public final class AlgaeArmIOSim extends AlgaeArmIOTalonFX { +public class AlgaeArmIOSim extends TalonFXIOImpl { private final SingleJointedArmSim physicsSim; private final TalonFXSimState simState; private double lastTimestamp = Timer.getTimestamp(); public AlgaeArmIOSim() { - super(); + super(MOTOR_ID, MOTOR_BUS, MOTOR_CONFIG); simState = talon.getSimState(); - DCMotor motor = DCMotor.getKrakenX60Foc(1).withReduction(SYSTEM_REDUCTION); + DCMotor motor = DCMotor.getKrakenX60Foc(1).withReduction(25); // the reduction is already accounted for, so set it to 1 - val linearSystem = LinearSystemId.createSingleJointedArmSystem(motor, kMoi, 1); + var linearSystem = LinearSystemId.createSingleJointedArmSystem(motor, kMoi, 1); physicsSim = new SingleJointedArmSim( linearSystem, @@ -37,7 +37,7 @@ public AlgaeArmIOSim() { } @Override - public void updateInputs(AlgaeArmIOInputs inputs) { + public void updateInputs(TalonFXIOInputs inputs) { simState.setSupplyVoltage(RobotController.getBatteryVoltage()); physicsSim.setInputVoltage(simState.getMotorVoltage()); diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOTalonFX.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOTalonFX.java deleted file mode 100644 index daef348..0000000 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArmIOTalonFX.java +++ /dev/null @@ -1,53 +0,0 @@ -package frc.robot.subsystems.algae_arm; - -import static edu.wpi.first.units.Units.Amps; -import static frc.robot.subsystems.algae_arm.AlgaeArmConstants.*; -import static frc.robot.util.phoenix.PhoenixUtil.tryUntilOk; - -import com.ctre.phoenix6.BaseStatusSignal; -import com.ctre.phoenix6.StatusSignal; -import com.ctre.phoenix6.controls.PositionTorqueCurrentFOC; -import com.ctre.phoenix6.hardware.TalonFX; -import edu.wpi.first.units.measure.Angle; -import edu.wpi.first.units.measure.AngularVelocity; - -public sealed class AlgaeArmIOTalonFX implements AlgaeArmIO permits AlgaeArmIOSim { - protected final TalonFX talon = new TalonFX(MOTOR_ID, MOTOR_BUS); - private final PositionTorqueCurrentFOC positionRequest = - new PositionTorqueCurrentFOC(0).withSlot(0).withUpdateFreqHz(100).withFeedForward(Amps.of(4)); - - private final StatusSignal position = talon.getPosition(); - private final StatusSignal velocity = talon.getVelocity(); - private Angle target = STOWED_ANGLE; - - public AlgaeArmIOTalonFX() { - tryUntilOk(5, () -> talon.getConfigurator().apply(MOTOR_CONFIG)); - - BaseStatusSignal.setUpdateFrequencyForAll(100, position, velocity); - talon.optimizeBusUtilization(); - } - - @Override - public void updateInputs(AlgaeArmIOInputs inputs) { - inputs.connected = BaseStatusSignal.refreshAll(position, velocity).isOK(); - - inputs.position = position.getValue(); - inputs.velocity = velocity.getValue(); - inputs.setpoint = target; - } - - private void executeTarget(Angle target) { - this.target = target; - talon.setControl(positionRequest.withPosition(target)); - } - - @Override - public void deploy() { - executeTarget(DEPLOYED_ANGLE); - } - - @Override - public void stow() { - executeTarget(STOWED_ANGLE); - } -} diff --git a/src/main/java/frc/robot/subsystems/climber/Climber.java b/src/main/java/frc/robot/subsystems/climber/Climber.java index 29c7c43..3dffd0e 100644 --- a/src/main/java/frc/robot/subsystems/climber/Climber.java +++ b/src/main/java/frc/robot/subsystems/climber/Climber.java @@ -22,14 +22,15 @@ public void periodic() { public Command deploy() { return runOnce(io::deploy) - .andThen(Commands.idle(this)) - .finallyDo(io::stop) - .withName("Deploy Climber"); + .andThen(Commands.idle(this)) + .finallyDo(io::stop) + .withName("Deploy Climber"); } + public Command retract() { return runOnce(io::retract) - .andThen(Commands.idle(this)) - .finallyDo(io::stop) - .withName("Retract Climber"); + .andThen(Commands.idle(this)) + .finallyDo(io::stop) + .withName("Retract Climber"); } } diff --git a/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java b/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java index 9a600a2..2ec08fe 100644 --- a/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java +++ b/src/main/java/frc/robot/subsystems/climber/ClimberConstants.java @@ -5,7 +5,6 @@ import com.ctre.phoenix6.configs.MotorOutputConfigs; import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.signals.NeutralModeValue; - import frc.robot.Constants; public class ClimberConstants { diff --git a/src/main/java/frc/robot/subsystems/climber/ClimberIO.java b/src/main/java/frc/robot/subsystems/climber/ClimberIO.java index 8dfc11d..01a3c51 100644 --- a/src/main/java/frc/robot/subsystems/climber/ClimberIO.java +++ b/src/main/java/frc/robot/subsystems/climber/ClimberIO.java @@ -3,10 +3,9 @@ import static edu.wpi.first.units.Units.Degrees; import static edu.wpi.first.units.Units.RotationsPerSecond; -import org.littletonrobotics.junction.AutoLog; - import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.AngularVelocity; +import org.littletonrobotics.junction.AutoLog; @FunctionalInterface public interface ClimberIO { @@ -21,6 +20,8 @@ public static class ClimberIOInputs { public void updateInputs(ClimberIOInputs inputs); public default void deploy() {} + public default void retract() {} + public default void stop() {} } diff --git a/src/main/java/frc/robot/subsystems/climber/ClimberIOReal.java b/src/main/java/frc/robot/subsystems/climber/ClimberIOReal.java index 735ec7d..522c10d 100644 --- a/src/main/java/frc/robot/subsystems/climber/ClimberIOReal.java +++ b/src/main/java/frc/robot/subsystems/climber/ClimberIOReal.java @@ -6,44 +6,43 @@ import com.ctre.phoenix6.StatusSignal; import com.ctre.phoenix6.hardware.TalonFX; - import edu.wpi.first.units.measure.AngularVelocity; import edu.wpi.first.wpilibj.Servo; public class ClimberIOReal implements ClimberIO { - private final Servo servo = new Servo(SERVO_ID); - private final TalonFX talon = new TalonFX(MOTOR_ID, MOTOR_BUS); - private final StatusSignal velocity = talon.getVelocity(); - - public ClimberIOReal() { - tryUntilOk(5, () -> talon.getConfigurator().apply(MOTOR_CONFIG)); - velocity.setUpdateFrequency(100); - talon.optimizeBusUtilization(); - } - - @Override - public void updateInputs(ClimberIOInputs inputs) { - velocity.refresh(); - - inputs.connected = velocity.getStatus().isOK(); - inputs.motorSpeed = velocity.getValue(); - inputs.servoSetpoint = Degrees.of(servo.getAngle()); - } - - @Override - public void deploy() { - servo.setAngle(80); - talon.set(-1); - } - - @Override - public void retract() { - talon.set(1); - } - - @Override - public void stop() { - talon.stopMotor(); - servo.setAngle(50); - } + private final Servo servo = new Servo(SERVO_ID); + private final TalonFX talon = new TalonFX(MOTOR_ID, MOTOR_BUS); + private final StatusSignal velocity = talon.getVelocity(); + + public ClimberIOReal() { + tryUntilOk(5, () -> talon.getConfigurator().apply(MOTOR_CONFIG)); + velocity.setUpdateFrequency(100); + talon.optimizeBusUtilization(); + } + + @Override + public void updateInputs(ClimberIOInputs inputs) { + velocity.refresh(); + + inputs.connected = velocity.getStatus().isOK(); + inputs.motorSpeed = velocity.getValue(); + inputs.servoSetpoint = Degrees.of(servo.getAngle()); + } + + @Override + public void deploy() { + servo.setAngle(80); + talon.set(-1); + } + + @Override + public void retract() { + talon.set(1); + } + + @Override + public void stop() { + talon.stopMotor(); + servo.setAngle(50); + } } diff --git a/src/main/java/frc/robot/subsystems/drive/Drive.java b/src/main/java/frc/robot/subsystems/drive/Drive.java index 2f9db96..19495e4 100644 --- a/src/main/java/frc/robot/subsystems/drive/Drive.java +++ b/src/main/java/frc/robot/subsystems/drive/Drive.java @@ -15,6 +15,7 @@ import com.pathplanner.lib.config.PIDConstants; import com.pathplanner.lib.config.RobotConfig; import com.pathplanner.lib.controllers.PPHolonomicDriveController; +import com.pathplanner.lib.path.PathConstraints; import com.pathplanner.lib.pathfinding.Pathfinding; import com.pathplanner.lib.util.PathPlannerLogging; import edu.wpi.first.hal.FRCNetComm.tInstances; @@ -46,6 +47,7 @@ import frc.robot.generated.TunerConstants; import frc.robot.subsystems.vision.Vision.VisionConsumer; import frc.robot.util.LocalADStarAK; +import frc.robot.util.Statics; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import org.littletonrobotics.junction.AutoLogOutput; @@ -68,27 +70,29 @@ public class Drive extends SubsystemBase implements VisionConsumer { private static final double ROBOT_MASS_KG = 74.088; private static final double ROBOT_MOI = 6.883; private static final double WHEEL_COF = 1.2; - private static RobotConfig PP_CONFIG; - - static { - try { - PP_CONFIG = RobotConfig.fromGUISettings(); - } catch (Exception e) { - PP_CONFIG = - new RobotConfig( - ROBOT_MASS_KG, - ROBOT_MOI, - new ModuleConfig( - TunerConstants.FrontLeft.WheelRadius, - TunerConstants.kSpeedAt12Volts.in(MetersPerSecond), - WHEEL_COF, - DCMotor.getKrakenX60Foc(1) - .withReduction(TunerConstants.FrontLeft.DriveMotorGearRatio), - TunerConstants.FrontLeft.SlipCurrent, - 1), - getModuleTranslations()); - } - } + private static final RobotConfig PP_CONFIG = + Statics.initOrDefault( + RobotConfig::fromGUISettings, + () -> + new RobotConfig( + ROBOT_MASS_KG, + ROBOT_MOI, + new ModuleConfig( + TunerConstants.FrontLeft.WheelRadius, + TunerConstants.kSpeedAt12Volts.in(MetersPerSecond), + WHEEL_COF, + DCMotor.getKrakenX60Foc(1) + .withReduction(TunerConstants.FrontLeft.DriveMotorGearRatio), + TunerConstants.FrontLeft.SlipCurrent, + 2), + getModuleTranslations())); + public static final PathConstraints PP_CONSTRAINTS = + new PathConstraints( + MetersPerSecond.of(4.73), + MetersPerSecondPerSecond.of(5), + DegreesPerSecond.of(540), + DegreesPerSecondPerSecond.of(720), + Volts.of(12)); static final Lock odometryLock = new ReentrantLock(); private final GyroIO gyroIO; @@ -359,7 +363,7 @@ public void setPoseIfSim(Pose2d pose) { @Override /** Adds a new timestamped vision measurement. */ - public void addVisionPose(Pose2d pose, double timestamp, Matrix stdDevs) { + public void addVisionMeasurement(Pose2d pose, double timestamp, Matrix stdDevs) { poseEstimator.addVisionMeasurement(pose, timestamp, stdDevs); } diff --git a/src/main/java/frc/robot/subsystems/elevator/Elevator.java b/src/main/java/frc/robot/subsystems/elevator/Elevator.java index d1cfe97..c7bbe43 100644 --- a/src/main/java/frc/robot/subsystems/elevator/Elevator.java +++ b/src/main/java/frc/robot/subsystems/elevator/Elevator.java @@ -59,7 +59,7 @@ public boolean isAlgae() { private Setpoint currentSetpoint = Setpoint.Stowed; public final Trigger isAtSetpoint = - new Trigger(() -> inputs.leaderPosition.isNear(currentSetpoint.target, Rotations.of(0.1))); + new Trigger(() -> inputs.leaderPosition.isNear(currentSetpoint.target, Rotations.of(0.075))); public Elevator(ElevatorIO motorIO) { io = motorIO; diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java index 849e585..0ee65c2 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java @@ -9,7 +9,6 @@ import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.SubsystemBase; -import frc.robot.RobotSimState; import frc.robot.util.io.talon.TalonFXIO; import frc.robot.util.io.talon.TalonFXIOImpl; import frc.robot.util.io.talon.TalonFXIOInputsAutoLogged; @@ -52,11 +51,11 @@ kMotorID, kMotorBus, new TalonFXConfiguration().withCurrentLimits(configs)), true); } - public static EndEffector createSim(RobotSimState state) { + public static EndEffector createSim() { return new EndEffector( new TalonFXIOSimImpl(kMotorID, kMotorBus, true, kSystemMOI, 1), - new BeamBreakIOSupplierSim(state::hasCoral), - new BeamBreakIOSupplierSim(state::hasCoral), + new BeamBreakIOSupplierSim(() -> false), + new BeamBreakIOSupplierSim(() -> false), false); } diff --git a/src/main/java/frc/robot/subsystems/vision/RegisteredCamera.java b/src/main/java/frc/robot/subsystems/vision/RegisteredCamera.java deleted file mode 100644 index 772620d..0000000 --- a/src/main/java/frc/robot/subsystems/vision/RegisteredCamera.java +++ /dev/null @@ -1,108 +0,0 @@ -package frc.robot.subsystems.vision; - -import static frc.robot.subsystems.vision.VisionConstants.*; - -import edu.wpi.first.math.Matrix; -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Transform3d; -import edu.wpi.first.math.numbers.N1; -import edu.wpi.first.math.numbers.N3; -import edu.wpi.first.math.numbers.N8; -import frc.robot.subsystems.vision.VisionIO.PoseObservation; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.function.DoubleFunction; -import lombok.val; -import org.photonvision.PhotonCamera; -import org.photonvision.PhotonPoseEstimator; -import org.photonvision.estimation.TargetModel; - -/** Represents a single camera registered to VisionOdometry. */ -sealed class RegisteredCamera permits RegisteredSimCamera { - // camera data - protected final PhotonCamera camera; - protected final PhotonPoseEstimator poseEstimator; - protected final DoubleFunction robotPose; - // a cached list - final List poseObservations = new ArrayList<>(); - - // camera data caches for the pose estimator - private final Optional> cameraMatrix; - private final Optional> distanceCoeffs; - - /** - * Constructs a single registered camera. This method should only be called in {@link - * VisionOdometry}, or by {@link RegisteredSimCamera} - * - * @param name The name of the camera - * @param robotToCamera The transform vector to convert a camera-relative pose to a robot-relative - * pose. - * @param robotPoseSupplier A function to get the robot's pose at a given timestamp. - */ - protected RegisteredCamera( - String name, Transform3d robotToCamera, DoubleFunction robotPoseSupplier) { - camera = new PhotonCamera(name); - robotPose = robotPoseSupplier; - - poseEstimator = - new PhotonPoseEstimator(APRILTAG_LAYOUT, MULTI_TAG_POSE_STRATEGY, robotToCamera); - poseEstimator.setMultiTagFallbackStrategy(SINGLE_TAG_POSE_STRATEGY); - poseEstimator.setTagModel(TargetModel.kAprilTag36h11); - - cameraMatrix = camera.getCameraMatrix(); - distanceCoeffs = camera.getDistCoeffs(); - } - - /** - * Updates the camera's pose estimations, calculating poses for all unread results and adding them - * to this camera's cache. - */ - protected void update() { - for (val result : camera.getAllUnreadResults()) { - double timestamp = result.getTimestampSeconds(); - - val pose = robotPose.apply(timestamp); - poseEstimator.addHeadingData(timestamp, pose.getRotation()); - poseEstimator.setReferencePose(pose); - - val update = poseEstimator.update(result, cameraMatrix, distanceCoeffs); - - if (update.isPresent()) { - val estimation = update.get(); - - val targets = estimation.targetsUsed; - val numTargets = targets.size(); - - final int[] tagsUsed = new int[numTargets]; - double averageDistance = 0; - double averageAmbiguity = 0; - - for (int i = 0; i < numTargets; i++) { - val target = targets.get(i); - - tagsUsed[i] = target.fiducialId; - averageDistance += target.bestCameraToTarget.getTranslation().getNorm(); - averageAmbiguity += target.poseAmbiguity; - } - - val observation = - new PoseObservation( - estimation.estimatedPose, - tagsUsed, - averageDistance / numTargets, - averageAmbiguity / numTargets, - estimation.timestampSeconds); - poseObservations.add(observation); - } - } - } - - /** - * Clears this camera's cache, assuming all results have been logged and processed by {@link - * Vision#periodic()} - */ - public void clearCache() { - poseObservations.clear(); - } -} diff --git a/src/main/java/frc/robot/subsystems/vision/RegisteredSimCamera.java b/src/main/java/frc/robot/subsystems/vision/RegisteredSimCamera.java deleted file mode 100644 index ea0f073..0000000 --- a/src/main/java/frc/robot/subsystems/vision/RegisteredSimCamera.java +++ /dev/null @@ -1,61 +0,0 @@ -package frc.robot.subsystems.vision; - -import static frc.robot.subsystems.vision.VisionConstants.*; - -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Transform3d; -import java.util.function.DoubleFunction; -import java.util.function.Supplier; -import org.photonvision.simulation.PhotonCameraSim; -import org.photonvision.simulation.SimCameraProperties; -import org.photonvision.simulation.VisionSystemSim; - -final class RegisteredSimCamera extends RegisteredCamera { - private static VisionSystemSim system = null; - - private static VisionSystemSim getSystem() { - if (system == null) { - system = new VisionSystemSim("main"); - system.addAprilTags(APRILTAG_LAYOUT); - } - - return system; - } - - private final PhotonCameraSim cameraSim; - private final Supplier currentPose; - - /** - * Constructs a new simulated camera that is registered by {@link VisionOdometry} - * - * @param name The name of the camera - * @param robotToCamera The transform that converts a camera-relative pose to a robot-relative - * pose - * @param robotPose A function that gets the robot's pose at a given time - * @param getCurrentPose Gets the current robot pose, for updating the vision system - * simulation. - */ - protected RegisteredSimCamera( - String name, - Transform3d robotToCamera, - DoubleFunction robotPose, - Supplier getCurrentPose) { - super(name, robotToCamera, robotPose); - this.currentPose = getCurrentPose; - - SimCameraProperties props = new SimCameraProperties(); - props.setAvgLatencyMs(30); - props.setFPS(CAMERA_FPS); - props.setLatencyStdDevMs(4); - - cameraSim = new PhotonCameraSim(camera, props); - getSystem().addCamera(cameraSim, robotToCamera); - } - - @Override - protected void update() { - getSystem().update(currentPose.get()); - - super.update(); - } -} diff --git a/src/main/java/frc/robot/subsystems/vision/Vision.java b/src/main/java/frc/robot/subsystems/vision/Vision.java index 2ff931d..f5740ab 100644 --- a/src/main/java/frc/robot/subsystems/vision/Vision.java +++ b/src/main/java/frc/robot/subsystems/vision/Vision.java @@ -1,12 +1,13 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + package frc.robot.subsystems.vision; -import static frc.robot.subsystems.vision.VisionConstants.APRILTAG_LAYOUT; -import static frc.robot.subsystems.vision.VisionConstants.CAMERA_NAMES; -import static frc.robot.subsystems.vision.VisionConstants.angularStdDevBaseline; -import static frc.robot.subsystems.vision.VisionConstants.cameraStdDevFactors; -import static frc.robot.subsystems.vision.VisionConstants.linearStdDevBaseline; -import static frc.robot.subsystems.vision.VisionConstants.maxAmbiguity; -import static frc.robot.subsystems.vision.VisionConstants.maxZError; +import static frc.robot.subsystems.vision.VisionConstants.*; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.VecBuilder; @@ -14,130 +15,164 @@ import edu.wpi.first.math.geometry.Pose3d; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; +import edu.wpi.first.wpilibj.Alert; +import edu.wpi.first.wpilibj.Alert.AlertType; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.SubsystemBase; -import java.util.ArrayList; -import java.util.concurrent.locks.Lock; -import lombok.val; +import java.util.LinkedList; +import java.util.List; import org.littletonrobotics.junction.Logger; -public final class Vision extends SubsystemBase { - static boolean visionEnabled = true; - - public static final void enable() { - visionEnabled = true; - } - - public static final void disable() { - visionEnabled = false; - } - +public class Vision extends SubsystemBase { private final VisionConsumer consumer; - private final VisionIO[] cameras; - private final VisionIOInputsAutoLogged[] cameraInputs; - private final String[] logKeys; - private final Lock odometryLock; - private final int numCameras; - - private final ArrayList allRobotPoses = new ArrayList<>(); - private final ArrayList allAcceptedPoses = new ArrayList<>(); - private final ArrayList cameraRobotPoses = new ArrayList<>(); - private final ArrayList cameraAcceptedPoses = new ArrayList<>(); + private final VisionIO[] io; + private final VisionIOInputsAutoLogged[] inputs; + private final Alert[] disconnectedAlerts; public Vision(VisionConsumer consumer, VisionIO... io) { this.consumer = consumer; - cameras = io; + this.io = io; - numCameras = io.length; + // Initialize inputs + this.inputs = new VisionIOInputsAutoLogged[io.length]; + for (int i = 0; i < inputs.length; i++) { + inputs[i] = new VisionIOInputsAutoLogged(); + } - cameraInputs = new VisionIOInputsAutoLogged[numCameras]; - logKeys = new String[numCameras]; - for (int i = 0; i < numCameras; i++) { - cameraInputs[i] = new VisionIOInputsAutoLogged(); - logKeys[i] = "Vision/" + CAMERA_NAMES[i]; + // Initialize disconnected alerts + this.disconnectedAlerts = new Alert[io.length]; + for (int i = 0; i < inputs.length; i++) { + disconnectedAlerts[i] = + new Alert( + "Vision camera " + Integer.toString(i) + " is disconnected.", AlertType.kWarning); } - odometryLock = VisionOdometry.getInstance().globalLock; + SmartDashboard.putBoolean("Use Vision", true); } @Override public void periodic() { - odometryLock.lock(); - - try { - for (int i = 0; i < numCameras; i++) { - val inputs = cameraInputs[i]; - cameras[i].updateInputs(inputs); - Logger.processInputs(logKeys[i], inputs); - } - } finally { - odometryLock.unlock(); + for (int i = 0; i < io.length; i++) { + io[i].updateInputs(inputs[i]); + Logger.processInputs("Vision/Camera" + Integer.toString(i), inputs[i]); } - Logger.recordOutput("Vision/Enabled", visionEnabled); - - for (int cameraIdx = 0; cameraIdx < numCameras; cameraIdx++) { - val inputs = cameraInputs[cameraIdx]; - // skip processing inputs if the camera is disconnected - if (!inputs.connected) { - continue; + boolean enableVision = SmartDashboard.getBoolean("Use Vision", true); + + // Initialize logging values + List allTagPoses = new LinkedList<>(); + List allRobotPoses = new LinkedList<>(); + List allRobotPosesAccepted = new LinkedList<>(); + List allRobotPosesRejected = new LinkedList<>(); + + // Loop over cameras + for (int cameraIndex = 0; cameraIndex < io.length; cameraIndex++) { + // Update disconnected alert + disconnectedAlerts[cameraIndex].set(!inputs[cameraIndex].connected); + + // Initialize logging values + List tagPoses = new LinkedList<>(); + List robotPoses = new LinkedList<>(); + List robotPosesAccepted = new LinkedList<>(); + List robotPosesRejected = new LinkedList<>(); + + // Add tag poses + for (int tagId : inputs[cameraIndex].tagIds) { + var tagPose = APRILTAG_LAYOUT.getTagPose(tagId); + if (tagPose.isPresent()) { + tagPoses.add(tagPose.get()); + } } - cameraRobotPoses.clear(); - cameraAcceptedPoses.clear(); - - for (var observation : inputs.poseObservations) { - val tagsUsed = observation.tagsUsed(); - val pose = observation.pose(); - - boolean reject = - tagsUsed.length == 0 - || (tagsUsed.length == 1 && observation.averageAmbiguity() > maxAmbiguity) - || Math.abs(pose.getZ()) > maxZError - || pose.getX() < 0 - || pose.getX() > APRILTAG_LAYOUT.getFieldLength() - || pose.getY() < 0 - || pose.getY() > APRILTAG_LAYOUT.getFieldWidth(); + // Loop over pose observations + for (var observation : inputs[cameraIndex].poseObservations) { + // Check whether to reject pose + boolean rejectPose = + observation.tagCount() == 0 // Must have at least one tag + || (observation.tagCount() == 1 + && observation.ambiguity() > maxAmbiguity) // Cannot be high ambiguity + || Math.abs(observation.pose().getZ()) + > maxZError // Must have realistic Z coordinate + + // Must be within the field boundaries + || observation.pose().getX() < 0.0 + || observation.pose().getX() > APRILTAG_LAYOUT.getFieldLength() + || observation.pose().getY() < 0.0 + || observation.pose().getY() > APRILTAG_LAYOUT.getFieldWidth(); + + // Add pose to log + robotPoses.add(observation.pose()); + if (rejectPose) { + robotPosesRejected.add(observation.pose()); + } else { + robotPosesAccepted.add(observation.pose()); + } - cameraRobotPoses.add(pose); - if (reject) { + // Skip if rejected + if (rejectPose) { continue; } - cameraAcceptedPoses.add(pose); - - double stdDevFactor = Math.pow(observation.averageDistance(), 2) / tagsUsed.length; + // Calculate standard deviations + double stdDevFactor = + (Math.pow(observation.averageTagDistance(), 2.0)) / observation.tagCount(); double linearStdDev = linearStdDevBaseline * stdDevFactor; double angularStdDev = angularStdDevBaseline * stdDevFactor; - if (cameraIdx < cameraStdDevFactors.length) { - linearStdDev *= cameraStdDevFactors[cameraIdx]; - angularStdDev *= cameraStdDevFactors[cameraIdx]; + if (cameraIndex < cameraStdDevFactors.length) { + linearStdDev *= cameraStdDevFactors[cameraIndex]; + angularStdDev *= cameraStdDevFactors[cameraIndex]; } - if (visionEnabled) { - consumer.addVisionPose( - pose.toPose2d(), + SmartDashboard.putNumber("Camera " + cameraIndex + " Pose X", observation.pose().getX()); + SmartDashboard.putNumber("Camera " + cameraIndex + " Pose Y", observation.pose().getY()); + + if (enableVision) { + // Send vision observation + consumer.addVisionMeasurement( + observation.pose().toPose2d(), observation.timestamp(), VecBuilder.fill(linearStdDev, linearStdDev, angularStdDev)); } } + // Log camera datadata Logger.recordOutput( - logKeys[cameraIdx] + "/RobotPoses", cameraRobotPoses.toArray(Pose3d[]::new)); + "Vision/Camera" + Integer.toString(cameraIndex) + "/TagPoses", + tagPoses.toArray(new Pose3d[tagPoses.size()])); Logger.recordOutput( - logKeys[cameraIdx] + "/RobotPosesAccepted", cameraRobotPoses.toArray(Pose3d[]::new)); - - allRobotPoses.addAll(cameraRobotPoses); - allAcceptedPoses.addAll(cameraAcceptedPoses); + "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPoses", + robotPoses.toArray(new Pose3d[robotPoses.size()])); + Logger.recordOutput( + "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPosesAccepted", + robotPosesAccepted.toArray(new Pose3d[robotPosesAccepted.size()])); + Logger.recordOutput( + "Vision/Camera" + Integer.toString(cameraIndex) + "/RobotPosesRejected", + robotPosesRejected.toArray(new Pose3d[robotPosesRejected.size()])); + allTagPoses.addAll(tagPoses); + allRobotPoses.addAll(robotPoses); + allRobotPosesAccepted.addAll(robotPosesAccepted); + allRobotPosesRejected.addAll(robotPosesRejected); } - Logger.recordOutput("Vision/Summary/RobotPoses", allRobotPoses.toArray(Pose3d[]::new)); + // Log summary data + Logger.recordOutput( + "Vision/Summary/TagPoses", allTagPoses.toArray(new Pose3d[allTagPoses.size()])); + Logger.recordOutput( + "Vision/Summary/RobotPoses", allRobotPoses.toArray(new Pose3d[allRobotPoses.size()])); + Logger.recordOutput( + "Vision/Summary/RobotPosesAccepted", + allRobotPosesAccepted.toArray(new Pose3d[allRobotPosesAccepted.size()])); Logger.recordOutput( - "Vision/Summary/RobotPosesAccepted", allAcceptedPoses.toArray(Pose3d[]::new)); + "Vision/Summary/RobotPosesRejected", + allRobotPosesRejected.toArray(new Pose3d[allRobotPosesRejected.size()])); } @FunctionalInterface - public interface VisionConsumer { - public void addVisionPose(Pose2d pose, double timestamp, Matrix stdDevs); + public static interface VisionConsumer { + public void addVisionMeasurement( + Pose2d visionRobotPoseMeters, + double timestampSeconds, + Matrix visionMeasurementStdDevs); } } diff --git a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java index 49a863b..224a9cf 100644 --- a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java +++ b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java @@ -26,7 +26,7 @@ private static AprilTagFieldLayout getLayout() { public static final PoseStrategy MULTI_TAG_POSE_STRATEGY = PoseStrategy.MULTI_TAG_PNP_ON_COPROCESSOR; - public static final PoseStrategy SINGLE_TAG_POSE_STRATEGY = PoseStrategy.CONSTRAINED_SOLVEPNP; + public static final PoseStrategy SINGLE_TAG_POSE_STRATEGY = PoseStrategy.PNP_DISTANCE_TRIG_SOLVE; public static final String[] CAMERA_NAMES = new String[] {"Left", "Right"}; public static final Transform3d[] ROBOT_TO_CAMERAS = diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIO.java b/src/main/java/frc/robot/subsystems/vision/VisionIO.java index 2ec0bc7..464238f 100644 --- a/src/main/java/frc/robot/subsystems/vision/VisionIO.java +++ b/src/main/java/frc/robot/subsystems/vision/VisionIO.java @@ -1,65 +1,38 @@ -package frc.robot.subsystems.vision; +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. -import static frc.robot.subsystems.vision.VisionConstants.*; +package frc.robot.subsystems.vision; -import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Pose3d; -import java.util.function.DoubleFunction; -import java.util.function.Supplier; import org.littletonrobotics.junction.AutoLog; @FunctionalInterface public interface VisionIO { @AutoLog - public class VisionIOInputs { + public static class VisionIOInputs { public boolean connected = false; - public PoseObservation[] poseObservations; + public PoseObservation[] poseObservations = new PoseObservation[0]; + public int[] tagIds = new int[0]; } - public final record PoseObservation( + /** Represents a robot pose sample used for pose estimation. */ + public static record PoseObservation( + double timestamp, Pose3d pose, - int[] tagsUsed, - double averageDistance, - double averageAmbiguity, - double timestamp) {} - - public void updateInputs(VisionIOInputs inputs); - - public static final class VisionIOPhotonVision implements VisionIO { - private final RegisteredCamera camera; - - public VisionIOPhotonVision(int cameraIdx, DoubleFunction poseSupplier) { - camera = - VisionOdometry.getInstance() - .registerCamera(CAMERA_NAMES[cameraIdx], ROBOT_TO_CAMERAS[cameraIdx], poseSupplier); - } - - @Override - public void updateInputs(VisionIOInputs inputs) { - inputs.connected = camera.camera.isConnected(); - inputs.poseObservations = camera.poseObservations.toArray(PoseObservation[]::new); - camera.clearCache(); - } + double ambiguity, + int tagCount, + double averageTagDistance, + PoseObservationType type) {} + + public static enum PoseObservationType { + MEGATAG_1, + MEGATAG_2, + PHOTONVISION } - public final class VisionIOPhotonVisionSim implements VisionIO { - private final RegisteredSimCamera camera; - - public VisionIOPhotonVisionSim( - int cameraIdx, - final DoubleFunction poseSupplier, - final Supplier currentPose) { - camera = - VisionOdometry.getInstance() - .registerSimCamera( - CAMERA_NAMES[cameraIdx], ROBOT_TO_CAMERAS[cameraIdx], poseSupplier, currentPose); - } - - @Override - public void updateInputs(final VisionIOInputs inputs) { - inputs.connected = camera.camera.isConnected(); - inputs.poseObservations = camera.poseObservations.toArray(PoseObservation[]::new); - camera.clearCache(); - } - } + public void updateInputs(VisionIOInputs inputs); } diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java new file mode 100644 index 0000000..1918cd6 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java @@ -0,0 +1,116 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.vision; + +import static frc.robot.subsystems.vision.VisionConstants.*; + +import edu.wpi.first.math.geometry.Pose3d; +import edu.wpi.first.math.geometry.Transform3d; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import org.photonvision.PhotonCamera; + +/** IO implementation for real PhotonVision hardware. */ +public class VisionIOPhotonVision implements VisionIO { + protected final PhotonCamera camera; + protected final Transform3d robotToCamera; + + /** + * Creates a new VisionIOPhotonVision. + * + * @param name The configured name of the camera. + * @param rotationSupplier The 3D position of the camera relative to the robot. + */ + public VisionIOPhotonVision(String name, Transform3d robotToCamera) { + camera = new PhotonCamera(name); + this.robotToCamera = robotToCamera; + } + + @Override + public void updateInputs(VisionIOInputs inputs) { + inputs.connected = camera.isConnected(); + + // Read new camera observations + Set tagIds = new HashSet<>(); + List poseObservations = new LinkedList<>(); + for (var result : camera.getAllUnreadResults()) { + // Update latest target observation + + // Add pose observation + if (result.multitagResult.isPresent()) { // Multitag result + var multitagResult = result.multitagResult.get(); + + // Calculate robot pose + Transform3d fieldToCamera = multitagResult.estimatedPose.best; + Transform3d fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); + Pose3d robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); + + // Calculate average tag distance + double totalTagDistance = 0.0; + for (var target : result.targets) { + totalTagDistance += target.bestCameraToTarget.getTranslation().getNorm(); + } + + // Add tag IDs + tagIds.addAll(multitagResult.fiducialIDsUsed); + + // Add observation + poseObservations.add( + new PoseObservation( + result.getTimestampSeconds(), // Timestamp + robotPose, // 3D pose estimate + multitagResult.estimatedPose.ambiguity, // Ambiguity + multitagResult.fiducialIDsUsed.size(), // Tag count + totalTagDistance / result.targets.size(), // Average tag distance + PoseObservationType.PHOTONVISION)); // Observation type + + } else if (!result.targets.isEmpty()) { // Single tag result + var target = result.targets.get(0); + + // Calculate robot pose + var tagPose = APRILTAG_LAYOUT.getTagPose(target.fiducialId); + if (tagPose.isPresent()) { + Transform3d fieldToTarget = + new Transform3d(tagPose.get().getTranslation(), tagPose.get().getRotation()); + Transform3d cameraToTarget = target.bestCameraToTarget; + Transform3d fieldToCamera = fieldToTarget.plus(cameraToTarget.inverse()); + Transform3d fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); + Pose3d robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); + + // Add tag ID + tagIds.add((short) target.fiducialId); + + // Add observation + poseObservations.add( + new PoseObservation( + result.getTimestampSeconds(), // Timestamp + robotPose, // 3D pose estimate + target.poseAmbiguity, // Ambiguity + 1, // Tag count + cameraToTarget.getTranslation().getNorm(), // Average tag distance + PoseObservationType.PHOTONVISION)); // Observation type + } + } + } + + // Save pose observations to inputs object + inputs.poseObservations = new PoseObservation[poseObservations.size()]; + for (int i = 0; i < poseObservations.size(); i++) { + inputs.poseObservations[i] = poseObservations.get(i); + } + + // Save tag IDs to inputs objects + inputs.tagIds = new int[tagIds.size()]; + int i = 0; + for (int id : tagIds) { + inputs.tagIds[i++] = id; + } + } +} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionExt.java b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionExt.java new file mode 100644 index 0000000..3288c76 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionExt.java @@ -0,0 +1,178 @@ +package frc.robot.subsystems.vision; + +import static frc.robot.subsystems.vision.VisionConstants.*; + +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Pose3d; +import edu.wpi.first.math.geometry.Transform3d; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.DoubleFunction; +import lombok.val; +import org.photonvision.EstimatedRobotPose; +import org.photonvision.PhotonCamera; +import org.photonvision.PhotonPoseEstimator; +import org.photonvision.targeting.MultiTargetPNPResult; +import org.photonvision.targeting.PhotonPipelineResult; + +public final class VisionIOPhotonVisionExt implements VisionIO { + protected final PhotonCamera camera; + private final Transform3d robotToCamera; + private final PhotonPoseEstimator poseEstimator; + private final DoubleFunction robotPoseGetter; + private final List results = new ArrayList<>(10); + private final Set tagIds = new HashSet<>(APRILTAG_LAYOUT.getTags().size()); + + /** + * Creates a new photonvision camera I/O layer. + * + * @param idx The index of the camera's name and robot-to-camera + * @param robotPose A function that gets the robot's pose at a given timestamp + */ + public VisionIOPhotonVisionExt(int idx, DoubleFunction robotPose) { + camera = new PhotonCamera(CAMERA_NAMES[idx]); + robotToCamera = ROBOT_TO_CAMERAS[idx]; + robotPoseGetter = robotPose; + + poseEstimator = + new PhotonPoseEstimator(APRILTAG_LAYOUT, MULTI_TAG_POSE_STRATEGY, robotToCamera); + poseEstimator.setMultiTagFallbackStrategy(SINGLE_TAG_POSE_STRATEGY); + } + + @Override + public void updateInputs(VisionIOInputs inputs) { + results.clear(); + tagIds.clear(); + + val distCoeffs = camera.getDistCoeffs(); + val camMatrix = camera.getCameraMatrix(); + + for (val update : camera.getAllUnreadResults()) { + val timestamp = update.getTimestampSeconds(); + + val robotPoseAtTime = robotPoseGetter.apply(timestamp); + poseEstimator.setLastPose(robotPoseAtTime); + poseEstimator.addHeadingData(timestamp, robotPoseAtTime.getRotation()); + + val result = poseEstimator.update(update, camMatrix, distCoeffs); + + result.ifPresentOrElse( + this::handlePoseEstimation, + () -> { + if (update.multitagResult.isPresent()) { + handleMultitag(update.multitagResult.get(), update); + } else if (update.targets.size() > 0) { + handleSingleTag(update); + } + }); + } + + inputs.connected = camera.isConnected(); + inputs.tagIds = tagIds.stream().mapToInt(id -> (int) id).toArray(); + inputs.poseObservations = results.toArray(PoseObservation[]::new); + } + + /** + * Creates a {@link PoseObservation} from an EstimatedRobotPose and appends it to the list of + * results. + * + * @param estimation The robot pose estimation to convert. + */ + private void handlePoseEstimation(EstimatedRobotPose estimation) { + val targets = estimation.targetsUsed; + val numTargets = targets.size(); + val tagsUsed = new HashSet<>(numTargets); + + double ambiguity = 0; + double tagDistance = 0; + + for (val target : targets) { + val id = target.fiducialId; + tagsUsed.add(id); + + // INVARIANT: Because the PhotonPoseEstimator only sees the tags we give it (so + // APRILTAG_LAYOUT), + // we do not need to check if the tags used are present in the layout. + ambiguity += target.getPoseAmbiguity(); + tagDistance += target.bestCameraToTarget.getTranslation().getNorm(); + } + + ambiguity /= numTargets; + tagDistance /= numTargets; + + val observation = + new PoseObservation( + estimation.timestampSeconds, + estimation.estimatedPose, + ambiguity, + tagsUsed.size(), + tagDistance, + PoseObservationType.PHOTONVISION); + + results.add(observation); + } + + private void handleMultitag(MultiTargetPNPResult multitag, PhotonPipelineResult result) { + // Calculate the robot pose + val fieldToCamera = multitag.estimatedPose.best; + val fieldToRobot = fieldToCamera.plus(robotToCamera.inverse()); + val robotPose = new Pose3d(fieldToRobot.getTranslation(), fieldToRobot.getRotation()); + + // Calculate the average tag distance + double totalTagDistance = 0; + for (val target : result.targets) { + totalTagDistance += target.bestCameraToTarget.getTranslation().getNorm(); + } + + // Add all of the tag IDs + tagIds.addAll(multitag.fiducialIDsUsed); + + // Add the observation + results.add( + new PoseObservation( + result.getTimestampSeconds(), + robotPose, + multitag.estimatedPose.ambiguity, + multitag.fiducialIDsUsed.size(), + totalTagDistance / result.targets.size(), + PoseObservationType.PHOTONVISION)); + } + + private void handleSingleTag(PhotonPipelineResult singletag) { + singletag.targets.sort((o1, o2) -> Double.compare(o1.poseAmbiguity, o2.poseAmbiguity)); + + for (val target : singletag.targets) { + val tagPose = APRILTAG_LAYOUT.getTagPose(target.fiducialId); + + if (tagPose.isPresent()) { + // Get the tag pose out of the Optional + val targetPose = tagPose.get(); + + // Calculate the robot's pose from the camera-to-target and tag pose + val cameraToTarget = target.bestCameraToTarget; + val fieldToCamera = targetPose.plus(cameraToTarget.inverse()); + val robotPose = fieldToCamera.plus(robotToCamera.inverse()); + + // Add the tag ID + tagIds.add((short) target.fiducialId); + + results.add( + new PoseObservation( + singletag.getTimestampSeconds(), + robotPose, + target.poseAmbiguity, + 1, + cameraToTarget.getTranslation().getNorm(), + PoseObservationType.PHOTONVISION)); + + // Stop evaluating targets + return; + } + + // Continue until we have a target whose pose does exist + continue; + } + } +} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java new file mode 100644 index 0000000..4ccfef7 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionSim.java @@ -0,0 +1,54 @@ +// Copyright (c) 2021-2025 Littleton Robotics +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by a BSD +// license that can be found in the LICENSE file +// at the root directory of this project. + +package frc.robot.subsystems.vision; + +import static frc.robot.subsystems.vision.VisionConstants.APRILTAG_LAYOUT; + +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Transform3d; +import java.util.function.Supplier; +import org.photonvision.simulation.PhotonCameraSim; +import org.photonvision.simulation.SimCameraProperties; +import org.photonvision.simulation.VisionSystemSim; + +/** IO implementation for physics sim using PhotonVision simulator. */ +public class VisionIOPhotonVisionSim extends VisionIOPhotonVision { + private static VisionSystemSim visionSim; + + private final Supplier poseSupplier; + private final PhotonCameraSim cameraSim; + + /** + * Creates a new VisionIOPhotonVisionSim. + * + * @param name The name of the camera. + * @param poseSupplier Supplier for the robot pose to use in simulation. + */ + public VisionIOPhotonVisionSim( + String name, Transform3d robotToCamera, Supplier poseSupplier) { + super(name, robotToCamera); + this.poseSupplier = poseSupplier; + + // Initialize vision sim + if (visionSim == null) { + visionSim = new VisionSystemSim("main"); + visionSim.addAprilTags(APRILTAG_LAYOUT); + } + + // Add sim camera + var cameraProperties = new SimCameraProperties(); + cameraSim = new PhotonCameraSim(camera, cameraProperties, APRILTAG_LAYOUT); + visionSim.addCamera(cameraSim, robotToCamera); + } + + @Override + public void updateInputs(VisionIOInputs inputs) { + visionSim.update(poseSupplier.get()); + super.updateInputs(inputs); + } +} diff --git a/src/main/java/frc/robot/subsystems/vision/VisionOdometry.java b/src/main/java/frc/robot/subsystems/vision/VisionOdometry.java deleted file mode 100644 index 6e96ff3..0000000 --- a/src/main/java/frc/robot/subsystems/vision/VisionOdometry.java +++ /dev/null @@ -1,64 +0,0 @@ -package frc.robot.subsystems.vision; - -import static edu.wpi.first.units.Units.Hertz; -import static frc.robot.subsystems.vision.VisionConstants.CAMERA_FPS; - -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Transform3d; -import frc.robot.util.ParallelizedOdometry; -import frc.robot.util.ParallelizedOdometry.OdometryTask; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; -import java.util.function.DoubleFunction; -import java.util.function.Supplier; -import lombok.val; - -final class VisionOdometry implements OdometryTask { - private static VisionOdometry instance = null; - - public static VisionOdometry getInstance() { - if (instance == null) { - instance = new VisionOdometry(); - } - - return instance; - } - - public final Lock globalLock = new ReentrantLock(true); - private final List cameras = new ArrayList<>(2); - - public void start() { - ParallelizedOdometry.register(this, Hertz.of(CAMERA_FPS)); - } - - public RegisteredCamera registerCamera( - String name, Transform3d robotToCamera, DoubleFunction poseSupplier) { - val registered = new RegisteredCamera(name, robotToCamera, poseSupplier); - cameras.add(registered); - - return registered; - } - - public RegisteredSimCamera registerSimCamera( - String name, - Transform3d robotToCamera, - DoubleFunction poseSupplier, - Supplier currentPose) { - val registered = new RegisteredSimCamera(name, robotToCamera, poseSupplier, currentPose); - cameras.add(registered); - - return registered; - } - - @Override - public void updateOdometry() { - globalLock.lock(); - try { - cameras.forEach(RegisteredCamera::update); - } finally { - globalLock.unlock(); - } - } -} diff --git a/src/main/java/frc/robot/util/Allocated.java b/src/main/java/frc/robot/util/Allocated.java index 7285b0f..eef2b26 100644 --- a/src/main/java/frc/robot/util/Allocated.java +++ b/src/main/java/frc/robot/util/Allocated.java @@ -1,22 +1,21 @@ package frc.robot.util; import java.util.function.Supplier; - import lombok.AllArgsConstructor; @AllArgsConstructor public class Allocated implements Supplier { - private T value; + private T value; - @Override - public T get() { - return value; - } + @Override + public T get() { + return value; + } - public T set(T newValue) { - final T oldValue = this.value; - this.value = newValue; + public T set(T newValue) { + final T oldValue = this.value; + this.value = newValue; - return oldValue; - } -} \ No newline at end of file + return oldValue; + } +} diff --git a/src/main/java/frc/robot/util/BDXboxController.java b/src/main/java/frc/robot/util/BDXboxController.java deleted file mode 100644 index 9e6b9ff..0000000 --- a/src/main/java/frc/robot/util/BDXboxController.java +++ /dev/null @@ -1,66 +0,0 @@ -package frc.robot.util; - -import edu.wpi.first.wpilibj.XboxController.Button; -import edu.wpi.first.wpilibj.event.EventLoop; -import edu.wpi.first.wpilibj2.command.button.CommandXboxController; -import edu.wpi.first.wpilibj2.command.button.Trigger; -import java.util.Arrays; -import java.util.function.IntPredicate; -import java.util.stream.IntStream; - -public class BDXboxController extends CommandXboxController { - /** - * Constructs an instance of a controller. - * - * @param port The port index on the Driver Station that the controller is plugged into. - */ - public BDXboxController(int port) { - super(port); - } - - public boolean getRawButton(int button) { - return getHID().getRawButton(button); - } - - public Trigger allMeetPredicate( - final EventLoop loop, final IntPredicate predicate, final Button... buttons) { - final IntStream stream = Arrays.asList(buttons).stream().mapToInt(b -> b.value); - - return new Trigger(loop, () -> stream.allMatch(predicate)); - } - - public Trigger allMeetPredicate(final IntPredicate predicate, final Button... buttons) { - final IntStream stream = Arrays.asList(buttons).stream().mapToInt(b -> b.value); - - return new Trigger(() -> stream.allMatch(predicate)); - } - - public Trigger anyMeetPredicate( - final EventLoop loop, final IntPredicate predicate, final Button... buttons) { - final IntStream stream = Arrays.asList(buttons).stream().mapToInt(b -> b.value); - - return new Trigger(loop, () -> stream.anyMatch(predicate)); - } - - public Trigger anyMeetPredicate(final IntPredicate predicate, final Button... buttons) { - final IntStream stream = Arrays.asList(buttons).stream().mapToInt(b -> b.value); - - return new Trigger(() -> stream.anyMatch(predicate)); - } - - public Trigger all(final EventLoop loop, final Button... buttons) { - return allMeetPredicate(loop, this::getRawButton, buttons); - } - - public Trigger all(final Button... buttons) { - return allMeetPredicate(this::getRawButton, buttons); - } - - public Trigger any(final EventLoop loop, final Button... buttons) { - return anyMeetPredicate(loop, this::getRawButton, buttons); - } - - public Trigger any(final Button... buttons) { - return anyMeetPredicate(this::getRawButton, buttons); - } -} diff --git a/src/main/java/frc/robot/util/ParallelizedOdometry.java b/src/main/java/frc/robot/util/ParallelizedOdometry.java deleted file mode 100644 index b97fc21..0000000 --- a/src/main/java/frc/robot/util/ParallelizedOdometry.java +++ /dev/null @@ -1,52 +0,0 @@ -package frc.robot.util; - -import static edu.wpi.first.units.Units.*; - -import edu.wpi.first.units.measure.Frequency; -import edu.wpi.first.wpilibj.DriverStation; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -public final class ParallelizedOdometry { - private static final ThreadGroup THREAD_GROUP = new ThreadGroup("OdometryThreadGroup"); - private static int THREAD_ID = 0; - private static final Map> scheduledOdometry = - new ConcurrentHashMap<>(); - private static final ScheduledExecutorService workPool = - Executors.newScheduledThreadPool( - 1, - action -> { - Thread thread = new Thread(THREAD_GROUP, action, "OdometryThread" + THREAD_ID++); - thread.setDaemon(true); - - thread.setUncaughtExceptionHandler( - (t, exception) -> { - DriverStation.reportError( - "Uncaught error in odometry threads: " + exception.getMessage(), - exception.getStackTrace()); - }); - - return thread; - }); - - @FunctionalInterface - public interface OdometryTask { - public void updateOdometry(); - } - - public static ScheduledFuture register(OdometryTask task, Frequency freq) { - var future = - workPool.scheduleAtFixedRate( - task::updateOdometry, - 0, - (long) (freq.asPeriod().in(Microseconds)), - TimeUnit.MICROSECONDS); - scheduledOdometry.put(task, future); - - return future; - } -} diff --git a/src/main/java/frc/robot/util/PositionUtils.java b/src/main/java/frc/robot/util/PositionUtils.java index 0a79d93..d32c8f0 100644 --- a/src/main/java/frc/robot/util/PositionUtils.java +++ b/src/main/java/frc/robot/util/PositionUtils.java @@ -1,5 +1,6 @@ package frc.robot.util; +import edu.wpi.first.math.MathUtil; import edu.wpi.first.math.geometry.Pose2d; import frc.robot.subsystems.drive.Drive; @@ -11,4 +12,11 @@ public static double getDistance(Pose2d from, Pose2d to) { public static double getDistance(Drive drive, Pose2d to) { return getDistance(drive.getPose(), to); } + + public static boolean isNear(Pose2d pose1, Pose2d pose2, double tolerance) { + return MathUtil.isNear(pose1.getX(), pose2.getX(), tolerance) + && MathUtil.isNear(pose1.getY(), pose2.getY(), tolerance) + && MathUtil.isNear( + pose1.getRotation().getRadians(), pose1.getRotation().getRadians(), tolerance); + } } diff --git a/src/main/java/frc/robot/util/Statics.java b/src/main/java/frc/robot/util/Statics.java new file mode 100644 index 0000000..bd83cff --- /dev/null +++ b/src/main/java/frc/robot/util/Statics.java @@ -0,0 +1,26 @@ +package frc.robot.util; + +import java.util.function.Supplier; +import lombok.val; + +public final class Statics { + /** An interface that represents a function that may throw any exception. */ + @FunctionalInterface + public interface ThrowingSupplier { + public T get() throws Exception; + } + + public static final T initOrDefault(ThrowingSupplier init, Supplier defaultSupplier) { + try { + return init.get(); + } catch (Exception e) { + val throwable = e.fillInStackTrace(); + + System.err.println("=".repeat(50) + "\nError occurred: " + throwable.getMessage()); + throwable.printStackTrace(); + System.err.println("Not a critical error, robot code continues" + "=".repeat(50)); + } + + return defaultSupplier.get(); + } +} From 027419b4ed2e9fab99461a2b106cef304d81adb9 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Sat, 4 Oct 2025 21:25:57 -0400 Subject: [PATCH 09/11] Governor's Cup final code --- .../pathplanner/autos/Own Side 4pc.auto | 6 + .../paths/Branch J to Left CS.path | 2 +- .../paths/Branch K to Left CS.path | 10 +- .../paths/Branch L to Left CS.path | 10 +- .../paths/Left CS to Branch K.path | 18 +- .../paths/Left CS to Branch L.path | 30 ++- src/main/deploy/pathplanner/settings.json | 2 +- src/main/deploy/reeftags.json | 242 ++++++++++++++++++ src/main/java/frc/robot/RobotContainer.java | 25 +- .../frc/robot/commands/DriveCommands.java | 59 +++-- .../frc/robot/subsystems/Superstructure.java | 3 +- .../robot/subsystems/drive/GyroIOPigeon2.java | 2 +- .../subsystems/end_effector/EndEffector.java | 9 +- .../end_effector/EndEffectorConstants.java | 2 +- .../subsystems/vision/VisionConstants.java | 18 +- .../java/frc/robot/util/AllianceFlipUtil.java | 5 +- 16 files changed, 359 insertions(+), 84 deletions(-) create mode 100644 src/main/deploy/reeftags.json diff --git a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto index d34b6be..4ceab9f 100644 --- a/src/main/deploy/pathplanner/autos/Own Side 4pc.auto +++ b/src/main/deploy/pathplanner/autos/Own Side 4pc.auto @@ -69,6 +69,12 @@ "data": { "pathName": "Branch L to Left CS" } + }, + { + "type": "named", + "data": { + "name": "coral_intake" + } } ] } diff --git a/src/main/deploy/pathplanner/paths/Branch J to Left CS.path b/src/main/deploy/pathplanner/paths/Branch J to Left CS.path index c54de20..cd17e5b 100644 --- a/src/main/deploy/pathplanner/paths/Branch J to Left CS.path +++ b/src/main/deploy/pathplanner/paths/Branch J to Left CS.path @@ -76,7 +76,7 @@ ], "globalConstraints": { "maxVelocity": 4.73, - "maxAcceleration": 2.0, + "maxAcceleration": 3.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/paths/Branch K to Left CS.path b/src/main/deploy/pathplanner/paths/Branch K to Left CS.path index 38c2800..7510491 100644 --- a/src/main/deploy/pathplanner/paths/Branch K to Left CS.path +++ b/src/main/deploy/pathplanner/paths/Branch K to Left CS.path @@ -3,13 +3,13 @@ "waypoints": [ { "anchor": { - "x": 4.005, - "y": 5.15 + "x": 3.99, + "y": 5.165 }, "prevControl": null, "nextControl": { - "x": 3.248855152232501, - "y": 5.8234050800915345 + "x": 3.2338551522325014, + "y": 5.838405080091534 }, "isLocked": false, "linkedName": "Branch K" @@ -46,7 +46,7 @@ ], "globalConstraints": { "maxVelocity": 4.73, - "maxAcceleration": 2.0, + "maxAcceleration": 3.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/paths/Branch L to Left CS.path b/src/main/deploy/pathplanner/paths/Branch L to Left CS.path index daf9dd7..1ee55cd 100644 --- a/src/main/deploy/pathplanner/paths/Branch L to Left CS.path +++ b/src/main/deploy/pathplanner/paths/Branch L to Left CS.path @@ -3,13 +3,13 @@ "waypoints": [ { "anchor": { - "x": 3.692533396946565, - "y": 5.088382633587786 + "x": 3.7, + "y": 5.08 }, "prevControl": null, "nextControl": { - "x": 2.8215852252247746, - "y": 5.94660399525088 + "x": 2.82905182827821, + "y": 5.938221361663094 }, "isLocked": false, "linkedName": "Branch L" @@ -46,7 +46,7 @@ ], "globalConstraints": { "maxVelocity": 4.73, - "maxAcceleration": 2.0, + "maxAcceleration": 3.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/paths/Left CS to Branch K.path b/src/main/deploy/pathplanner/paths/Left CS to Branch K.path index 06e5770..0b66a32 100644 --- a/src/main/deploy/pathplanner/paths/Left CS to Branch K.path +++ b/src/main/deploy/pathplanner/paths/Left CS to Branch K.path @@ -8,7 +8,7 @@ }, "prevControl": null, "nextControl": { - "x": 2.2601284158419173, + "x": 2.260128415841917, "y": 6.792802327309882 }, "isLocked": false, @@ -32,12 +32,12 @@ }, { "anchor": { - "x": 4.005, - "y": 5.15 + "x": 3.99, + "y": 5.165 }, "prevControl": { - "x": 2.9816800023468852, - "y": 6.569473380310416 + "x": 2.966680002346885, + "y": 6.584473380310416 }, "nextControl": null, "isLocked": false, @@ -48,11 +48,11 @@ "constraintZones": [ { "name": "Elevator Slow", - "minWaypointRelativePos": 1.2, + "minWaypointRelativePos": 1.0, "maxWaypointRelativePos": 2.0, "constraints": { - "maxVelocity": 4.73, - "maxAcceleration": 3.0, + "maxVelocity": 4.0, + "maxAcceleration": 2.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, @@ -87,7 +87,7 @@ ], "globalConstraints": { "maxVelocity": 4.73, - "maxAcceleration": 2.0, + "maxAcceleration": 3.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/paths/Left CS to Branch L.path b/src/main/deploy/pathplanner/paths/Left CS to Branch L.path index 8407e72..a1eaa60 100644 --- a/src/main/deploy/pathplanner/paths/Left CS to Branch L.path +++ b/src/main/deploy/pathplanner/paths/Left CS to Branch L.path @@ -8,20 +8,20 @@ }, "prevControl": null, "nextControl": { - "x": 1.9424841780334252, - "y": 6.824329313184941 + "x": 1.9735168585623293, + "y": 6.855508222945173 }, "isLocked": false, "linkedName": "Left CS Outside" }, { "anchor": { - "x": 3.692533396946565, - "y": 5.088382633587786 + "x": 3.7, + "y": 5.09 }, "prevControl": { - "x": 3.149674538700275, - "y": 5.708378454126026 + "x": 3.1382777720233292, + "y": 5.691401169532676 }, "nextControl": null, "isLocked": false, @@ -29,7 +29,21 @@ } ], "rotationTargets": [], - "constraintZones": [], + "constraintZones": [ + { + "name": "Slow for Elevator", + "minWaypointRelativePos": 0.6, + "maxWaypointRelativePos": 1.0, + "constraints": { + "maxVelocity": 4.0, + "maxAcceleration": 2.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + } + } + ], "pointTowardsZones": [], "eventMarkers": [ { @@ -57,7 +71,7 @@ ], "globalConstraints": { "maxVelocity": 4.73, - "maxAcceleration": 2.0, + "maxAcceleration": 3.0, "maxAngularVelocity": 540.0, "maxAngularAcceleration": 720.0, "nominalVoltage": 12.0, diff --git a/src/main/deploy/pathplanner/settings.json b/src/main/deploy/pathplanner/settings.json index c105c31..226d8be 100644 --- a/src/main/deploy/pathplanner/settings.json +++ b/src/main/deploy/pathplanner/settings.json @@ -10,7 +10,7 @@ ], "autoFolders": [], "defaultMaxVel": 4.73, - "defaultMaxAccel": 2.0, + "defaultMaxAccel": 3.0, "defaultMaxAngVel": 540.0, "defaultMaxAngAccel": 720.0, "defaultNominalVoltage": 12.0, diff --git a/src/main/deploy/reeftags.json b/src/main/deploy/reeftags.json new file mode 100644 index 0000000..dbdeca2 --- /dev/null +++ b/src/main/deploy/reeftags.json @@ -0,0 +1,242 @@ +{ + "tags": [ + { + "ID": 6, + "pose": { + "translation": { + "x": 13.474446, + "y": 3.3063179999999996, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": -0.8660254037844387, + "X": -0.0, + "Y": 0.0, + "Z": 0.49999999999999994 + } + } + } + }, + { + "ID": 7, + "pose": { + "translation": { + "x": 13.890498, + "y": 4.0259, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": 1.0, + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + } + } + }, + { + "ID": 8, + "pose": { + "translation": { + "x": 13.474446, + "y": 4.745482, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": 0.8660254037844387, + "X": 0.0, + "Y": 0.0, + "Z": 0.49999999999999994 + } + } + } + }, + { + "ID": 9, + "pose": { + "translation": { + "x": 12.643358, + "y": 4.745482, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": 0.5000000000000001, + "X": 0.0, + "Y": 0.0, + "Z": 0.8660254037844386 + } + } + } + }, + { + "ID": 10, + "pose": { + "translation": { + "x": 12.227305999999999, + "y": 4.0259, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": 6.123233995736766e-17, + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + } + } + } + }, + { + "ID": 11, + "pose": { + "translation": { + "x": 12.643358, + "y": 3.3063179999999996, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": -0.4999999999999998, + "X": -0.0, + "Y": 0.0, + "Z": 0.8660254037844387 + } + } + } + }, + { + "ID": 16, + "pose": { + "translation": { + "x": 5.9875419999999995, + "y": -0.0038099999999999996, + "z": 1.30175 + }, + "rotation": { + "quaternion": { + "W": 0.7071067811865476, + "X": 0.0, + "Y": 0.0, + "Z": 0.7071067811865476 + } + } + } + }, + { + "ID": 17, + "pose": { + "translation": { + "x": 4.073905999999999, + "y": 3.3063179999999996, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": -0.4999999999999998, + "X": -0.0, + "Y": 0.0, + "Z": 0.8660254037844387 + } + } + } + }, + { + "ID": 18, + "pose": { + "translation": { + "x": 3.6576, + "y": 4.0259, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": 6.123233995736766e-17, + "X": 0.0, + "Y": 0.0, + "Z": 1.0 + } + } + } + }, + { + "ID": 19, + "pose": { + "translation": { + "x": 4.073905999999999, + "y": 4.745482, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": 0.5000000000000001, + "X": 0.0, + "Y": 0.0, + "Z": 0.8660254037844386 + } + } + } + }, + { + "ID": 20, + "pose": { + "translation": { + "x": 4.904739999999999, + "y": 4.745482, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": 0.8660254037844387, + "X": 0.0, + "Y": 0.0, + "Z": 0.49999999999999994 + } + } + } + }, + { + "ID": 21, + "pose": { + "translation": { + "x": 5.321046, + "y": 4.0259, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": 1.0, + "X": 0.0, + "Y": 0.0, + "Z": 0.0 + } + } + } + }, + { + "ID": 22, + "pose": { + "translation": { + "x": 4.904739999999999, + "y": 3.3063179999999996, + "z": 0.308102 + }, + "rotation": { + "quaternion": { + "W": -0.8660254037844387, + "X": -0.0, + "Y": 0.0, + "Z": 0.49999999999999994 + } + } + } + } + ], + "field": { + "length": 17.548, + "width": 8.052 + } +} diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 8852db5..4047499 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -160,13 +160,16 @@ public RobotContainer() { superstructure = new Superstructure(endEffector, elevator, algaeArm); + // configure auto commands BEFORE auto initializations :P configureAutoCommands(); PathfindingCommand.warmupCommand().schedule(); // Set up auto routines autoChooser = new LoggedDashboardChooser<>("Auto Choices", AutoBuilder.buildAutoChooser()); + // Only need to initialize mirrored paths because own side is included by buildAutoChooser autoChooser.addOption("Opps Side 4pc", new PathPlannerAuto("Own Side 4pc", true)); + // Only initialize dev autos while working with a devbot if (Constants.DEVBOT) { // Set up SysId routines autoChooser.addOption( @@ -189,7 +192,7 @@ public RobotContainer() { configureButtonBindings(); SmartDashboard.putData("Field", field); SmartDashboard.putData( - "Pathfind To Auto", DriveCommands.pathfindToAuto(drive, autoChooser::get)); + "Pathfind To Auto", DriveCommands.driveToAutoStart(drive, autoChooser::get)); } public void periodic() { @@ -211,10 +214,10 @@ public void disabledPeriodic() { } /** - * Use this method to define your button->command mappings. Buttons can be created by + * Use this method to define your button to command mappings. Buttons can be created by * instantiating a {@link GenericHID} or one of its subclasses ({@link - * edu.wpi.first.wpilibj.Joystick} or {@link XboxController}), and then passing it to a {@link - * edu.wpi.first.wpilibj2.command.button.JoystickButton}. + * edu.wpi.first.wpilibj.Joystick Joystick} or {@link XboxController}), and then passing it to a + * {@link edu.wpi.first.wpilibj2.command.button.JoystickButton JoystickButton}. */ private void configureButtonBindings() { // Default command, normal field-relative drive @@ -225,14 +228,17 @@ private void configureButtonBindings() { () -> -controller.getLeftX(), () -> -controller.getRightX())); + // Initialize coral scoring controller.rightTrigger().and(coralMode).whileTrue(superstructure.scoreCoral(false)); + // deferred stow command (so the setpoint can be changed) var deferredStow = Commands.defer( () -> Commands.waitSeconds(SmartDashboard.getNumber("Elevator Defer Timeout", 0.1)), Set.of()) .andThen(elevator.setTarget(Setpoint.Stowed)); + // Initialize elevator setpoints controller.x().and(coralMode).whileTrue(elevator.setTarget(Setpoint.L2)).onFalse(deferredStow); controller .x() @@ -248,6 +254,7 @@ private void configureButtonBindings() { controller.y().and(coralMode).whileTrue(elevator.setTarget(Setpoint.L4)).onFalse(deferredStow); controller.y().and(algaeMode).whileTrue(superstructure.bargeShot()).onFalse(deferredStow); + // Initialize coral mode auto align controller .leftBumper() .and(coralMode) @@ -261,6 +268,7 @@ private void configureButtonBindings() { joystickApproach( () -> FieldConstants.getNearestReefBranch(drive.getPose(), ReefSide.RIGHT))); + // Initialize algae mode auto align controller .leftBumper() .and(algaeMode) @@ -270,6 +278,7 @@ private void configureButtonBindings() { .and(algaeMode) .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); + // Initialize barge algae mode & processor scoring controller .leftTrigger() .onTrue(Commands.runOnce(() -> controlMode = ControlMode.Algae)) @@ -278,17 +287,19 @@ private void configureButtonBindings() { controller.rightTrigger().and(algaeMode).whileTrue(endEffector.scoreProcessor()); + // Initialize climbing commands controller.povDown().whileTrue(climber.deploy()); - controller.povUp().whileTrue(climber.retract().alongWith(algaeArm.deploy())); + controller.povUp().whileTrue(climber.retract()).onTrue(algaeArm.drop()); } + // Auto NamedCommands instantiations private void configureAutoCommands() { NamedCommands.registerCommand("elevator_stow", elevator.setTarget(Setpoint.Stowed)); NamedCommands.registerCommand("elevator_l3", elevator.setTarget(Setpoint.L3)); NamedCommands.registerCommand("elevator_l4", elevator.setTarget(Setpoint.L4)); NamedCommands.registerCommand( - "coral_intake", Commands.race(endEffector.autoIntake(), Commands.waitSeconds(1))); - NamedCommands.registerCommand("coral_jog", endEffector.autoIntake()); + "coral_intake", Commands.race(endEffector.autoIntake(), Commands.waitSeconds(0.5))); + NamedCommands.registerCommand("coral_jog", endEffector.autoJogCoral()); NamedCommands.registerCommand("score_coral", superstructure.scoreCoral(true)); NamedCommands.registerCommand("score_barge", superstructure.bargeShot()); } diff --git a/src/main/java/frc/robot/commands/DriveCommands.java b/src/main/java/frc/robot/commands/DriveCommands.java index 6c31e24..867cc51 100644 --- a/src/main/java/frc/robot/commands/DriveCommands.java +++ b/src/main/java/frc/robot/commands/DriveCommands.java @@ -27,6 +27,7 @@ import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; import frc.robot.subsystems.drive.Drive; +import frc.robot.util.AllianceFlipUtil; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.LinkedList; @@ -51,6 +52,10 @@ public final class DriveCommands { private static final double FF_RAMP_RATE = 0.1; // Volts/Sec private static final double WHEEL_RADIUS_MAX_VELOCITY = 0.25; // Rad/Sec private static final double WHEEL_RADIUS_RAMP_RATE = 0.05; // Rad/Sec^2 + private static final TrapezoidProfile.Constraints ANGLE_CONSTRAINTS = + new TrapezoidProfile.Constraints(Units.degreesToRadians(540), Units.degreesToRadians(720)); + private static final TrapezoidProfile.Constraints DRIVE_CONSTRAINTS = + new TrapezoidProfile.Constraints(4.73, 5); private DriveCommands() {} @@ -163,9 +168,9 @@ public static Command joystickDriveAtAngle( } public static class JoystickApproachCommand extends Command { - Drive drive; - DoubleSupplier ySupplier; - Supplier targetSupplier; + private final Drive drive; + private final DoubleSupplier ySupplier; + private final Supplier targetSupplier; Pose2d targetPose2d; Pose2d currentPose2d; @@ -251,20 +256,33 @@ public void end(boolean interrupted) { public boolean withinTolerance(double dist) { return running ? Math.abs(relativePose2d.getY()) < dist : false; } + } - private static Translation2d getLinearVelocityFromJoysticks(double x, double y) { - // Apply deadband - double linearMagnitude = MathUtil.applyDeadband(Math.hypot(x, y), DEADBAND); - Rotation2d linearDirection = new Rotation2d(Math.atan2(y, x)); + public static Command driveToAutoStart(Drive drive, Supplier commandSupplier) { + return drive + .defer( + () -> { + val autoCommand = commandSupplier.get(); - // Square magnitude for more precise control - linearMagnitude = linearMagnitude * linearMagnitude; + if (autoCommand instanceof PathPlannerAuto auto) { + val autoStart = auto.getStartingPose(); - // Return new linear velocity - return new Pose2d(new Translation2d(), linearDirection) - .transformBy(new Transform2d(linearMagnitude, 0.0, new Rotation2d())) - .getTranslation(); - } + Logger.recordOutput("AutoAlign/DriveToAuto/Enabled", true); + + Logger.recordOutput("AutoAlign/DriveToAuto/AutoStart", autoStart); + + val startPose = AllianceFlipUtil.apply(auto.getStartingPose()); + + Logger.recordOutput("AutoAlign/DriveToAuto/Target", startPose); + return AutoBuilder.pathfindToPose(startPose, PP_CONSTRAINTS); + } + + Logger.recordOutput("AutoAlign/DriveToAuto/Enabled", false); + + return Commands.none(); + }) + .withName("Drive To Auto Start") + .finallyDo(() -> Logger.recordOutput("AutoAlign/DriveToAuto/Enabled", false)); } /** @@ -399,19 +417,6 @@ public static Command wheelRadiusCharacterization(Drive drive) { }))); } - public static Command pathfindToAuto(Drive drive, Supplier autoSupplier) { - return drive.defer( - () -> { - val auto = autoSupplier.get(); - - if (auto instanceof PathPlannerAuto a) { - return AutoBuilder.pathfindToPose(a.getStartingPose(), PP_CONSTRAINTS); - } else { - return Commands.none(); - } - }); - } - private static class WheelRadiusCharacterizationState { double[] positions = new double[4]; Rotation2d lastAngle = new Rotation2d(); diff --git a/src/main/java/frc/robot/subsystems/Superstructure.java b/src/main/java/frc/robot/subsystems/Superstructure.java index 9151076..c207836 100644 --- a/src/main/java/frc/robot/subsystems/Superstructure.java +++ b/src/main/java/frc/robot/subsystems/Superstructure.java @@ -26,8 +26,7 @@ public Command bargeShot() { public Command scoreCoral(boolean inAuto) { if (inAuto) { - return Commands.print("Scoring coral") - .andThen(endEffector.autoScoreCoral(elevator.isAtSetpoint)); + return endEffector.autoScoreCoral(elevator.isAtSetpoint); } else { return endEffector.teleScoreCoral(elevator::shouldEjectFast); } diff --git a/src/main/java/frc/robot/subsystems/drive/GyroIOPigeon2.java b/src/main/java/frc/robot/subsystems/drive/GyroIOPigeon2.java index 58a1005..d52ce39 100644 --- a/src/main/java/frc/robot/subsystems/drive/GyroIOPigeon2.java +++ b/src/main/java/frc/robot/subsystems/drive/GyroIOPigeon2.java @@ -53,7 +53,7 @@ public void updateInputs(GyroIOInputs inputs) { yawTimestampQueue.stream().mapToDouble((Double value) -> value).toArray(); inputs.odometryYawPositions = yawPositionQueue.stream() - .map((Double value) -> Rotation2d.fromDegrees(value)) + .map(value -> Rotation2d.fromDegrees(value)) .toArray(Rotation2d[]::new); yawTimestampQueue.clear(); yawPositionQueue.clear(); diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java index 0ee65c2..7baafd9 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java @@ -129,10 +129,14 @@ public Command teleIntake() { return runOnce(this::jogCoral).andThen(Commands.waitSeconds(0.02)); } - public Command autoIntake() { + public Command autoJogCoral() { return run(this::jogCoral).finallyDo(this::resetState); } + public Command autoIntake() { + return autoJogCoral().raceWith(Commands.waitUntil(() -> exitInputs.isBroken)); + } + public Command teleScoreCoral(BooleanSupplier ejectFast) { return run( () -> { @@ -149,9 +153,7 @@ public Command autoScoreCoral(BooleanSupplier elevatorIsAtHeight) { // Commands.print("Elevator is at height"), Commands.waitSeconds(0.25), runOnce(() -> motorIO.setDutyCycle(kAutoEjectSpeed)), - Commands.print("Motor is set to " + kAutoEjectSpeed), Commands.race(Commands.waitSeconds(0.2), Commands.waitUntil(() -> !exitIO.isBroken())), - Commands.print("Coral out"), runOnce(this::resetState)); } @@ -161,6 +163,7 @@ public Command scoreBarge() { public Command scoreProcessor() { return runOnce(() -> motorIO.setDutyCycle(-kAlgaeProcessorSpeed)) + .andThen(Commands.idle(this)) .beforeStarting(this::resetState); } diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java index 9f2301e..18540ff 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java @@ -8,7 +8,7 @@ public final class EndEffectorConstants { public static final CANBus kMotorBus = Constants.kRIOBus; public static final double kFastEjectSpeed = .9, kAutoEjectSpeed = 1, - kSlowEjectSpeed = .3, + kSlowEjectSpeed = .25, kAlgaeBargeSpeed = 1, kAlgaeProcessorSpeed = 0.3, kIdleSpeed = .175, diff --git a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java index 224a9cf..316ebfc 100644 --- a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java +++ b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java @@ -6,23 +6,19 @@ import edu.wpi.first.math.geometry.Transform3d; import edu.wpi.first.math.util.Units; import edu.wpi.first.wpilibj.Filesystem; +import frc.robot.util.Statics; import java.nio.file.Paths; import org.photonvision.PhotonPoseEstimator.PoseStrategy; public final class VisionConstants { - private static AprilTagFieldLayout getLayout() { - try { - return new AprilTagFieldLayout( - Paths.get(Filesystem.getDeployDirectory().getAbsolutePath(), "reeftags.json")); - } catch (Exception e) { - e.printStackTrace(); - return AprilTagFieldLayout.loadField(AprilTagFields.k2025ReefscapeWelded); - } - } - public static final double CAMERA_FPS = 30; - public static final AprilTagFieldLayout APRILTAG_LAYOUT = getLayout(); + public static final AprilTagFieldLayout APRILTAG_LAYOUT = + Statics.initOrDefault( + () -> + new AprilTagFieldLayout( + Paths.get(Filesystem.getDeployDirectory().getAbsolutePath(), "reeftags.json")), + () -> AprilTagFieldLayout.loadField(AprilTagFields.k2025ReefscapeWelded)); public static final PoseStrategy MULTI_TAG_POSE_STRATEGY = PoseStrategy.MULTI_TAG_PNP_ON_COPROCESSOR; diff --git a/src/main/java/frc/robot/util/AllianceFlipUtil.java b/src/main/java/frc/robot/util/AllianceFlipUtil.java index 928c8f5..61d9b9c 100644 --- a/src/main/java/frc/robot/util/AllianceFlipUtil.java +++ b/src/main/java/frc/robot/util/AllianceFlipUtil.java @@ -5,10 +5,10 @@ import edu.wpi.first.math.geometry.*; import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.DriverStation.Alliance; import frc.robot.FieldConstants; public class AllianceFlipUtil { - public static double applyX(double x) { return shouldFlip() ? FieldConstants.fieldLength - x : x; } @@ -66,7 +66,6 @@ public static Pose3d apply(Pose3d pose) { } public static boolean shouldFlip() { - return DriverStation.getAlliance().isPresent() - && DriverStation.getAlliance().get() == DriverStation.Alliance.Red; + return DriverStation.getAlliance().orElse(Alliance.Blue) == Alliance.Red; } } From 81e75fdb87393f96bc0686d4fb0071ececa621f5 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Wed, 22 Oct 2025 22:18:53 -0400 Subject: [PATCH 10/11] Added a couple utilities - Added a more detailed Elastic layout - Added autopilot commands - Added a swerve drive widget - Finalized auto align autopilot commands (alignment to barge line and coral stations) still need to be tested at toyotathon. --- elastic-layout.json | 349 ++++++++++++++++++ src/main/java/frc/robot/Robot.java | 7 + src/main/java/frc/robot/RobotContainer.java | 21 +- .../robot/autopilot/AutopilotCommands.java | 62 ++++ .../robot/autopilot/DriveToBargeCommand.java | 51 +++ .../robot/autopilot/DriveToPoseCommand.java | 68 ++++ .../java/frc/robot/autopilot/Quadrant.java | 117 ------ .../frc/robot/commands/DriveCommands.java | 95 +---- .../robot/subsystems/algae_arm/AlgaeArm.java | 18 +- .../frc/robot/subsystems/drive/Drive.java | 22 +- .../robot/subsystems/drive/SwerveWidget.java | 39 ++ .../end_effector/EndEffectorConstants.java | 2 +- .../java/frc/robot/util/AllianceFlipUtil.java | 44 ++- 13 files changed, 661 insertions(+), 234 deletions(-) create mode 100644 elastic-layout.json create mode 100644 src/main/java/frc/robot/autopilot/AutopilotCommands.java create mode 100644 src/main/java/frc/robot/autopilot/DriveToBargeCommand.java create mode 100644 src/main/java/frc/robot/autopilot/DriveToPoseCommand.java delete mode 100644 src/main/java/frc/robot/autopilot/Quadrant.java create mode 100644 src/main/java/frc/robot/subsystems/drive/SwerveWidget.java diff --git a/elastic-layout.json b/elastic-layout.json new file mode 100644 index 0000000..c941f9f --- /dev/null +++ b/elastic-layout.json @@ -0,0 +1,349 @@ +{ + "version": 1.0, + "grid_size": 128, + "tabs": [ + { + "name": "Teleoperated", + "grid_layout": { + "layouts": [], + "containers": [ + { + "title": "Field", + "x": 0.0, + "y": 0.0, + "width": 768.0, + "height": 384.0, + "type": "Field", + "properties": { + "topic": "/SmartDashboard/Field", + "period": 0.02, + "field_game": "Reefscape", + "robot_width": 0.85, + "robot_length": 0.85, + "show_other_objects": true, + "show_trajectories": true, + "field_rotation": 0.0, + "robot_color": 4294198070, + "trajectory_color": 4294967295 + } + }, + { + "title": "Entrance Detected", + "x": 0.0, + "y": 384.0, + "width": 256.0, + "height": 256.0, + "type": "Boolean Box", + "properties": { + "topic": "/SmartDashboard/Entrance Detected", + "period": 0.02, + "data_type": "boolean", + "true_color": 4283215696, + "false_color": 4294198070, + "true_icon": "None", + "false_icon": "None" + } + }, + { + "title": "Exit Detected", + "x": 256.0, + "y": 384.0, + "width": 256.0, + "height": 256.0, + "type": "Boolean Box", + "properties": { + "topic": "/SmartDashboard/Exit Detected", + "period": 0.02, + "data_type": "boolean", + "true_color": 4283215696, + "false_color": 4294198070, + "true_icon": "None", + "false_icon": "None" + } + }, + { + "title": "Match Time", + "x": 768.0, + "y": 0.0, + "width": 384.0, + "height": 256.0, + "type": "Match Time", + "properties": { + "topic": "/SmartDashboard/Match Time", + "period": 0.02, + "data_type": "double", + "time_display_mode": "Minutes and Seconds", + "red_start_time": 15, + "yellow_start_time": 30 + } + }, + { + "title": "Swerve Drive", + "x": 768.0, + "y": 256.0, + "width": 256.0, + "height": 256.0, + "type": "SwerveDrive", + "properties": { + "topic": "/SmartDashboard/Swerve Drive", + "period": 0.02, + "show_robot_rotation": true, + "rotation_unit": "Radians" + } + }, + { + "title": "Control Mode", + "x": 512.0, + "y": 384.0, + "width": 256.0, + "height": 128.0, + "type": "Text Display", + "properties": { + "topic": "/AdvantageKit/RealOutputs/Robot/Control Mode", + "period": 0.02, + "data_type": "string", + "show_submit_button": false + } + }, + { + "title": "Utilized Memory %", + "x": 1152.0, + "y": 0.0, + "width": 256.0, + "height": 256.0, + "type": "Graph", + "properties": { + "topic": "/AdvantageKit/RealOutputs/Robot/Utilized Memory %", + "period": 0.02, + "data_type": "double", + "time_displayed": 5.0, + "min_value": 0.0, + "max_value": 1.0, + "color": 4278238420, + "line_width": 2.0 + } + }, + { + "title": "BatteryVoltage", + "x": 512.0, + "y": 512.0, + "width": 512.0, + "height": 128.0, + "type": "Voltage View", + "properties": { + "topic": "/AdvantageKit/SystemStats/BatteryVoltage", + "period": 0.02, + "data_type": "double", + "min_value": 2.5, + "max_value": 15.0, + "divisions": 6, + "inverted": false, + "orientation": "horizontal" + } + }, + { + "title": "Left-processed", + "x": 1024.0, + "y": 256.0, + "width": 384.0, + "height": 384.0, + "type": "Camera Stream", + "properties": { + "topic": "/CameraPublisher/Left-processed", + "period": 0.02, + "rotation_turns": 0 + } + } + ] + } + }, + { + "name": "Autonomous", + "grid_layout": { + "layouts": [], + "containers": [ + { + "title": "Field", + "x": 0.0, + "y": 0.0, + "width": 640.0, + "height": 384.0, + "type": "Field", + "properties": { + "topic": "/SmartDashboard/Field", + "period": 0.02, + "field_game": "Reefscape", + "robot_width": 0.85, + "robot_length": 0.85, + "show_other_objects": true, + "show_trajectories": true, + "field_rotation": 0.0, + "robot_color": 4294198070, + "trajectory_color": 4294967295 + } + }, + { + "title": "Auto Choices", + "x": 1024.0, + "y": 384.0, + "width": 384.0, + "height": 128.0, + "type": "ComboBox Chooser", + "properties": { + "topic": "/SmartDashboard/Auto Choices", + "period": 0.02, + "sort_options": false + } + }, + { + "title": "Pathfind To Auto", + "x": 1152.0, + "y": 512.0, + "width": 256.0, + "height": 128.0, + "type": "Command", + "properties": { + "topic": "/SmartDashboard/Pathfind To Auto", + "period": 0.02, + "show_type": true + } + }, + { + "title": "Near Auto Start", + "x": 768.0, + "y": 384.0, + "width": 256.0, + "height": 128.0, + "type": "Boolean Box", + "properties": { + "topic": "/AdvantageKit/RealOutputs/Robot/Near Auto Start", + "period": 0.02, + "data_type": "boolean", + "true_color": 4283215696, + "false_color": 4294198070, + "true_icon": "None", + "false_icon": "None" + } + }, + { + "title": "Right Camera", + "x": 1024.0, + "y": 0.0, + "width": 384.0, + "height": 384.0, + "type": "Camera Stream", + "properties": { + "topic": "/CameraPublisher/Right-processed", + "period": 0.02, + "rotation_turns": 0 + } + }, + { + "title": "Match Number", + "x": 768.0, + "y": 512.0, + "width": 256.0, + "height": 128.0, + "type": "Large Text Display", + "properties": { + "topic": "/FMSInfo/MatchNumber", + "period": 0.02, + "data_type": "int" + } + }, + { + "title": "Event Name", + "x": 512.0, + "y": 512.0, + "width": 256.0, + "height": 128.0, + "type": "Text Display", + "properties": { + "topic": "/FMSInfo/EventName", + "period": 0.02, + "data_type": "string", + "show_submit_button": false + } + }, + { + "title": "StationNumber", + "x": 1024.0, + "y": 512.0, + "width": 128.0, + "height": 128.0, + "type": "Large Text Display", + "properties": { + "topic": "/FMSInfo/StationNumber", + "period": 0.02, + "data_type": "int" + } + }, + { + "title": "Coral In Position", + "x": 512.0, + "y": 384.0, + "width": 256.0, + "height": 128.0, + "type": "Boolean Box", + "properties": { + "topic": "/SmartDashboard/Coral In Position", + "period": 0.02, + "data_type": "boolean", + "true_color": 4283215696, + "false_color": 4294198070, + "true_icon": "None", + "false_icon": "None" + } + }, + { + "title": "Entrance Detected", + "x": 0.0, + "y": 384.0, + "width": 256.0, + "height": 256.0, + "type": "Boolean Box", + "properties": { + "topic": "/SmartDashboard/Entrance Detected", + "period": 0.02, + "data_type": "boolean", + "true_color": 4283215696, + "false_color": 4294198070, + "true_icon": "None", + "false_icon": "None" + } + }, + { + "title": "Exit Detected", + "x": 256.0, + "y": 384.0, + "width": 256.0, + "height": 256.0, + "type": "Boolean Box", + "properties": { + "topic": "/SmartDashboard/Exit Detected", + "period": 0.02, + "data_type": "boolean", + "true_color": 4283215696, + "false_color": 4294198070, + "true_icon": "None", + "false_icon": "None" + } + }, + { + "title": "Left Camera", + "x": 640.0, + "y": 0.0, + "width": 384.0, + "height": 384.0, + "type": "Camera Stream", + "properties": { + "topic": "/CameraPublisher/Left-processed", + "period": 0.02, + "rotation_turns": 0 + } + } + ] + } + } + ] +} \ No newline at end of file diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index b741309..cd78f40 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -194,6 +194,13 @@ public void teleopInit() { } robotContainer.stowElevator(); + + Elastic.selectTab("Teleoperated"); + } + + @Override + public void teleopExit() { + Elastic.selectTab("Autonomous"); } /** This function is called once when test mode is enabled. */ diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 4047499..98aa066 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -15,6 +15,7 @@ import com.pathplanner.lib.commands.PathPlannerAuto; import com.pathplanner.lib.commands.PathfindingCommand; import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj.GenericHID; import edu.wpi.first.wpilibj.XboxController; import edu.wpi.first.wpilibj.smartdashboard.Field2d; @@ -25,8 +26,8 @@ import edu.wpi.first.wpilibj2.command.button.Trigger; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; import frc.robot.FieldConstants.ReefSide; +import frc.robot.autopilot.AutopilotCommands; import frc.robot.commands.DriveCommands; -import frc.robot.commands.DriveCommands.JoystickApproachCommand; import frc.robot.generated.TunerConstants; import frc.robot.subsystems.Superstructure; import frc.robot.subsystems.algae_arm.AlgaeArm; @@ -199,6 +200,8 @@ public void periodic() { field.setRobotPose(drive.getPose()); Logger.recordOutput("Robot/Control Mode", controlMode); + + SmartDashboard.putNumber("Match Time", DriverStation.getMatchTime()); } public void disabledPeriodic() { @@ -277,19 +280,31 @@ private void configureButtonBindings() { .rightBumper() .and(algaeMode) .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); + controller + .a() + .and(algaeMode) + .whileTrue(AutopilotCommands.driveToBarge(drive, () -> -controller.getLeftX())); // Initialize barge algae mode & processor scoring controller .leftTrigger() .onTrue(Commands.runOnce(() -> controlMode = ControlMode.Algae)) .whileTrue(Commands.print("Algae mode!").andThen(superstructure.algaeMode())) - .onFalse(Commands.runOnce(() -> controlMode = ControlMode.Coral)); + .onFalse( + Commands.runOnce(() -> controlMode = ControlMode.Coral).alongWith(algaeArm.stow())); controller.rightTrigger().and(algaeMode).whileTrue(endEffector.scoreProcessor()); // Initialize climbing commands controller.povDown().whileTrue(climber.deploy()); controller.povUp().whileTrue(climber.retract()).onTrue(algaeArm.drop()); + + controller + .povLeft() + .whileTrue(AutopilotCommands.intakeCoral(true, drive, elevator, endEffector)); + controller + .povRight() + .whileTrue(AutopilotCommands.intakeCoral(false, drive, elevator, endEffector)); } // Auto NamedCommands instantiations @@ -305,7 +320,7 @@ private void configureAutoCommands() { } private Command joystickApproach(Supplier approach) { - return new JoystickApproachCommand(drive, () -> -controller.getLeftY(), approach); + return new DriveCommands.JoystickApproachCommand(drive, () -> -controller.getLeftY(), approach); } /** diff --git a/src/main/java/frc/robot/autopilot/AutopilotCommands.java b/src/main/java/frc/robot/autopilot/AutopilotCommands.java new file mode 100644 index 0000000..f13522b --- /dev/null +++ b/src/main/java/frc/robot/autopilot/AutopilotCommands.java @@ -0,0 +1,62 @@ +package frc.robot.autopilot; + +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Translation2d; +import edu.wpi.first.wpilibj2.command.Command; +import edu.wpi.first.wpilibj2.command.Commands; +import frc.robot.FieldConstants; +import frc.robot.subsystems.drive.Drive; +import frc.robot.subsystems.elevator.Elevator; +import frc.robot.subsystems.end_effector.EndEffector; +import java.util.function.DoubleSupplier; +import lombok.val; +import org.littletonrobotics.junction.Logger; + +public final class AutopilotCommands { + private static final Translation2d LEFT_INSIDE_TRANSLATION = new Translation2d(-0.5, -0.375); + private static final Translation2d LEFT_OUTSIDE_TRANSLATION = new Translation2d(0.5, 0.375); + private static final Translation2d RIGHT_INSIDE_TRANSLATION = new Translation2d(-0.5, 0.375); + private static final Translation2d RIGHT_OUTSIDE_TRANSLATION = new Translation2d(0.5, -0.375); + + public static Command driveToCoralStation(Drive drive, boolean left) { + return new DriveToPoseCommand( + "DriveToCS", + drive, + () -> { + val drivePose = drive.getPose(); + val leftSide = drivePose.getY() > FieldConstants.fieldCenter.getY(); + // On the left side, "to the left" of the driver station is to the outside + val inside = leftSide ? !left : left; + + Pose2d coralStation = FieldConstants.getNearestCoralStation(drive.getPose()); + Logger.recordOutput("AutoAlign/DriveToCS/StationPose", coralStation); + Logger.recordOutput("AutoAlign/DriveToCS/ToInside", inside); + Logger.recordOutput("AutoAlign/DriveToCS/OnAllianceLeft", leftSide); + + val stationTranslation = coralStation.getTranslation(); + + Translation2d targetTranslation; + if (leftSide) { + targetTranslation = + stationTranslation.plus( + inside ? LEFT_INSIDE_TRANSLATION : LEFT_OUTSIDE_TRANSLATION); + } else { + targetTranslation = + stationTranslation.plus( + inside ? RIGHT_INSIDE_TRANSLATION : RIGHT_OUTSIDE_TRANSLATION); + } + + return new Pose2d(targetTranslation, coralStation.getRotation()); + }); + } + + public static Command intakeCoral( + boolean inside, Drive drive, Elevator elevator, EndEffector endEffector) { + return Commands.parallel( + driveToCoralStation(drive, inside), elevator.stow(), endEffector.teleIntake()); + } + + public static Command driveToBarge(Drive drive, DoubleSupplier ySupplier) { + return new DriveToBargeCommand(drive, ySupplier); + } +} diff --git a/src/main/java/frc/robot/autopilot/DriveToBargeCommand.java b/src/main/java/frc/robot/autopilot/DriveToBargeCommand.java new file mode 100644 index 0000000..14a9e87 --- /dev/null +++ b/src/main/java/frc/robot/autopilot/DriveToBargeCommand.java @@ -0,0 +1,51 @@ +package frc.robot.autopilot; + +import edu.wpi.first.math.MathUtil; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.wpilibj2.command.Command; +import frc.robot.FieldConstants; +import frc.robot.commands.DriveCommands; +import frc.robot.subsystems.drive.Drive; +import frc.robot.util.AllianceFlipUtil; +import java.util.function.DoubleSupplier; +import lombok.RequiredArgsConstructor; +import lombok.val; +import org.littletonrobotics.junction.Logger; + +@RequiredArgsConstructor +final class DriveToBargeCommand extends Command { + private final Drive drive; + private final DoubleSupplier ySupplier; + private Rotation2d targetRotation; + private double targetX; + + @Override + public void initialize() { + targetX = AllianceFlipUtil.applyX(FieldConstants.startingLineX - Units.inchesToMeters(13)); + targetRotation = AllianceFlipUtil.apply(Rotation2d.kZero); + } + + @Override + public void execute() { + double yInput = MathUtil.applyDeadband(ySupplier.getAsDouble(), DriveCommands.DEADBAND); + if (AllianceFlipUtil.shouldFlip()) { + yInput = -yInput; + } + val vy = Math.copySign(yInput * yInput, yInput); + + val drivePose = drive.getPose(); + + val vx = targetX - drivePose.getX(); + val omega = targetRotation.minus(drivePose.getRotation()).getRadians(); + + Logger.recordOutput( + "AutoAlign/DriveToBarge/Target", new Pose2d(drivePose.getY(), targetX, targetRotation)); + + ChassisSpeeds speeds = new ChassisSpeeds(2 * vx, vy, omega); + speeds = ChassisSpeeds.fromFieldRelativeSpeeds(speeds, drivePose.getRotation()); + drive.runVelocity(speeds); + } +} diff --git a/src/main/java/frc/robot/autopilot/DriveToPoseCommand.java b/src/main/java/frc/robot/autopilot/DriveToPoseCommand.java new file mode 100644 index 0000000..a304c70 --- /dev/null +++ b/src/main/java/frc/robot/autopilot/DriveToPoseCommand.java @@ -0,0 +1,68 @@ +package frc.robot.autopilot; + +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.geometry.Translation2d; +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.wpilibj2.command.Command; +import frc.robot.subsystems.drive.Drive; +import java.util.function.Supplier; +import lombok.Getter; +import lombok.val; +import org.littletonrobotics.junction.Logger; + +public class DriveToPoseCommand extends Command { + private final Drive drive; + private final Supplier poseSupplier; + private final String logKey; + + @Getter private Pose2d targetPose; + private Translation2d targetTranslation; + private Rotation2d targetRotation; + + public DriveToPoseCommand(String name, Drive drive, Supplier poseSupplier) { + setName(name); + logKey = "AutoAlign/" + name; + + this.drive = drive; + this.poseSupplier = poseSupplier; + + targetPose = poseSupplier.get(); + targetTranslation = targetPose.getTranslation(); + targetRotation = targetPose.getRotation(); + + addRequirements(drive); + } + + @Override + public void initialize() { + targetPose = poseSupplier.get(); + targetTranslation = targetPose.getTranslation(); + targetRotation = targetPose.getRotation(); + + Logger.recordOutput(logKey + "/Target", targetPose); + } + + @Override + public void execute() { + val drivePose = drive.getPose(); + + Logger.recordOutput( + logKey + "/DistanceToTarget", drivePose.getTranslation().getDistance(targetTranslation)); + + val diffTranslation = targetTranslation.minus(drivePose.getTranslation()); + + Logger.recordOutput(logKey + "/vX", diffTranslation.getX()); + Logger.recordOutput(logKey + "/vY", diffTranslation.getY()); + + ChassisSpeeds speeds = + new ChassisSpeeds( + diffTranslation.getX(), + diffTranslation.getY(), + targetRotation.minus(drivePose.getRotation()).getRadians()); + + speeds = ChassisSpeeds.fromFieldRelativeSpeeds(speeds, drive.getRotation()); + + drive.runVelocity(speeds); + } +} diff --git a/src/main/java/frc/robot/autopilot/Quadrant.java b/src/main/java/frc/robot/autopilot/Quadrant.java deleted file mode 100644 index ac99dce..0000000 --- a/src/main/java/frc/robot/autopilot/Quadrant.java +++ /dev/null @@ -1,117 +0,0 @@ -package frc.robot.autopilot; - -import static edu.wpi.first.units.Units.DegreesPerSecond; -import static edu.wpi.first.units.Units.DegreesPerSecondPerSecond; -import static edu.wpi.first.units.Units.MetersPerSecond; -import static edu.wpi.first.units.Units.MetersPerSecondPerSecond; -import static frc.robot.FieldConstants.fieldCenter; - -import com.pathplanner.lib.auto.AutoBuilder; -import com.pathplanner.lib.path.GoalEndState; -import com.pathplanner.lib.path.IdealStartingState; -import com.pathplanner.lib.path.PathConstraints; -import com.pathplanner.lib.path.PathPlannerPath; -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.Commands; -import frc.robot.subsystems.drive.Drive; -import frc.robot.util.AllianceFlipUtil; -import frc.robot.util.PositionUtils; -import java.util.HashMap; -import java.util.Map; - -public enum Quadrant { - Q1( - AllianceFlipUtil.apply( - new Pose2d( - fieldCenter.getX() * 0.25, fieldCenter.getY() * 1.5, Rotation2d.fromDegrees(-60)))), - Q2( - AllianceFlipUtil.apply( - new Pose2d( - fieldCenter.getX() * 0.25, fieldCenter.getY() * 0.5, Rotation2d.fromDegrees(60)))), - Q3( - AllianceFlipUtil.apply( - new Pose2d( - fieldCenter.getX() * 0.75, fieldCenter.getY() * 0.5, Rotation2d.fromDegrees(120)))), - Q4( - AllianceFlipUtil.apply( - new Pose2d( - fieldCenter.getX() * 0.75, fieldCenter.getY() * 1.5, Rotation2d.fromDegrees(-120)))); - - private final Pose2d m_middle; - - // allocate a HashMap for all of the pathfinds from one quadrant to another, - private static final Map> cachedPathfinds = - new HashMap<>(4) { - { - put(Q1, new HashMap<>(3)); - put(Q2, new HashMap<>(3)); - put(Q3, new HashMap<>(3)); - put(Q4, new HashMap<>(3)); - } - }; - private static final PathConstraints PATHFIND_CONSTRAINTS = - new PathConstraints( - MetersPerSecond.of(4.73), MetersPerSecondPerSecond.of(5), - DegreesPerSecond.of(540), DegreesPerSecondPerSecond.of(720)); - private static boolean alreadInitializedPaths = false; - - private Quadrant(Pose2d mid) { - m_middle = mid; - } - - public Pose2d getM_middle() { - return m_middle; - } - - public Command pathfindTo(Quadrant other) { - if (this == other) - // we're already in the right place - return Commands.none(); - else { - var cmd = cachedPathfinds.get(this).get(other); - - if (cmd == null) { - cmd = AutoBuilder.pathfindToPose(other.m_middle, PATHFIND_CONSTRAINTS); - } - - return cmd; - } - } - - public Command driveTo(Drive drive, Quadrant to, double positionTolerance) { - return pathfindTo(to) - .until(() -> PositionUtils.getDistance(drive, to.m_middle) <= positionTolerance); - } - - /** - * Initializes every path between different quadrants preemptively. This should not be run before - * the paths should be used, especially on the main thread. - * - *

This is, by default, run when the robot is first disabled, and is a no-op if run repeatedly. - */ - public static void initializeAllPaths() { - if (!alreadInitializedPaths) { - cachedPathfinds.forEach( - (origin, map) -> { - if (map.size() == 3) return; - - for (Quadrant other : Quadrant.values()) { - if (other != origin) { - var waypoints = PathPlannerPath.waypointsFromPoses(origin.m_middle, other.m_middle); - var path = - new PathPlannerPath( - waypoints, - PATHFIND_CONSTRAINTS, - new IdealStartingState(0, origin.m_middle.getRotation()), - new GoalEndState(0, other.m_middle.getRotation())); - map.put(other, AutoBuilder.followPath(path)); - } - } - }); - - alreadInitializedPaths = true; - } - } -} diff --git a/src/main/java/frc/robot/commands/DriveCommands.java b/src/main/java/frc/robot/commands/DriveCommands.java index 867cc51..58d50d1 100644 --- a/src/main/java/frc/robot/commands/DriveCommands.java +++ b/src/main/java/frc/robot/commands/DriveCommands.java @@ -38,22 +38,19 @@ import org.littletonrobotics.junction.Logger; public final class DriveCommands { - private static final double DEADBAND = 0.1; - private static final double DRIVE_KP = 2.5; - private static final double DRIVE_KD = 0.25; - private static final double ANGLE_KP = 2.0; - private static final double ANGLE_KD = 0.2; - private static final double ANGLE_MAX_VELOCITY = 8.0; - private static final double ANGLE_MAX_ACCELERATION = 20.0; - private static final double ANGLE_TOLERANCE = Units.degreesToRadians(5); - private static final double LINE_TOLERANCE = 0.05; - private static final double POSITION_TOLERANCE = Units.inchesToMeters(1); + public static final double DEADBAND = 0.1; + private static final double DRIVE_KP = 2; + private static final double DRIVE_KD = 0; + private static final double ANGLE_KP = 2; + private static final double ANGLE_KD = 0; + private static final double ANGLE_TOLERANCE = Units.degreesToRadians(2.5); + private static final double POSITION_TOLERANCE = 0.0125; private static final double FF_START_DELAY = 2.0; // Secs private static final double FF_RAMP_RATE = 0.1; // Volts/Sec private static final double WHEEL_RADIUS_MAX_VELOCITY = 0.25; // Rad/Sec private static final double WHEEL_RADIUS_RAMP_RATE = 0.05; // Rad/Sec^2 private static final TrapezoidProfile.Constraints ANGLE_CONSTRAINTS = - new TrapezoidProfile.Constraints(Units.degreesToRadians(540), Units.degreesToRadians(720)); + new TrapezoidProfile.Constraints(8, 20); private static final TrapezoidProfile.Constraints DRIVE_CONSTRAINTS = new TrapezoidProfile.Constraints(4.73, 5); @@ -112,84 +109,24 @@ public static Command joystickDrive( drive); } - /** - * Field relative drive command using joystick for linear control and PID for angular control. - * Possible use cases include snapping to an angle, aiming at a vision target, or controlling - * absolute rotation with a joystick. - */ - public static Command joystickDriveAtAngle( - Drive drive, - DoubleSupplier xSupplier, - DoubleSupplier ySupplier, - Supplier rotationSupplier) { - - // Create PID controller - ProfiledPIDController angleController = - new ProfiledPIDController( - ANGLE_KP, - 0.0, - ANGLE_KD, - new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); - angleController.enableContinuousInput(-Math.PI, Math.PI); - - // Construct command - return Commands.run( - () -> { - // Get linear velocity - Translation2d linearVelocity = - getLinearVelocityFromJoysticks(xSupplier.getAsDouble(), ySupplier.getAsDouble()); - - // Calculate angular speed - double omega = - angleController.calculate( - drive.getRotation().getRadians(), rotationSupplier.get().getRadians()); - - // Convert to field relative speeds & send command - ChassisSpeeds speeds = - new ChassisSpeeds( - linearVelocity.getX() * drive.getMaxLinearSpeedMetersPerSec(), - linearVelocity.getY() * drive.getMaxLinearSpeedMetersPerSec(), - omega); - - boolean isFlipped = - DriverStation.getAlliance().isPresent() - && DriverStation.getAlliance().get() == Alliance.Red; - drive.runVelocity( - ChassisSpeeds.fromFieldRelativeSpeeds( - speeds, - isFlipped - ? drive.getRotation().plus(new Rotation2d(Math.PI)) - : drive.getRotation())); - }, - drive) - - // Reset PID controller when command starts - .beforeStarting(() -> angleController.reset(drive.getRotation().getRadians())); - } - public static class JoystickApproachCommand extends Command { private final Drive drive; private final DoubleSupplier ySupplier; private final Supplier targetSupplier; - Pose2d targetPose2d; - Pose2d currentPose2d; - Pose2d relativePose2d; - Rotation2d targetRotation2d; + private Pose2d targetPose2d; + private Pose2d relativePose2d; + private Rotation2d targetRotation2d; boolean running = false; static final double DEADBAND = 0.1; - ProfiledPIDController angleController = - new ProfiledPIDController( - ANGLE_KP, - 0, - ANGLE_KD, - new TrapezoidProfile.Constraints(ANGLE_MAX_VELOCITY, ANGLE_MAX_ACCELERATION)); + private final ProfiledPIDController angleController = + new ProfiledPIDController(ANGLE_KP, 0, ANGLE_KD, ANGLE_CONSTRAINTS); - ProfiledPIDController alignController = - new ProfiledPIDController(ANGLE_KP, 0, ANGLE_KD, new TrapezoidProfile.Constraints(3.7, 4)); + private final ProfiledPIDController alignController = + new ProfiledPIDController(DRIVE_KP, 0, DRIVE_KD, DRIVE_CONSTRAINTS); public JoystickApproachCommand( Drive drive, DoubleSupplier ySupplier, Supplier targetSupplier) { @@ -197,7 +134,7 @@ public JoystickApproachCommand( this.ySupplier = ySupplier; this.targetSupplier = targetSupplier; - angleController.setTolerance(POSITION_TOLERANCE); + alignController.setTolerance(POSITION_TOLERANCE); angleController.setTolerance(ANGLE_TOLERANCE); angleController.enableContinuousInput(-Math.PI, Math.PI); diff --git a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java index 206b729..5a6327c 100644 --- a/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java +++ b/src/main/java/frc/robot/subsystems/algae_arm/AlgaeArm.java @@ -48,15 +48,21 @@ public static AlgaeArm createSim() { public Command deploy() { return Commands.sequence( - runOnce(() -> io.setDutyCycle(.8)), - Commands.waitUntil(hasDeployed), - runOnce(() -> io.stopMotor())); + runOnce(() -> io.setDutyCycle(1)), + Commands.waitUntil(hasDeployed), + runOnce(() -> io.stopMotor())) + .withName("Deploy Algae Arm"); + } + + public Command drop() { + return runOnce(this::removeDefaultCommand).andThen(deploy()).withName("Drop Algae Arm"); } public Command stow() { return Commands.sequence( - runOnce(() -> io.setDutyCycle(-.8)), - Commands.waitUntil(hasStowed), - runOnce(() -> io.stopMotor())); + runOnce(() -> io.setDutyCycle(-1)), + Commands.waitUntil(hasStowed), + runOnce(() -> io.stopMotor())) + .withName("Stow Algae Arm"); } } diff --git a/src/main/java/frc/robot/subsystems/drive/Drive.java b/src/main/java/frc/robot/subsystems/drive/Drive.java index 19495e4..351198c 100644 --- a/src/main/java/frc/robot/subsystems/drive/Drive.java +++ b/src/main/java/frc/robot/subsystems/drive/Drive.java @@ -34,11 +34,13 @@ import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; import edu.wpi.first.math.system.plant.DCMotor; +import edu.wpi.first.math.util.Units; import edu.wpi.first.wpilibj.Alert; import edu.wpi.first.wpilibj.Alert.AlertType; import edu.wpi.first.wpilibj.DriverStation; import edu.wpi.first.wpilibj.DriverStation.Alliance; import edu.wpi.first.wpilibj.RobotBase; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.SubsystemBase; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; @@ -67,7 +69,7 @@ public class Drive extends SubsystemBase implements VisionConsumer { Math.hypot(TunerConstants.BackRight.LocationX, TunerConstants.BackRight.LocationY))); // PathPlanner config constants - private static final double ROBOT_MASS_KG = 74.088; + private static final double ROBOT_MASS_KG = Units.lbsToKilograms(140); private static final double ROBOT_MOI = 6.883; private static final double WHEEL_COF = 1.2; private static final RobotConfig PP_CONFIG = @@ -165,6 +167,8 @@ public Drive( (state) -> Logger.recordOutput("Drive/SysIdState", state.toString())), new SysIdRoutine.Mechanism( (voltage) -> runCharacterization(voltage.in(Volts)), null, this)); + + SmartDashboard.putData("Swerve Drive", new SwerveWidget(this)); } @Override @@ -229,7 +233,7 @@ public void periodic() { /** * Runs the drive at the desired velocity. * - * @param speeds Speeds in meters/sec + * @param speeds Speeds in meters/second */ public void runVelocity(ChassisSpeeds speeds) { // Calculate module setpoints @@ -293,7 +297,7 @@ public Command sysIdDynamic(SysIdRoutine.Direction direction) { /** Returns the module states (turn angles and drive velocities) for all of the modules. */ @AutoLogOutput(key = "SwerveStates/Measured") - private SwerveModuleState[] getModuleStates() { + SwerveModuleState[] getModuleStates() { SwerveModuleState[] states = new SwerveModuleState[4]; for (int i = 0; i < 4; i++) { states[i] = modules[i].getState(); @@ -302,7 +306,7 @@ private SwerveModuleState[] getModuleStates() { } /** Returns the module positions (turn angles and drive positions) for all of the modules. */ - private SwerveModulePosition[] getModulePositions() { + SwerveModulePosition[] getModulePositions() { SwerveModulePosition[] states = new SwerveModulePosition[4]; for (int i = 0; i < 4; i++) { states[i] = modules[i].getPosition(); @@ -325,13 +329,13 @@ public double[] getWheelRadiusCharacterizationPositions() { return values; } - /** Returns the average velocity of the modules in rotations/sec (Phoenix native units). */ + /** Returns the average velocity of the modules in rotations/second (Phoenix native units). */ public double getFFCharacterizationVelocity() { double output = 0.0; for (int i = 0; i < 4; i++) { - output += modules[i].getFFCharacterizationVelocity() / 4.0; + output += modules[i].getFFCharacterizationVelocity(); } - return output; + return output / 4; } /** Returns the current odometry pose. */ @@ -367,12 +371,12 @@ public void addVisionMeasurement(Pose2d pose, double timestamp, Matrix s poseEstimator.addVisionMeasurement(pose, timestamp, stdDevs); } - /** Returns the maximum linear speed in meters per sec. */ + /** Returns the maximum linear speed in meters per second. */ public double getMaxLinearSpeedMetersPerSec() { return TunerConstants.kSpeedAt12Volts.in(MetersPerSecond); } - /** Returns the maximum angular speed in radians per sec. */ + /** Returns the maximum angular speed in radians per second. */ public double getMaxAngularSpeedRadPerSec() { return getMaxLinearSpeedMetersPerSec() / DRIVE_BASE_RADIUS; } diff --git a/src/main/java/frc/robot/subsystems/drive/SwerveWidget.java b/src/main/java/frc/robot/subsystems/drive/SwerveWidget.java new file mode 100644 index 0000000..1008fc1 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/SwerveWidget.java @@ -0,0 +1,39 @@ +package frc.robot.subsystems.drive; + +import edu.wpi.first.util.sendable.Sendable; +import edu.wpi.first.util.sendable.SendableBuilder; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +public final class SwerveWidget implements Sendable { + private final Drive drive; + + @Override + public void initSendable(SendableBuilder builder) { + builder.setSmartDashboardType("SwerveDrive"); + + // Initialize the front left module + builder.addDoubleProperty( + "Front Left Angle", () -> drive.getModulePositions()[0].angle.getRadians(), null); + builder.addDoubleProperty( + "Front Left Velocity", () -> drive.getModuleStates()[0].speedMetersPerSecond, null); + + // Initialize the front right module + builder.addDoubleProperty( + "Front Right Angle", () -> drive.getModulePositions()[1].angle.getRadians(), null); + builder.addDoubleProperty( + "Front Right Velocity", () -> drive.getModuleStates()[1].speedMetersPerSecond, null); + + // Initialize the back left module + builder.addDoubleProperty( + "Back Left Angle", () -> drive.getModulePositions()[2].angle.getRadians(), null); + builder.addDoubleProperty( + "Back Left Velocity", () -> drive.getModuleStates()[2].speedMetersPerSecond, null); + + // Initialize the back right module + builder.addDoubleProperty( + "Back Right Angle", () -> drive.getModulePositions()[3].angle.getRadians(), null); + builder.addDoubleProperty( + "Back Right Velocity", () -> drive.getModuleStates()[3].speedMetersPerSecond, null); + } +} diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java index 18540ff..04270c2 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java @@ -4,7 +4,7 @@ import frc.robot.Constants; public final class EndEffectorConstants { - public static final int kMotorID = 20, kExitBreakerID = 0, kEntranceBreakerID = 1; + public static final int kMotorID = 20, kExitBreakerID = 2, kEntranceBreakerID = 1; public static final CANBus kMotorBus = Constants.kRIOBus; public static final double kFastEjectSpeed = .9, kAutoEjectSpeed = 1, diff --git a/src/main/java/frc/robot/util/AllianceFlipUtil.java b/src/main/java/frc/robot/util/AllianceFlipUtil.java index 61d9b9c..4a1d72c 100644 --- a/src/main/java/frc/robot/util/AllianceFlipUtil.java +++ b/src/main/java/frc/robot/util/AllianceFlipUtil.java @@ -9,47 +9,53 @@ import frc.robot.FieldConstants; public class AllianceFlipUtil { + public static double applyXUnchecked(double x) { + return FieldConstants.fieldLength - x; + } + public static double applyX(double x) { return shouldFlip() ? FieldConstants.fieldLength - x : x; } + public static double applyYUnchecked(double y) { + return FieldConstants.fieldWidth - y; + } + public static double applyY(double y) { return shouldFlip() ? FieldConstants.fieldWidth - y : y; } - public static Translation2d apply(Translation2d translation) { - return new Translation2d(applyX(translation.getX()), applyY(translation.getY())); + public static Translation2d applyUnchecked(Translation2d translation) { + return new Translation2d( + applyXUnchecked(translation.getX()), applyYUnchecked(translation.getX())); } - public static Rotation2d apply(Rotation2d rotation) { - return shouldFlip() ? rotation.rotateBy(Rotation2d.kPi) : rotation; + public static Translation2d apply(Translation2d translation) { + return shouldFlip() ? applyUnchecked(translation) : translation; } - public static Pose2d apply(Pose2d pose) { - return shouldFlip() - ? new Pose2d(apply(pose.getTranslation()), apply(pose.getRotation())) - : pose; + public static Rotation2d applyUnchecked(Rotation2d rotation) { + return rotation.rotateBy(Rotation2d.k180deg); } - public static double applyXUnchecked(double x) { - return FieldConstants.fieldLength - x; + public static Rotation2d apply(Rotation2d rotation) { + return shouldFlip() ? applyUnchecked(rotation) : rotation; } - public static double applyYUnchecked(double y) { - return FieldConstants.fieldWidth - y; + public static Pose2d applyUnchecked(Pose2d pose) { + return new Pose2d(applyUnchecked(pose.getTranslation()), applyUnchecked(pose.getRotation())); } - public static Translation2d applyUnchecked(Translation2d translation) { - return new Translation2d( - applyXUnchecked(translation.getX()), applyYUnchecked(translation.getY())); + public static Pose2d apply(Pose2d pose) { + return shouldFlip() ? applyUnchecked(pose) : pose; } - public static Rotation2d applyUnchecked(Rotation2d rotation) { - return rotation.rotateBy(Rotation2d.kPi); + public static Transform2d applyUnchecked(Transform2d transform) { + return new Transform2d(-transform.getX(), -transform.getY(), transform.getRotation().times(-1)); } - public static Pose2d applyUnchecked(Pose2d pose) { - return new Pose2d(applyUnchecked(pose.getTranslation()), applyUnchecked(pose.getRotation())); + public static Transform2d apply(Transform2d transform) { + return shouldFlip() ? applyUnchecked(transform) : transform; } public static Translation3d apply(Translation3d translation) { From 452d01154aae4f2af097a5c754ba4605996a2d98 Mon Sep 17 00:00:00 2001 From: Cooper Bouchard Date: Tue, 17 Feb 2026 19:44:35 -0500 Subject: [PATCH 11/11] Final demo code --- camera_calibrations/Left_1280x720.json | 26569 ++++++++ camera_calibrations/Left_1280x800.json | 53752 ++++++++++++++++ camera_calibrations/Right_1280x720.json | 40492 ++++++++++++ camera_calibrations/Right_1280x800.json | 40492 ++++++++++++ elastic-layout.json | 2 +- .../deploy/pathplanner/autos/Middle G.auto | 37 + .../pathplanner/paths/Back Path from G.path | 54 + .../pathplanner/paths/Middle to Branch G.path | 82 + src/main/java/frc/robot/Constants.java | 3 +- src/main/java/frc/robot/Robot.java | 9 +- src/main/java/frc/robot/RobotContainer.java | 112 +- .../robot/autopilot/DriveToBargeCommand.java | 4 +- .../robot/autopilot/DriveToPoseCommand.java | 23 + .../frc/robot/commands/DriveCommands.java | 166 +- .../commands/JoystickApproachCommand.java | 101 + .../frc/robot/generated/TunerConstants.java | 4 +- .../frc/robot/subsystems/Superstructure.java | 2 +- .../elevator/ElevatorConstants.java | 8 +- .../subsystems/end_effector/EndEffector.java | 21 +- .../end_effector/EndEffectorConstants.java | 2 +- .../frc/robot/subsystems/vision/Vision.java | 5 +- .../subsystems/vision/VisionConstants.java | 12 +- .../vision/VisionIOPhotonVisionExt.java | 12 +- .../frc/robot/util/DeltaTimeCalculator.java | 16 + .../java/frc/robot/util/LocalADStarAK.java | 111 +- .../frc/robot/util/LoggedTunableNumber.java | 123 + .../java/frc/robot/util/LoggedTunablePID.java | 46 + .../frc/robot/util/phoenix/PhoenixUtil.java | 22 + 28 files changed, 161996 insertions(+), 286 deletions(-) create mode 100644 camera_calibrations/Left_1280x720.json create mode 100644 camera_calibrations/Left_1280x800.json create mode 100644 camera_calibrations/Right_1280x720.json create mode 100644 camera_calibrations/Right_1280x800.json create mode 100644 src/main/deploy/pathplanner/autos/Middle G.auto create mode 100644 src/main/deploy/pathplanner/paths/Back Path from G.path create mode 100644 src/main/deploy/pathplanner/paths/Middle to Branch G.path create mode 100644 src/main/java/frc/robot/commands/JoystickApproachCommand.java create mode 100644 src/main/java/frc/robot/util/DeltaTimeCalculator.java create mode 100644 src/main/java/frc/robot/util/LoggedTunableNumber.java create mode 100644 src/main/java/frc/robot/util/LoggedTunablePID.java diff --git a/camera_calibrations/Left_1280x720.json b/camera_calibrations/Left_1280x720.json new file mode 100644 index 0000000..4ce6d35 --- /dev/null +++ b/camera_calibrations/Left_1280x720.json @@ -0,0 +1,26569 @@ +{ + "resolution": { + "width": 1280.0, + "height": 720.0 + }, + "cameraIntrinsics": { + "rows": 3, + "cols": 3, + "type": 6, + "data": [ + 1080.1899962209704, + 0.0, + 698.1224473538825, + 0.0, + 1087.2396295572546, + 366.19333104023036, + 0.0, + 0.0, + 1.0 + ] + }, + "distCoeffs": { + "rows": 1, + "cols": 8, + "type": 6, + "data": [ + -0.4519166989522143, + 0.2833334265777998, + 0.004764470006670603, + -0.008685762349278483, + -0.1139325578715391, + -0.0026402633364517817, + 0.023630108319121393, + -0.03881481053904473 + ] + }, + "calobjectWarp": [ + 3.334052076789921E-4, + -1.9574254017395258E-4 + ], + "observations": [ + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 554.1110229492188, + "y": 103.5578384399414 + }, + { + "x": 628.6356201171875, + "y": 105.09611511230469 + }, + { + "x": 696.7020263671875, + "y": 110.03922271728516 + }, + { + "x": 773.1561279296875, + "y": 114.27679443359375 + }, + { + "x": 841.1654663085938, + "y": 114.39990997314453 + }, + { + "x": 908.221923828125, + "y": 128.0491180419922 + }, + { + "x": 973.4287719726562, + "y": 127.12261962890625 + }, + { + "x": 553.664794921875, + "y": 160.80747985839844 + }, + { + "x": 623.7018432617188, + "y": 168.39675903320312 + }, + { + "x": 698.6280517578125, + "y": 171.05459594726562 + }, + { + "x": 763.1486206054688, + "y": 173.4635772705078 + }, + { + "x": 831.749267578125, + "y": 178.661376953125 + }, + { + "x": 894.8892211914062, + "y": 183.61866760253906 + }, + { + "x": 960.9952392578125, + "y": 192.34542846679688 + }, + { + "x": 554.6934204101562, + "y": 226.73782348632812 + }, + { + "x": 626.56201171875, + "y": 229.25550842285156 + }, + { + "x": 687.8333129882812, + "y": 232.82476806640625 + }, + { + "x": 756.2969360351562, + "y": 230.6312713623047 + }, + { + "x": 825.3143310546875, + "y": 233.5977783203125 + }, + { + "x": 888.8875732421875, + "y": 242.18336486816406 + }, + { + "x": 945.8619384765625, + "y": 246.12013244628906 + }, + { + "x": 557.7040405273438, + "y": 281.6238708496094 + }, + { + "x": 620.4776000976562, + "y": 285.2011413574219 + }, + { + "x": 688.7073364257812, + "y": 286.6844787597656 + }, + { + "x": 750.8256225585938, + "y": 289.9215393066406 + }, + { + "x": 816.6300659179688, + "y": 295.0107421875 + }, + { + "x": 873.5208129882812, + "y": 299.75689697265625 + }, + { + "x": 937.3973388671875, + "y": 300.6534423828125 + }, + { + "x": 556.1491088867188, + "y": 334.6646423339844 + }, + { + "x": 623.4509887695312, + "y": 336.5791931152344 + }, + { + "x": 682.7852783203125, + "y": 337.45941162109375 + }, + { + "x": 749.3760986328125, + "y": 345.3756408691406 + }, + { + "x": 806.3037109375, + "y": 344.7796936035156 + }, + { + "x": 871.245849609375, + "y": 351.186279296875 + }, + { + "x": 923.9336547851562, + "y": 349.83050537109375 + }, + { + "x": 561.1183471679688, + "y": 386.0068359375 + }, + { + "x": 619.9801635742188, + "y": 385.2368469238281 + }, + { + "x": 677.512939453125, + "y": 385.1597900390625 + }, + { + "x": 737.90185546875, + "y": 393.331787109375 + }, + { + "x": 803.4448852539062, + "y": 396.0739440917969 + }, + { + "x": 859.1752319335938, + "y": 392.5538024902344 + }, + { + "x": 918.4188232421875, + "y": 401.4706726074219 + }, + { + "x": 554.2273559570312, + "y": 431.191162109375 + }, + { + "x": 620.2384033203125, + "y": 433.300048828125 + }, + { + "x": 677.4968872070312, + "y": 433.6080322265625 + }, + { + "x": 735.85205078125, + "y": 438.2521667480469 + }, + { + "x": 792.8436889648438, + "y": 436.1180114746094 + }, + { + "x": 850.3804931640625, + "y": 440.4087219238281 + }, + { + "x": 909.54638671875, + "y": 437.1394958496094 + } + ], + "reprojectionErrors": [ + { + "x": 1.0797119140625, + "y": -2.9807968139648438 + }, + { + "x": -1.66925048828125, + "y": -0.820068359375 + }, + { + "x": 1.58673095703125, + "y": -2.023284912109375 + }, + { + "x": -3.97015380859375, + "y": -2.4791946411132812 + }, + { + "x": -1.47991943359375, + "y": 1.2220077514648438 + }, + { + "x": 1.5924072265625, + "y": -8.559288024902344 + }, + { + "x": 6.169921875, + "y": -3.7203598022460938 + }, + { + "x": 2.84161376953125, + "y": 5.1883392333984375 + }, + { + "x": 1.82415771484375, + "y": 0.9564666748046875 + }, + { + "x": -4.50201416015625, + "y": 1.7044219970703125 + }, + { + "x": -0.81634521484375, + "y": 2.7502899169921875 + }, + { + "x": -1.57916259765625, + "y": 1.0571136474609375 + }, + { + "x": 2.77508544921875, + "y": -0.345062255859375 + }, + { + "x": 3.84393310546875, + "y": -5.4654693603515625 + }, + { + "x": 3.03924560546875, + "y": -0.2112579345703125 + }, + { + "x": -2.36602783203125, + "y": 0.326263427734375 + }, + { + "x": 2.4364013671875, + "y": -0.1331787109375 + }, + { + "x": -0.31915283203125, + "y": 5.2252655029296875 + }, + { + "x": -3.970703125, + "y": 5.479339599609375 + }, + { + "x": -2.49755859375, + "y": 0.1705780029296875 + }, + { + "x": 5.277587890625, + "y": -0.432586669921875 + }, + { + "x": 1.1748046875, + "y": 1.059112548828125 + }, + { + "x": 2.48699951171875, + "y": 0.268646240234375 + }, + { + "x": -2.01953125, + "y": 1.63189697265625 + }, + { + "x": -0.755126953125, + "y": 1.301544189453125 + }, + { + "x": -3.49566650390625, + "y": -0.820404052734375 + }, + { + "x": 2.37994384765625, + "y": -2.538360595703125 + }, + { + "x": 0.99298095703125, + "y": -0.34527587890625 + }, + { + "x": 3.80389404296875, + "y": 0.24462890625 + }, + { + "x": -1.62908935546875, + "y": 0.87762451171875 + }, + { + "x": 0.5672607421875, + "y": 2.608978271484375 + }, + { + "x": -4.8106689453125, + "y": -2.63140869140625 + }, + { + "x": -0.8231201171875, + "y": 0.7049560546875 + }, + { + "x": -5.1280517578125, + "y": -2.896331787109375 + }, + { + "x": 2.56280517578125, + "y": 1.329986572265625 + }, + { + "x": -0.15606689453125, + "y": -2.415313720703125 + }, + { + "x": 0.77911376953125, + "y": 0.688201904296875 + }, + { + "x": 2.72698974609375, + "y": 3.166290283203125 + }, + { + "x": 1.52142333984375, + "y": -2.536956787109375 + }, + { + "x": -5.1168212890625, + "y": -2.742462158203125 + }, + { + "x": -2.2025146484375, + "y": 3.382415771484375 + }, + { + "x": -3.0435791015625, + "y": -2.861297607421875 + }, + { + "x": 7.6854248046875, + "y": -2.124298095703125 + }, + { + "x": -0.4693603515625, + "y": -2.09173583984375 + }, + { + "x": -0.1680908203125, + "y": -0.1878662109375 + }, + { + "x": -1.24212646484375, + "y": -2.549652099609375 + }, + { + "x": -1.21392822265625, + "y": 1.937469482421875 + }, + { + "x": -1.974853515625, + "y": 0.07049560546875 + }, + { + "x": -4.59210205078125, + "y": 5.834442138671875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.05064351569772492, + "y": -0.09350284499957895, + "z": 0.3827325440695356 + }, + "rotation": { + "quaternion": { + "W": 0.9468432658081846, + "X": 0.3202367966844497, + "Y": -0.013338381573009058, + "Z": 0.027537458488157526 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img0.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img0.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 178.74269104003906, + "y": 276.1816101074219 + }, + { + "x": 225.5302276611328, + "y": 280.1244812011719 + }, + { + "x": 276.3524475097656, + "y": 286.19287109375 + }, + { + "x": 335.47442626953125, + "y": 290.17462158203125 + }, + { + "x": 393.2412414550781, + "y": 290.2635803222656 + }, + { + "x": 453.65899658203125, + "y": 300.4137878417969 + }, + { + "x": 515.4930419921875, + "y": 302.386474609375 + }, + { + "x": 175.44985961914062, + "y": 332.7796936035156 + }, + { + "x": 226.22531127929688, + "y": 338.74005126953125 + }, + { + "x": 277.9454040527344, + "y": 344.57568359375 + }, + { + "x": 332.4729309082031, + "y": 348.6127624511719 + }, + { + "x": 389.0950622558594, + "y": 355.1913146972656 + }, + { + "x": 448.7264099121094, + "y": 360.845703125 + }, + { + "x": 511.67474365234375, + "y": 367.0390319824219 + }, + { + "x": 179.57843017578125, + "y": 391.3819885253906 + }, + { + "x": 226.299072265625, + "y": 397.543701171875 + }, + { + "x": 275.58782958984375, + "y": 405.3559875488281 + }, + { + "x": 330.0037536621094, + "y": 408.2127380371094 + }, + { + "x": 389.6258850097656, + "y": 412.94677734375 + }, + { + "x": 446.6031494140625, + "y": 422.4840087890625 + }, + { + "x": 508.3197021484375, + "y": 429.3887939453125 + }, + { + "x": 180.81805419921875, + "y": 447.86700439453125 + }, + { + "x": 226.2672882080078, + "y": 455.5760192871094 + }, + { + "x": 278.15692138671875, + "y": 460.3337097167969 + }, + { + "x": 331.6354675292969, + "y": 467.8240661621094 + }, + { + "x": 387.4959411621094, + "y": 476.7041320800781 + }, + { + "x": 443.73773193359375, + "y": 484.6025085449219 + }, + { + "x": 506.2872619628906, + "y": 490.8898010253906 + }, + { + "x": 181.34954833984375, + "y": 501.95550537109375 + }, + { + "x": 231.87103271484375, + "y": 509.6227722167969 + }, + { + "x": 279.3055419921875, + "y": 515.7051391601562 + }, + { + "x": 332.5829772949219, + "y": 524.9837646484375 + }, + { + "x": 387.4278869628906, + "y": 531.5694580078125 + }, + { + "x": 446.49468994140625, + "y": 542.9642944335938 + }, + { + "x": 501.1236267089844, + "y": 548.8881225585938 + }, + { + "x": 188.426025390625, + "y": 553.349365234375 + }, + { + "x": 234.42677307128906, + "y": 558.5360107421875 + }, + { + "x": 280.2259521484375, + "y": 567.2297973632812 + }, + { + "x": 329.382080078125, + "y": 584.1561279296875 + }, + { + "x": 388.52862548828125, + "y": 587.925048828125 + }, + { + "x": 444.5735778808594, + "y": 592.5276489257812 + }, + { + "x": 501.5859375, + "y": 603.62548828125 + }, + { + "x": 185.10899353027344, + "y": 603.5702514648438 + }, + { + "x": 236.52438354492188, + "y": 610.3269653320312 + }, + { + "x": 285.5089111328125, + "y": 619.8211059570312 + }, + { + "x": 336.07061767578125, + "y": 630.7947387695312 + }, + { + "x": 386.5470275878906, + "y": 638.3318481445312 + }, + { + "x": 444.31085205078125, + "y": 648.7486572265625 + }, + { + "x": 502.5072326660156, + "y": 652.9490356445312 + } + ], + "reprojectionErrors": [ + { + "x": -6.931182861328125, + "y": -2.8297119140625 + }, + { + "x": -0.321197509765625, + "y": -1.499237060546875 + }, + { + "x": 3.258880615234375, + "y": -2.17218017578125 + }, + { + "x": -0.405853271484375, + "y": -0.6307373046875 + }, + { + "x": -1.607421875, + "y": 4.937286376953125 + }, + { + "x": -4.295867919921875, + "y": 0.584136962890625 + }, + { + "x": -7.1771240234375, + "y": 4.55535888671875 + }, + { + "x": -1.6143341064453125, + "y": -0.671417236328125 + }, + { + "x": 0.4293060302734375, + "y": -0.836151123046875 + }, + { + "x": 2.510223388671875, + "y": -0.7381591796875 + }, + { + "x": 2.814361572265625, + "y": 1.3026123046875 + }, + { + "x": 2.10595703125, + "y": 0.95281982421875 + }, + { + "x": -0.4752197265625, + "y": 1.685089111328125 + }, + { + "x": -5.17938232421875, + "y": 2.04376220703125 + }, + { + "x": -3.7145233154296875, + "y": -1.822723388671875 + }, + { + "x": 1.8149261474609375, + "y": -1.6912841796875 + }, + { + "x": 5.735992431640625, + "y": -3.057586669921875 + }, + { + "x": 5.536895751953125, + "y": 0.69134521484375 + }, + { + "x": 1.1884765625, + "y": 2.729888916015625 + }, + { + "x": 0.5946044921875, + "y": 0.1397705078125 + }, + { + "x": -3.57318115234375, + "y": 0.36474609375 + }, + { + "x": -2.92193603515625, + "y": -2.130462646484375 + }, + { + "x": 3.31915283203125, + "y": -3.072540283203125 + }, + { + "x": 4.0579833984375, + "y": -0.896514892578125 + }, + { + "x": 4.19195556640625, + "y": -1.279083251953125 + }, + { + "x": 2.9764404296875, + "y": -2.869476318359375 + }, + { + "x": 2.463226318359375, + "y": -3.28814697265625 + }, + { + "x": -3.220062255859375, + "y": -1.89697265625 + }, + { + "x": -1.41790771484375, + "y": -1.28460693359375 + }, + { + "x": -0.7998046875, + "y": -1.73388671875 + }, + { + "x": 3.822418212890625, + "y": -0.41851806640625 + }, + { + "x": 3.5634765625, + "y": -2.11181640625 + }, + { + "x": 2.7457275390625, + "y": -0.91632080078125 + }, + { + "x": -1.235565185546875, + "y": -4.32550048828125 + }, + { + "x": 0.33172607421875, + "y": -2.0499267578125 + }, + { + "x": -6.456024169921875, + "y": 1.04296875 + }, + { + "x": -1.8590850830078125, + "y": 3.5035400390625 + }, + { + "x": 3.836151123046875, + "y": 2.64886474609375 + }, + { + "x": 7.114471435546875, + "y": -6.2381591796875 + }, + { + "x": 1.388031005859375, + "y": -1.7589111328125 + }, + { + "x": -0.203033447265625, + "y": 2.1046142578125 + }, + { + "x": -1.67694091796875, + "y": -0.2994384765625 + }, + { + "x": -1.0982818603515625, + "y": 3.35968017578125 + }, + { + "x": -2.449249267578125, + "y": 4.658447265625 + }, + { + "x": -0.492462158203125, + "y": 3.42315673828125 + }, + { + "x": 0.80609130859375, + "y": 0.92022705078125 + }, + { + "x": 3.15313720703125, + "y": 2.07476806640625 + }, + { + "x": -0.77728271484375, + "y": 0.5802001953125 + }, + { + "x": -4.081024169921875, + "y": 5.5426025390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.22515439513278393, + "y": -0.039459792048296194, + "z": 0.46210235722349746 + }, + "rotation": { + "quaternion": { + "W": 0.9890973341295232, + "X": 0.10080480053454106, + "Y": 0.09857438219476368, + "Z": 0.0425199598069254 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img1.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img1.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 122.46574401855469, + "y": 534.5197143554688 + }, + { + "x": 123.18224334716797, + "y": 481.74163818359375 + }, + { + "x": 114.06722259521484, + "y": 424.2387390136719 + }, + { + "x": 115.32199096679688, + "y": 364.593994140625 + }, + { + "x": 113.8797607421875, + "y": 302.60760498046875 + }, + { + "x": 111.2356185913086, + "y": 239.69720458984375 + }, + { + "x": 116.0460433959961, + "y": 179.60336303710938 + }, + { + "x": 173.33612060546875, + "y": 534.753662109375 + }, + { + "x": 172.42616271972656, + "y": 480.3724060058594 + }, + { + "x": 171.38027954101562, + "y": 424.39593505859375 + }, + { + "x": 165.2328338623047, + "y": 366.3861999511719 + }, + { + "x": 167.6446990966797, + "y": 304.2489318847656 + }, + { + "x": 168.06259155273438, + "y": 240.23333740234375 + }, + { + "x": 168.2516632080078, + "y": 179.8516845703125 + }, + { + "x": 230.2331085205078, + "y": 539.935791015625 + }, + { + "x": 224.06088256835938, + "y": 481.57781982421875 + }, + { + "x": 226.26759338378906, + "y": 422.5616455078125 + }, + { + "x": 223.09161376953125, + "y": 364.90386962890625 + }, + { + "x": 218.96026611328125, + "y": 307.4975280761719 + }, + { + "x": 225.55023193359375, + "y": 241.767333984375 + }, + { + "x": 222.32958984375, + "y": 180.6791534423828 + }, + { + "x": 287.14642333984375, + "y": 546.2284545898438 + }, + { + "x": 280.6336669921875, + "y": 490.4360656738281 + }, + { + "x": 283.8871154785156, + "y": 430.6001281738281 + }, + { + "x": 280.3136901855469, + "y": 367.1080322265625 + }, + { + "x": 277.5332946777344, + "y": 302.166748046875 + }, + { + "x": 281.8447265625, + "y": 241.2157440185547 + }, + { + "x": 285.4252014160156, + "y": 179.31735229492188 + }, + { + "x": 341.50897216796875, + "y": 545.795166015625 + }, + { + "x": 344.7939453125, + "y": 492.54229736328125 + }, + { + "x": 340.4975891113281, + "y": 429.53704833984375 + }, + { + "x": 341.2513732910156, + "y": 371.5189208984375 + }, + { + "x": 344.4333190917969, + "y": 300.8283386230469 + }, + { + "x": 342.26251220703125, + "y": 241.77383422851562 + }, + { + "x": 346.28668212890625, + "y": 176.8371124267578 + }, + { + "x": 401.1092224121094, + "y": 548.5321655273438 + }, + { + "x": 401.7066650390625, + "y": 489.55755615234375 + }, + { + "x": 407.32470703125, + "y": 437.6369934082031 + }, + { + "x": 400.5860900878906, + "y": 373.4001159667969 + }, + { + "x": 404.1931457519531, + "y": 307.7814025878906 + }, + { + "x": 404.23260498046875, + "y": 243.7914276123047 + }, + { + "x": 411.0956115722656, + "y": 184.11923217773438 + }, + { + "x": 467.6203308105469, + "y": 546.426025390625 + }, + { + "x": 464.37322998046875, + "y": 496.2547912597656 + }, + { + "x": 461.4325256347656, + "y": 434.86376953125 + }, + { + "x": 465.5931701660156, + "y": 373.25823974609375 + }, + { + "x": 466.0212707519531, + "y": 309.1406555175781 + }, + { + "x": 470.4012756347656, + "y": 247.299560546875 + }, + { + "x": 475.9714660644531, + "y": 177.03741455078125 + } + ], + "reprojectionErrors": [ + { + "x": -5.5659942626953125, + "y": 3.8492431640625 + }, + { + "x": -7.2276611328125, + "y": -2.239166259765625 + }, + { + "x": 0.8535842895507812, + "y": -4.06597900390625 + }, + { + "x": -1.5250625610351562, + "y": -4.24102783203125 + }, + { + "x": -1.298370361328125, + "y": -2.592071533203125 + }, + { + "x": 0.036895751953125, + "y": -0.5652618408203125 + }, + { + "x": -6.177497863769531, + "y": -1.930572509765625 + }, + { + "x": -0.4990234375, + "y": 6.4193115234375 + }, + { + "x": -0.311279296875, + "y": 1.62213134765625 + }, + { + "x": -0.0682220458984375, + "y": -2.047882080078125 + }, + { + "x": 5.1944732666015625, + "y": -4.179840087890625 + }, + { + "x": 1.8145294189453125, + "y": -2.70745849609375 + }, + { + "x": 0.3437652587890625, + "y": 0.0912322998046875 + }, + { + "x": -0.984527587890625, + "y": -1.3258056640625 + }, + { + "x": -0.8035736083984375, + "y": 4.0538330078125 + }, + { + "x": 4.874603271484375, + "y": 2.9222412109375 + }, + { + "x": 2.101409912109375, + "y": 1.97589111328125 + }, + { + "x": 4.6373748779296875, + "y": -0.829254150390625 + }, + { + "x": 8.053955078125, + "y": -4.41455078125 + }, + { + "x": 0.6732177734375, + "y": -0.2339324951171875 + }, + { + "x": 3.0257110595703125, + "y": -1.2833251953125 + }, + { + "x": -0.47039794921875, + "y": 0.5902099609375 + }, + { + "x": 5.78167724609375, + "y": -3.417388916015625 + }, + { + "x": 2.203521728515625, + "y": -3.85919189453125 + }, + { + "x": 5.3873291015625, + "y": -1.150482177734375 + }, + { + "x": 7.712158203125, + "y": 2.473175048828125 + }, + { + "x": 2.878173828125, + "y": 1.542724609375 + }, + { + "x": -1.292999267578125, + "y": 0.9653778076171875 + }, + { + "x": 3.066253662109375, + "y": 3.8643798828125 + }, + { + "x": -0.240814208984375, + "y": -2.992156982421875 + }, + { + "x": 3.97808837890625, + "y": -0.579071044921875 + }, + { + "x": 3.090789794921875, + "y": -3.66387939453125 + }, + { + "x": -0.281585693359375, + "y": 5.383941650390625 + }, + { + "x": 1.64105224609375, + "y": 2.2259368896484375 + }, + { + "x": -2.68994140625, + "y": 4.349578857421875 + }, + { + "x": 2.016204833984375, + "y": 3.9798583984375 + }, + { + "x": 1.64056396484375, + "y": 2.5364990234375 + }, + { + "x": -3.802154541015625, + "y": -6.448486328125 + }, + { + "x": 3.064727783203125, + "y": -3.633209228515625 + }, + { + "x": -0.461669921875, + "y": 0.018524169921875 + }, + { + "x": -0.46868896484375, + "y": 1.4658660888671875 + }, + { + "x": -7.34820556640625, + "y": -2.0114593505859375 + }, + { + "x": -5.295623779296875, + "y": 8.94952392578125 + }, + { + "x": -1.577545166015625, + "y": -1.60467529296875 + }, + { + "x": 1.7967529296875, + "y": -1.43157958984375 + }, + { + "x": -1.968048095703125, + "y": -1.565277099609375 + }, + { + "x": -2.038421630859375, + "y": 0.26214599609375 + }, + { + "x": -6.09918212890625, + "y": -0.768524169921875 + }, + { + "x": -11.3890380859375, + "y": 6.0086669921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.24972823779429995, + "y": 0.07349735313205011, + "z": 0.4641146070851098 + }, + "rotation": { + "quaternion": { + "W": 0.7152232584852168, + "X": -0.006323932018263958, + "Y": 0.06222090793296541, + "Z": -0.6960921325669575 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img2.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img2.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 228.03236389160156, + "y": 149.40150451660156 + }, + { + "x": 287.5641174316406, + "y": 151.91900634765625 + }, + { + "x": 345.8101501464844, + "y": 157.38092041015625 + }, + { + "x": 413.1908264160156, + "y": 160.28778076171875 + }, + { + "x": 476.22027587890625, + "y": 159.75003051757812 + }, + { + "x": 539.0833740234375, + "y": 171.4025421142578 + }, + { + "x": 601.8340454101562, + "y": 170.85922241210938 + }, + { + "x": 219.8074493408203, + "y": 209.36802673339844 + }, + { + "x": 282.1082458496094, + "y": 214.56259155273438 + }, + { + "x": 344.8660888671875, + "y": 217.79820251464844 + }, + { + "x": 406.0610046386719, + "y": 220.57296752929688 + }, + { + "x": 468.4883728027344, + "y": 226.45445251464844 + }, + { + "x": 529.50439453125, + "y": 231.25839233398438 + }, + { + "x": 594.0087890625, + "y": 237.00302124023438 + }, + { + "x": 218.0586700439453, + "y": 276.3697509765625 + }, + { + "x": 278.6317443847656, + "y": 278.239013671875 + }, + { + "x": 335.53778076171875, + "y": 284.18841552734375 + }, + { + "x": 398.40997314453125, + "y": 282.8520202636719 + }, + { + "x": 464.8745422363281, + "y": 284.8080139160156 + }, + { + "x": 526.122314453125, + "y": 293.5148620605469 + }, + { + "x": 585.1021728515625, + "y": 298.45977783203125 + }, + { + "x": 216.7637176513672, + "y": 337.2003173828125 + }, + { + "x": 273.19305419921875, + "y": 341.931884765625 + }, + { + "x": 335.68133544921875, + "y": 343.29840087890625 + }, + { + "x": 396.3975524902344, + "y": 346.5895080566406 + }, + { + "x": 458.1407775878906, + "y": 353.23333740234375 + }, + { + "x": 516.9945068359375, + "y": 358.69610595703125 + }, + { + "x": 581.1605224609375, + "y": 358.91363525390625 + }, + { + "x": 211.60897827148438, + "y": 399.5951232910156 + }, + { + "x": 274.91680908203125, + "y": 401.47900390625 + }, + { + "x": 335.4859313964844, + "y": 400.331787109375 + }, + { + "x": 395.6966247558594, + "y": 411.74725341796875 + }, + { + "x": 452.33416748046875, + "y": 412.4994812011719 + }, + { + "x": 518.5950927734375, + "y": 419.45428466796875 + }, + { + "x": 569.8338623046875, + "y": 421.43353271484375 + }, + { + "x": 217.1279754638672, + "y": 458.9855651855469 + }, + { + "x": 272.736572265625, + "y": 458.1634216308594 + }, + { + "x": 328.3511962890625, + "y": 461.5462341308594 + }, + { + "x": 387.74957275390625, + "y": 469.7335510253906 + }, + { + "x": 452.2244873046875, + "y": 473.1834411621094 + }, + { + "x": 510.3533020019531, + "y": 472.0363464355469 + }, + { + "x": 569.2771606445312, + "y": 476.3327941894531 + }, + { + "x": 208.9905548095703, + "y": 516.1016845703125 + }, + { + "x": 273.84454345703125, + "y": 519.5026245117188 + }, + { + "x": 330.1269836425781, + "y": 519.9119873046875 + }, + { + "x": 388.5073547363281, + "y": 526.5028686523438 + }, + { + "x": 446.6371154785156, + "y": 525.5477294921875 + }, + { + "x": 506.43499755859375, + "y": 530.9292602539062 + }, + { + "x": 568.2568969726562, + "y": 530.5637817382812 + } + ], + "reprojectionErrors": [ + { + "x": -4.338226318359375, + "y": -1.51568603515625 + }, + { + "x": -1.848541259765625, + "y": 0.6212310791015625 + }, + { + "x": 1.696197509765625, + "y": -0.2172088623046875 + }, + { + "x": -4.100921630859375, + "y": 1.4702606201171875 + }, + { + "x": -5.730865478515625, + "y": 6.5749969482421875 + }, + { + "x": -7.35552978515625, + "y": -0.5361328125 + }, + { + "x": -9.00616455078125, + "y": 4.5247039794921875 + }, + { + "x": 1.145751953125, + "y": 0.7462921142578125 + }, + { + "x": 0.6568603515625, + "y": 0.0948638916015625 + }, + { + "x": -0.518707275390625, + "y": 1.3794097900390625 + }, + { + "x": -0.337677001953125, + "y": 3.103546142578125 + }, + { + "x": -1.572418212890625, + "y": 1.7014007568359375 + }, + { + "x": -1.5562744140625, + "y": 1.3589630126953125 + }, + { + "x": -5.16650390625, + "y": 0.05963134765625 + }, + { + "x": 0.2053070068359375, + "y": -4.45343017578125 + }, + { + "x": 1.2315673828125, + "y": -1.88970947265625 + }, + { + "x": 5.69635009765625, + "y": -3.4212646484375 + }, + { + "x": 3.989532470703125, + "y": 2.3194580078125 + }, + { + "x": -1.492218017578125, + "y": 4.755950927734375 + }, + { + "x": -1.91705322265625, + "y": 0.431396484375 + }, + { + "x": -0.21148681640625, + "y": -0.139862060546875 + }, + { + "x": -1.1372222900390625, + "y": -3.917083740234375 + }, + { + "x": 3.81732177734375, + "y": -4.32470703125 + }, + { + "x": 2.485443115234375, + "y": -1.374725341796875 + }, + { + "x": 2.721160888671875, + "y": -0.355133056640625 + }, + { + "x": 1.748077392578125, + "y": -2.692535400390625 + }, + { + "x": 3.5052490234375, + "y": -3.851531982421875 + }, + { + "x": -0.18695068359375, + "y": 0.2335205078125 + }, + { + "x": 1.431793212890625, + "y": -5.38848876953125 + }, + { + "x": -0.71051025390625, + "y": -3.056304931640625 + }, + { + "x": -0.340423583984375, + "y": 2.307159423828125 + }, + { + "x": 0.184539794921875, + "y": -4.890350341796875 + }, + { + "x": 4.1016845703125, + "y": -1.42138671875 + }, + { + "x": -1.76324462890625, + "y": -4.150238037109375 + }, + { + "x": 7.2574462890625, + "y": -1.8973388671875 + }, + { + "x": -6.621185302734375, + "y": -4.306976318359375 + }, + { + "x": -1.285369873046875, + "y": 0.624481201171875 + }, + { + "x": 3.8192138671875, + "y": 1.35870361328125 + }, + { + "x": 4.9375, + "y": -2.702423095703125 + }, + { + "x": 0.799102783203125, + "y": -2.0155029296875 + }, + { + "x": 2.848785400390625, + "y": 3.280426025390625 + }, + { + "x": 3.96728515625, + "y": 3.14630126953125 + }, + { + "x": -0.966033935546875, + "y": -1.41046142578125 + }, + { + "x": -5.09942626953125, + "y": -0.8076171875 + }, + { + "x": -0.88531494140625, + "y": 2.80194091796875 + }, + { + "x": 1.029296875, + "y": 0.2464599609375 + }, + { + "x": 3.01519775390625, + "y": 5.2548828125 + }, + { + "x": 3.1756591796875, + "y": 3.94580078125 + }, + { + "x": 1.17645263671875, + "y": 8.4044189453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.19575628885036342, + "y": -0.08949292446137407, + "z": 0.445702717159954 + }, + "rotation": { + "quaternion": { + "W": 0.9987963140341597, + "X": 0.032633109032968025, + "Y": -0.009140451557451449, + "Z": 0.03546061776033554 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img3.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img3.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 278.40374755859375, + "y": 119.61170959472656 + }, + { + "x": 336.0881042480469, + "y": 123.64915466308594 + }, + { + "x": 394.29522705078125, + "y": 130.51150512695312 + }, + { + "x": 460.8059387207031, + "y": 134.93035888671875 + }, + { + "x": 523.4287719726562, + "y": 136.3233642578125 + }, + { + "x": 586.109375, + "y": 149.9864044189453 + }, + { + "x": 646.2299194335938, + "y": 153.27188110351562 + }, + { + "x": 268.9630126953125, + "y": 178.65145874023438 + }, + { + "x": 329.72021484375, + "y": 185.1815185546875 + }, + { + "x": 392.53826904296875, + "y": 190.5165252685547 + }, + { + "x": 453.619873046875, + "y": 192.41244506835938 + }, + { + "x": 515.2775268554688, + "y": 202.16172790527344 + }, + { + "x": 575.5780029296875, + "y": 207.6700897216797 + }, + { + "x": 639.60107421875, + "y": 216.25701904296875 + }, + { + "x": 265.4919128417969, + "y": 243.47140502929688 + }, + { + "x": 323.59130859375, + "y": 246.57814025878906 + }, + { + "x": 381.1463928222656, + "y": 255.1412811279297 + }, + { + "x": 442.7924499511719, + "y": 255.13693237304688 + }, + { + "x": 509.5464172363281, + "y": 259.2630615234375 + }, + { + "x": 570.5582885742188, + "y": 270.38494873046875 + }, + { + "x": 629.1026000976562, + "y": 276.5117492675781 + }, + { + "x": 262.7052917480469, + "y": 304.42535400390625 + }, + { + "x": 317.3125915527344, + "y": 310.5599365234375 + }, + { + "x": 379.1445007324219, + "y": 312.46746826171875 + }, + { + "x": 440.456787109375, + "y": 317.6982116699219 + }, + { + "x": 501.11444091796875, + "y": 327.0726318359375 + }, + { + "x": 559.2845458984375, + "y": 334.3721618652344 + }, + { + "x": 623.6453247070312, + "y": 337.1448974609375 + }, + { + "x": 255.6282196044922, + "y": 364.5040283203125 + }, + { + "x": 317.3367614746094, + "y": 368.37921142578125 + }, + { + "x": 374.4202880859375, + "y": 371.5428161621094 + }, + { + "x": 438.18426513671875, + "y": 383.78765869140625 + }, + { + "x": 493.5120849609375, + "y": 385.5640563964844 + }, + { + "x": 559.5272216796875, + "y": 395.3403015136719 + }, + { + "x": 613.4439697265625, + "y": 397.39569091796875 + }, + { + "x": 258.605712890625, + "y": 423.77764892578125 + }, + { + "x": 313.28155517578125, + "y": 425.38836669921875 + }, + { + "x": 368.50079345703125, + "y": 429.72064208984375 + }, + { + "x": 427.5713195800781, + "y": 440.1614685058594 + }, + { + "x": 491.3797302246094, + "y": 445.5300598144531 + }, + { + "x": 549.618408203125, + "y": 446.91943359375 + }, + { + "x": 610.6956787109375, + "y": 457.4058837890625 + }, + { + "x": 251.31863403320312, + "y": 477.6434631347656 + }, + { + "x": 313.21636962890625, + "y": 485.8357238769531 + }, + { + "x": 368.063232421875, + "y": 488.42816162109375 + }, + { + "x": 426.6480712890625, + "y": 496.7666015625 + }, + { + "x": 484.5986022949219, + "y": 497.73773193359375 + }, + { + "x": 543.3580322265625, + "y": 504.9984436035156 + }, + { + "x": 608.3272094726562, + "y": 504.63262939453125 + } + ], + "reprojectionErrors": [ + { + "x": -4.985687255859375, + "y": -3.8414535522460938 + }, + { + "x": -1.034210205078125, + "y": -1.2849197387695312 + }, + { + "x": 2.149078369140625, + "y": -1.5925140380859375 + }, + { + "x": -3.193267822265625, + "y": 0.506744384765625 + }, + { + "x": -4.8466796875, + "y": 5.5977020263671875 + }, + { + "x": -6.73406982421875, + "y": -1.613037109375 + }, + { + "x": -6.2149658203125, + "y": 1.524566650390625 + }, + { + "x": 0.258819580078125, + "y": -0.7710723876953125 + }, + { + "x": 0.847900390625, + "y": -0.8448486328125 + }, + { + "x": -0.86773681640625, + "y": 0.2453155517578125 + }, + { + "x": -1.06756591796875, + "y": 4.7458953857421875 + }, + { + "x": -2.04132080078125, + "y": 1.36688232421875 + }, + { + "x": -1.83306884765625, + "y": 2.2049407958984375 + }, + { + "x": -5.5003662109375, + "y": -0.0570526123046875 + }, + { + "x": -0.3966064453125, + "y": -4.0751495361328125 + }, + { + "x": 2.559051513671875, + "y": -0.86138916015625 + }, + { + "x": 5.816802978515625, + "y": -3.127227783203125 + }, + { + "x": 4.764251708984375, + "y": 3.153594970703125 + }, + { + "x": -1.592864990234375, + "y": 5.28546142578125 + }, + { + "x": -2.38214111328125, + "y": 0.4053955078125 + }, + { + "x": -0.85601806640625, + "y": 0.50653076171875 + }, + { + "x": -1.6669921875, + "y": -4.11175537109375 + }, + { + "x": 4.488006591796875, + "y": -4.059783935546875 + }, + { + "x": 3.177764892578125, + "y": 0.203857421875 + }, + { + "x": 2.16925048828125, + "y": 1.13116455078125 + }, + { + "x": 1.619873046875, + "y": -2.0960693359375 + }, + { + "x": 3.384765625, + "y": -3.257080078125 + }, + { + "x": -1.19244384765625, + "y": 0.102264404296875 + }, + { + "x": 1.4224395751953125, + "y": -3.875640869140625 + }, + { + "x": 0.18194580078125, + "y": -1.696258544921875 + }, + { + "x": 3.327484130859375, + "y": 1.186920166015625 + }, + { + "x": -0.423919677734375, + "y": -5.016693115234375 + }, + { + "x": 4.066558837890625, + "y": -0.75531005859375 + }, + { + "x": -2.3026123046875, + "y": -4.49505615234375 + }, + { + "x": 3.27593994140625, + "y": -0.5130615234375 + }, + { + "x": -5.4735565185546875, + "y": -3.44061279296875 + }, + { + "x": 0.023040771484375, + "y": 0.873138427734375 + }, + { + "x": 4.7388916015625, + "y": 2.46502685546875 + }, + { + "x": 5.388397216796875, + "y": -2.049835205078125 + }, + { + "x": 1.10693359375, + "y": -1.488555908203125 + }, + { + "x": 2.22381591796875, + "y": 3.057861328125 + }, + { + "x": 0.352294921875, + "y": -1.4847412109375 + }, + { + "x": -2.0360260009765625, + "y": 1.792724609375 + }, + { + "x": -4.058258056640625, + "y": -0.603271484375 + }, + { + "x": 0.734710693359375, + "y": 2.607574462890625 + }, + { + "x": 1.5760498046875, + "y": 0.08148193359375 + }, + { + "x": 2.85986328125, + "y": 4.933746337890625 + }, + { + "x": 3.1644287109375, + "y": 3.50946044921875 + }, + { + "x": -2.889892578125, + "y": 9.72674560546875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.1758438962272537, + "y": -0.10301245893283639, + "z": 0.44724005254634497 + }, + "rotation": { + "quaternion": { + "W": 0.997638944206058, + "X": 0.045139254106091854, + "Y": -0.009641701801568895, + "Z": 0.050852948081080825 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img4.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img4.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 235.559326171875, + "y": 95.18392181396484 + }, + { + "x": 289.9471435546875, + "y": 97.62462615966797 + }, + { + "x": 347.0533142089844, + "y": 102.34809875488281 + }, + { + "x": 410.50653076171875, + "y": 105.07416534423828 + }, + { + "x": 473.22735595703125, + "y": 105.61002349853516 + }, + { + "x": 535.6650390625, + "y": 117.76802062988281 + }, + { + "x": 599.5086059570312, + "y": 118.14700317382812 + }, + { + "x": 226.90660095214844, + "y": 153.84262084960938 + }, + { + "x": 284.1928405761719, + "y": 158.08145141601562 + }, + { + "x": 344.4330139160156, + "y": 161.87457275390625 + }, + { + "x": 401.4826965332031, + "y": 165.79803466796875 + }, + { + "x": 464.6959228515625, + "y": 172.00364685058594 + }, + { + "x": 526.0741577148438, + "y": 175.4024200439453 + }, + { + "x": 590.4688110351562, + "y": 183.5966339111328 + }, + { + "x": 222.53160095214844, + "y": 216.11082458496094 + }, + { + "x": 279.32073974609375, + "y": 219.69349670410156 + }, + { + "x": 333.7205810546875, + "y": 226.1216583251953 + }, + { + "x": 394.45123291015625, + "y": 225.2862091064453 + }, + { + "x": 459.5237731933594, + "y": 229.6953582763672 + }, + { + "x": 521.379638671875, + "y": 240.23289489746094 + }, + { + "x": 581.263427734375, + "y": 244.85633850097656 + }, + { + "x": 219.3349609375, + "y": 276.5151062011719 + }, + { + "x": 272.74468994140625, + "y": 281.50140380859375 + }, + { + "x": 332.1321105957031, + "y": 284.2708435058594 + }, + { + "x": 391.20098876953125, + "y": 289.2967529296875 + }, + { + "x": 452.5207824707031, + "y": 297.17071533203125 + }, + { + "x": 511.7417907714844, + "y": 303.4173889160156 + }, + { + "x": 577.1214599609375, + "y": 307.6320495605469 + }, + { + "x": 212.51547241210938, + "y": 337.2945251464844 + }, + { + "x": 272.9175720214844, + "y": 341.2347412109375 + }, + { + "x": 327.1826171875, + "y": 344.75885009765625 + }, + { + "x": 389.0469970703125, + "y": 353.7346496582031 + }, + { + "x": 445.56109619140625, + "y": 356.4534606933594 + }, + { + "x": 512.4540405273438, + "y": 366.06451416015625 + }, + { + "x": 567.084228515625, + "y": 369.2816467285156 + }, + { + "x": 215.75189208984375, + "y": 395.14495849609375 + }, + { + "x": 269.5888366699219, + "y": 396.445068359375 + }, + { + "x": 322.0813293457031, + "y": 401.8236999511719 + }, + { + "x": 380.2236022949219, + "y": 413.6617126464844 + }, + { + "x": 442.1900634765625, + "y": 416.38494873046875 + }, + { + "x": 503.84136962890625, + "y": 419.58587646484375 + }, + { + "x": 564.4405517578125, + "y": 428.82769775390625 + }, + { + "x": 208.39991760253906, + "y": 452.595947265625 + }, + { + "x": 267.6172180175781, + "y": 457.3717041015625 + }, + { + "x": 322.376220703125, + "y": 462.3099670410156 + }, + { + "x": 378.5020446777344, + "y": 469.0433044433594 + }, + { + "x": 436.7572937011719, + "y": 474.8034362792969 + }, + { + "x": 498.2304382324219, + "y": 481.516357421875 + }, + { + "x": 561.6723022460938, + "y": 482.9186706542969 + } + ], + "reprojectionErrors": [ + { + "x": -4.074432373046875, + "y": -4.003196716308594 + }, + { + "x": 0.498291015625, + "y": -1.60662841796875 + }, + { + "x": 2.658111572265625, + "y": -1.4908370971679688 + }, + { + "x": -1.1993408203125, + "y": 0.6261215209960938 + }, + { + "x": -3.969635009765625, + "y": 4.9388580322265625 + }, + { + "x": -6.0765380859375, + "y": -2.3631515502929688 + }, + { + "x": -9.182861328125, + "y": 2.12310791015625 + }, + { + "x": 0.09722900390625, + "y": -1.5741424560546875 + }, + { + "x": 1.63140869140625, + "y": -0.8027801513671875 + }, + { + "x": 0.5150146484375, + "y": 0.424713134765625 + }, + { + "x": 2.916748046875, + "y": 1.5341949462890625 + }, + { + "x": -0.49267578125, + "y": 0.37579345703125 + }, + { + "x": -1.68927001953125, + "y": 2.0405120849609375 + }, + { + "x": -5.49847412109375, + "y": -1.071929931640625 + }, + { + "x": 0.0484161376953125, + "y": -3.007781982421875 + }, + { + "x": 1.936248779296875, + "y": -1.4091949462890625 + }, + { + "x": 6.514617919921875, + "y": -2.6373443603515625 + }, + { + "x": 5.08758544921875, + "y": 3.4189300537109375 + }, + { + "x": -0.331298828125, + "y": 4.2535247802734375 + }, + { + "x": -2.158203125, + "y": -1.015228271484375 + }, + { + "x": -1.61181640625, + "y": -0.3426361083984375 + }, + { + "x": -1.120941162109375, + "y": -2.841766357421875 + }, + { + "x": 3.999542236328125, + "y": -2.4776611328125 + }, + { + "x": 3.44146728515625, + "y": 0.13031005859375 + }, + { + "x": 3.525054931640625, + "y": 0.51104736328125 + }, + { + "x": 1.705413818359375, + "y": -1.924835205078125 + }, + { + "x": 2.357330322265625, + "y": -2.699676513671875 + }, + { + "x": -2.75091552734375, + "y": -1.406402587890625 + }, + { + "x": 1.390899658203125, + "y": -3.326019287109375 + }, + { + "x": -0.6309814453125, + "y": -1.7486572265625 + }, + { + "x": 3.781158447265625, + "y": 0.279998779296875 + }, + { + "x": 0.914825439453125, + "y": -3.10552978515625 + }, + { + "x": 3.7440185546875, + "y": -0.19415283203125 + }, + { + "x": -3.435394287109375, + "y": -4.132659912109375 + }, + { + "x": 2.04376220703125, + "y": -1.63238525390625 + }, + { + "x": -6.0943603515625, + "y": -1.167022705078125 + }, + { + "x": -1.704254150390625, + "y": 3.215545654296875 + }, + { + "x": 4.3250732421875, + "y": 3.56292724609375 + }, + { + "x": 5.023193359375, + "y": -2.50335693359375 + }, + { + "x": 2.23992919921875, + "y": 0.5933837890625 + }, + { + "x": 0.13946533203125, + "y": 3.263336181640625 + }, + { + "x": -0.51580810546875, + "y": -0.05413818359375 + }, + { + "x": -2.9319305419921875, + "y": 1.09515380859375 + }, + { + "x": -4.0784912109375, + "y": 2.1651611328125 + }, + { + "x": -0.474151611328125, + "y": 3.12396240234375 + }, + { + "x": 2.079559326171875, + "y": 2.341522216796875 + }, + { + "x": 2.844207763671875, + "y": 2.588836669921875 + }, + { + "x": 0.755950927734375, + "y": 1.942626953125 + }, + { + "x": -2.91070556640625, + "y": 6.66912841796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.195815739078695, + "y": -0.11465563147036999, + "z": 0.4532815753008303 + }, + "rotation": { + "quaternion": { + "W": 0.9982725238861961, + "X": 0.019648834561233057, + "Y": 0.030915557423708065, + "Z": 0.045936038830647695 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img5.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img5.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 152.70809936523438, + "y": 84.6628646850586 + }, + { + "x": 204.64329528808594, + "y": 84.5578842163086 + }, + { + "x": 260.4054260253906, + "y": 86.51592254638672 + }, + { + "x": 322.05438232421875, + "y": 85.4774398803711 + }, + { + "x": 384.64434814453125, + "y": 83.45266723632812 + }, + { + "x": 446.23297119140625, + "y": 92.5630874633789 + }, + { + "x": 510.03497314453125, + "y": 90.3306655883789 + }, + { + "x": 144.66476440429688, + "y": 143.45449829101562 + }, + { + "x": 200.46011352539062, + "y": 144.66688537597656 + }, + { + "x": 260.3511962890625, + "y": 146.52133178710938 + }, + { + "x": 314.4735412597656, + "y": 147.63467407226562 + }, + { + "x": 377.7734069824219, + "y": 151.4213409423828 + }, + { + "x": 438.68914794921875, + "y": 150.4995880126953 + }, + { + "x": 503.0653076171875, + "y": 156.37962341308594 + }, + { + "x": 142.2562713623047, + "y": 205.48829650878906 + }, + { + "x": 197.0734405517578, + "y": 206.4681396484375 + }, + { + "x": 250.79270935058594, + "y": 209.24794006347656 + }, + { + "x": 310.1362609863281, + "y": 206.5994873046875 + }, + { + "x": 373.4859313964844, + "y": 208.83447265625 + }, + { + "x": 436.2078552246094, + "y": 216.07667541503906 + }, + { + "x": 495.673095703125, + "y": 217.64352416992188 + }, + { + "x": 140.38894653320312, + "y": 266.423828125 + }, + { + "x": 192.421142578125, + "y": 268.3380126953125 + }, + { + "x": 250.1830291748047, + "y": 268.4150695800781 + }, + { + "x": 308.2369079589844, + "y": 271.08984375 + }, + { + "x": 368.7599792480469, + "y": 275.5899353027344 + }, + { + "x": 428.530029296875, + "y": 278.8341369628906 + }, + { + "x": 493.5862731933594, + "y": 281.14208984375 + }, + { + "x": 135.4167938232422, + "y": 327.2922668457031 + }, + { + "x": 194.14596557617188, + "y": 328.5068664550781 + }, + { + "x": 247.44488525390625, + "y": 329.4116516113281 + }, + { + "x": 308.0621337890625, + "y": 335.32232666015625 + }, + { + "x": 364.70867919921875, + "y": 335.6708068847656 + }, + { + "x": 431.6590881347656, + "y": 343.0692443847656 + }, + { + "x": 486.3165588378906, + "y": 343.5347900390625 + }, + { + "x": 140.3755645751953, + "y": 385.8153991699219 + }, + { + "x": 192.5440673828125, + "y": 384.6365966796875 + }, + { + "x": 244.39430236816406, + "y": 387.6792907714844 + }, + { + "x": 301.4195251464844, + "y": 397.3724670410156 + }, + { + "x": 363.0326232910156, + "y": 396.6297607421875 + }, + { + "x": 424.6771545410156, + "y": 398.08740234375 + }, + { + "x": 485.88238525390625, + "y": 404.2273864746094 + }, + { + "x": 135.26707458496094, + "y": 444.29443359375 + }, + { + "x": 193.28912353515625, + "y": 446.4920959472656 + }, + { + "x": 247.12469482421875, + "y": 448.8442077636719 + }, + { + "x": 302.0328674316406, + "y": 452.7422180175781 + }, + { + "x": 361.0079650878906, + "y": 456.0169677734375 + }, + { + "x": 422.78045654296875, + "y": 461.5685729980469 + }, + { + "x": 485.36383056640625, + "y": 459.7727355957031 + } + ], + "reprojectionErrors": [ + { + "x": -4.998992919921875, + "y": -2.6787490844726562 + }, + { + "x": 0.5201263427734375, + "y": -0.8590850830078125 + }, + { + "x": 2.715667724609375, + "y": -1.118743896484375 + }, + { + "x": -0.443634033203125, + "y": 1.6021881103515625 + }, + { + "x": -3.9822998046875, + "y": 5.293830871582031 + }, + { + "x": -5.927276611328125, + "y": -2.1649398803710938 + }, + { + "x": -9.4615478515625, + "y": 1.7042694091796875 + }, + { + "x": 0.116912841796875, + "y": -0.923370361328125 + }, + { + "x": 1.7469940185546875, + "y": -0.12384033203125 + }, + { + "x": -0.216094970703125, + "y": 0.027618408203125 + }, + { + "x": 4.120758056640625, + "y": 0.9147796630859375 + }, + { + "x": -0.15911865234375, + "y": -0.876129150390625 + }, + { + "x": -1.46337890625, + "y": 2.0372772216796875 + }, + { + "x": -5.604827880859375, + "y": -1.854522705078125 + }, + { + "x": -0.3545989990234375, + "y": -2.429443359375 + }, + { + "x": 2.2209930419921875, + "y": -1.1005401611328125 + }, + { + "x": 6.3962249755859375, + "y": -1.567352294921875 + }, + { + "x": 5.47747802734375, + "y": 3.3992462158203125 + }, + { + "x": 1.112518310546875, + "y": 3.4884490966796875 + }, + { + "x": -2.034149169921875, + "y": -1.4225311279296875 + }, + { + "x": -1.301910400390625, + "y": -0.6501617431640625 + }, + { + "x": -1.319305419921875, + "y": -2.869171142578125 + }, + { + "x": 4.0048370361328125, + "y": -2.178314208984375 + }, + { + "x": 4.10009765625, + "y": 0.364166259765625 + }, + { + "x": 4.432769775390625, + "y": 0.3245849609375 + }, + { + "x": 2.855133056640625, + "y": -1.5234375 + }, + { + "x": 2.62005615234375, + "y": -2.09747314453125 + }, + { + "x": -2.28009033203125, + "y": -1.715850830078125 + }, + { + "x": 0.86932373046875, + "y": -3.286346435546875 + }, + { + "x": -0.5436859130859375, + "y": -1.600250244140625 + }, + { + "x": 3.9734039306640625, + "y": 0.42034912109375 + }, + { + "x": 1.700531005859375, + "y": -2.53875732421875 + }, + { + "x": 3.956207275390625, + "y": 0.09197998046875 + }, + { + "x": -3.503570556640625, + "y": -4.298095703125 + }, + { + "x": 1.9495849609375, + "y": -1.7244873046875 + }, + { + "x": -6.823944091796875, + "y": -1.415313720703125 + }, + { + "x": -1.7201995849609375, + "y": 2.95904541015625 + }, + { + "x": 4.20062255859375, + "y": 3.146820068359375 + }, + { + "x": 5.4737548828125, + "y": -3.279266357421875 + }, + { + "x": 2.7156982421875, + "y": 0.7689208984375 + }, + { + "x": 0.513458251953125, + "y": 2.656982421875 + }, + { + "x": -0.6307373046875, + "y": -0.095184326171875 + }, + { + "x": -4.4004364013671875, + "y": 0.43017578125 + }, + { + "x": -5.1978607177734375, + "y": 1.7220458984375 + }, + { + "x": -1.3110809326171875, + "y": 2.904541015625 + }, + { + "x": 2.029205322265625, + "y": 2.58819580078125 + }, + { + "x": 1.85809326171875, + "y": 2.9442138671875 + }, + { + "x": -0.52447509765625, + "y": 1.0745849609375 + }, + { + "x": -3.10052490234375, + "y": 6.605804443359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.23232306299685532, + "y": -0.11918357662350376, + "z": 0.45593562414064204 + }, + "rotation": { + "quaternion": { + "W": 0.9985532727806854, + "X": 0.002933475129931282, + "Y": 0.047262661811534074, + "Z": 0.02547541837011997 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img6.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img6.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 742.130615234375, + "y": 125.2789077758789 + }, + { + "x": 815.4607543945312, + "y": 131.26783752441406 + }, + { + "x": 887.3759765625, + "y": 139.2281951904297 + }, + { + "x": 961.8363647460938, + "y": 144.65692138671875 + }, + { + "x": 1029.7862548828125, + "y": 147.5272979736328 + }, + { + "x": 1092.772705078125, + "y": 162.4571075439453 + }, + { + "x": 1152.50390625, + "y": 164.73989868164062 + }, + { + "x": 735.6829223632812, + "y": 200.35801696777344 + }, + { + "x": 811.6522827148438, + "y": 207.43167114257812 + }, + { + "x": 886.9751586914062, + "y": 211.2837677001953 + }, + { + "x": 956.3602294921875, + "y": 216.71949768066406 + }, + { + "x": 1023.8499145507812, + "y": 223.2981719970703 + }, + { + "x": 1087.310546875, + "y": 227.57962036132812 + }, + { + "x": 1147.2430419921875, + "y": 236.9182586669922 + }, + { + "x": 733.40185546875, + "y": 277.4924621582031 + }, + { + "x": 808.33203125, + "y": 279.8296813964844 + }, + { + "x": 879.50048828125, + "y": 287.78472900390625 + }, + { + "x": 949.8624877929688, + "y": 286.3399658203125 + }, + { + "x": 1021.05224609375, + "y": 289.8646545410156 + }, + { + "x": 1083.187255859375, + "y": 300.5091857910156 + }, + { + "x": 1139.5528564453125, + "y": 303.4252014160156 + }, + { + "x": 731.5806274414062, + "y": 353.5829162597656 + }, + { + "x": 802.2282104492188, + "y": 357.09381103515625 + }, + { + "x": 877.6555786132812, + "y": 358.7809753417969 + }, + { + "x": 944.5634155273438, + "y": 362.59698486328125 + }, + { + "x": 1011.9517822265625, + "y": 366.1554260253906 + }, + { + "x": 1072.9364013671875, + "y": 369.81024169921875 + }, + { + "x": 1132.3275146484375, + "y": 371.21734619140625 + }, + { + "x": 723.5999145507812, + "y": 425.7239074707031 + }, + { + "x": 802.0220947265625, + "y": 428.5943298339844 + }, + { + "x": 869.3946533203125, + "y": 430.0035400390625 + }, + { + "x": 939.83544921875, + "y": 432.2344970703125 + }, + { + "x": 1003.8758544921875, + "y": 433.2568359375 + }, + { + "x": 1068.5777587890625, + "y": 436.66015625 + }, + { + "x": 1121.3427734375, + "y": 437.7286071777344 + }, + { + "x": 724.0615234375, + "y": 496.1546936035156 + }, + { + "x": 794.6845703125, + "y": 494.7284240722656 + }, + { + "x": 861.3468017578125, + "y": 494.33135986328125 + }, + { + "x": 928.5831909179688, + "y": 501.38641357421875 + }, + { + "x": 997.423828125, + "y": 500.190185546875 + }, + { + "x": 1056.5286865234375, + "y": 498.77935791015625 + }, + { + "x": 1113.8521728515625, + "y": 499.9400634765625 + }, + { + "x": 715.941162109375, + "y": 560.1107788085938 + }, + { + "x": 787.0817260742188, + "y": 560.7171020507812 + }, + { + "x": 857.470458984375, + "y": 561.7203979492188 + }, + { + "x": 919.986083984375, + "y": 561.4824829101562 + }, + { + "x": 984.9523315429688, + "y": 562.6021118164062 + }, + { + "x": 1045.629638671875, + "y": 560.6177978515625 + }, + { + "x": 1106.3133544921875, + "y": 557.551025390625 + } + ], + "reprojectionErrors": [ + { + "x": 6.69049072265625, + "y": 2.71270751953125 + }, + { + "x": 5.645263671875, + "y": 2.3737030029296875 + }, + { + "x": 4.32257080078125, + "y": -0.0810699462890625 + }, + { + "x": -1.14825439453125, + "y": -0.1411285400390625 + }, + { + "x": -1.6273193359375, + "y": 2.2272186279296875 + }, + { + "x": 1.4171142578125, + "y": -7.5872802734375 + }, + { + "x": 6.3511962890625, + "y": -4.8720245361328125 + }, + { + "x": 8.00146484375, + "y": 3.8632354736328125 + }, + { + "x": 3.68505859375, + "y": 1.4625091552734375 + }, + { + "x": -1.64697265625, + "y": 2.174163818359375 + }, + { + "x": -2.615966796875, + "y": 1.1987457275390625 + }, + { + "x": -3.18231201171875, + "y": -1.0177001953125 + }, + { + "x": -1.1351318359375, + "y": -1.0299224853515625 + }, + { + "x": 3.0972900390625, + "y": -6.187591552734375 + }, + { + "x": 5.22613525390625, + "y": 1.483673095703125 + }, + { + "x": 1.3221435546875, + "y": 2.87835693359375 + }, + { + "x": -0.4525146484375, + "y": -1.4205322265625 + }, + { + "x": -2.96783447265625, + "y": 3.608856201171875 + }, + { + "x": -7.7779541015625, + "y": 3.60107421875 + }, + { + "x": -4.9249267578125, + "y": -3.590576171875 + }, + { + "x": 2.376953125, + "y": -3.114288330078125 + }, + { + "x": 2.07025146484375, + "y": -1.302642822265625 + }, + { + "x": 1.8272705078125, + "y": -1.98779296875 + }, + { + "x": -4.79864501953125, + "y": -0.893096923828125 + }, + { + "x": -4.425048828125, + "y": -1.968505859375 + }, + { + "x": -5.97369384765625, + "y": -2.825103759765625 + }, + { + "x": -2.4866943359375, + "y": -3.814453125 + }, + { + "x": 1.295166015625, + "y": -2.59027099609375 + }, + { + "x": 5.1519775390625, + "y": -1.56646728515625 + }, + { + "x": -3.48187255859375, + "y": -2.48345947265625 + }, + { + "x": -2.64068603515625, + "y": -1.952911376953125 + }, + { + "x": -6.36102294921875, + "y": -2.2564697265625 + }, + { + "x": -5.09783935546875, + "y": -1.36260986328125 + }, + { + "x": -5.841064453125, + "y": -2.85980224609375 + }, + { + "x": 4.075439453125, + "y": -2.0311279296875 + }, + { + "x": -0.1314697265625, + "y": -1.5234375 + }, + { + "x": -1.5772705078125, + "y": 1.016693115234375 + }, + { + "x": -0.608642578125, + "y": 2.542755126953125 + }, + { + "x": -1.68133544921875, + "y": -3.36822509765625 + }, + { + "x": -5.750732421875, + "y": -1.012908935546875 + }, + { + "x": -1.4066162109375, + "y": 1.571990966796875 + }, + { + "x": 3.463134765625, + "y": 1.600341796875 + }, + { + "x": 3.2431640625, + "y": 3.61419677734375 + }, + { + "x": 0.67401123046875, + "y": 3.31402587890625 + }, + { + "x": -2.662109375, + "y": 2.6593017578125 + }, + { + "x": 0.43353271484375, + "y": 3.28692626953125 + }, + { + "x": -0.2900390625, + "y": 2.59698486328125 + }, + { + "x": 1.9755859375, + "y": 5.04986572265625 + }, + { + "x": 2.999755859375, + "y": 8.62298583984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.01715712162605176, + "y": -0.08008804178636976, + "z": 0.3655510779334386 + }, + "rotation": { + "quaternion": { + "W": 0.9932576569439098, + "X": 0.07512502685907149, + "Y": -0.08456919383404869, + "Z": 0.025367473582866177 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img7.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img7.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 773.8059692382812, + "y": 179.1060028076172 + }, + { + "x": 840.5888061523438, + "y": 184.00387573242188 + }, + { + "x": 905.1111450195312, + "y": 190.88616943359375 + }, + { + "x": 973.7256469726562, + "y": 195.0118865966797 + }, + { + "x": 1034.7005615234375, + "y": 195.45523071289062 + }, + { + "x": 1091.334716796875, + "y": 207.5864715576172 + }, + { + "x": 1146.21240234375, + "y": 208.18067932128906 + }, + { + "x": 767.8707885742188, + "y": 247.62887573242188 + }, + { + "x": 836.7764892578125, + "y": 254.0154571533203 + }, + { + "x": 903.7404174804688, + "y": 255.35191345214844 + }, + { + "x": 970.555908203125, + "y": 257.44384765625 + }, + { + "x": 1028.5162353515625, + "y": 265.0954895019531 + }, + { + "x": 1085.1903076171875, + "y": 267.75323486328125 + }, + { + "x": 1139.9932861328125, + "y": 274.41845703125 + }, + { + "x": 765.9375610351562, + "y": 318.2815856933594 + }, + { + "x": 833.0264892578125, + "y": 318.8255310058594 + }, + { + "x": 897.5261840820312, + "y": 326.0351257324219 + }, + { + "x": 961.562744140625, + "y": 323.84283447265625 + }, + { + "x": 1025.3814697265625, + "y": 325.2774353027344 + }, + { + "x": 1077.865966796875, + "y": 329.5413513183594 + }, + { + "x": 1132.7813720703125, + "y": 334.4411315917969 + }, + { + "x": 764.3214111328125, + "y": 387.1081237792969 + }, + { + "x": 827.591064453125, + "y": 389.6218566894531 + }, + { + "x": 894.2368774414062, + "y": 387.6347961425781 + }, + { + "x": 957.7330322265625, + "y": 390.8763427734375 + }, + { + "x": 1016.8363647460938, + "y": 394.5295104980469 + }, + { + "x": 1071.0677490234375, + "y": 396.6778564453125 + }, + { + "x": 1126.2890625, + "y": 397.2904052734375 + }, + { + "x": 756.3106079101562, + "y": 452.3414611816406 + }, + { + "x": 826.726806640625, + "y": 453.0718688964844 + }, + { + "x": 887.4723510742188, + "y": 454.0812072753906 + }, + { + "x": 952.4352416992188, + "y": 455.787109375 + }, + { + "x": 1009.0275268554688, + "y": 454.3066711425781 + }, + { + "x": 1067.1705322265625, + "y": 456.20184326171875 + }, + { + "x": 1115.6875, + "y": 455.7638854980469 + }, + { + "x": 756.5097045898438, + "y": 514.9688720703125 + }, + { + "x": 819.713623046875, + "y": 513.510498046875 + }, + { + "x": 879.8927612304688, + "y": 511.0302429199219 + }, + { + "x": 941.7183227539062, + "y": 515.4555053710938 + }, + { + "x": 1002.3467407226562, + "y": 514.3182373046875 + }, + { + "x": 1055.7381591796875, + "y": 512.6779174804688 + }, + { + "x": 1108.133544921875, + "y": 512.4925537109375 + }, + { + "x": 748.92333984375, + "y": 572.9854736328125 + }, + { + "x": 813.270751953125, + "y": 572.2424926757812 + }, + { + "x": 875.6712036132812, + "y": 572.9825439453125 + }, + { + "x": 934.1241455078125, + "y": 571.8896484375 + }, + { + "x": 991.688720703125, + "y": 570.4599609375 + }, + { + "x": 1045.4522705078125, + "y": 566.923583984375 + }, + { + "x": 1101.5010986328125, + "y": 563.702392578125 + } + ], + "reprojectionErrors": [ + { + "x": 5.84185791015625, + "y": 3.546478271484375 + }, + { + "x": 4.5550537109375, + "y": 2.515289306640625 + }, + { + "x": 4.01763916015625, + "y": -0.588714599609375 + }, + { + "x": -2.04571533203125, + "y": -1.020050048828125 + }, + { + "x": -1.83056640625, + "y": 2.1513824462890625 + }, + { + "x": 1.4324951171875, + "y": -6.4406890869140625 + }, + { + "x": 5.2237548828125, + "y": -3.5675506591796875 + }, + { + "x": 6.9593505859375, + "y": 4.17169189453125 + }, + { + "x": 2.90814208984375, + "y": 0.783966064453125 + }, + { + "x": -0.6820068359375, + "y": 2.3879547119140625 + }, + { + "x": -5.529296875, + "y": 3.181182861328125 + }, + { + "x": -2.856201171875, + "y": -1.63763427734375 + }, + { + "x": -0.1650390625, + "y": -1.512115478515625 + }, + { + "x": 3.191650390625, + "y": -5.441009521484375 + }, + { + "x": 4.15728759765625, + "y": 1.177001953125 + }, + { + "x": 1.2891845703125, + "y": 2.79986572265625 + }, + { + "x": -0.44085693359375, + "y": -2.272979736328125 + }, + { + "x": -3.085693359375, + "y": 2.02783203125 + }, + { + "x": -6.82177734375, + "y": 2.67529296875 + }, + { + "x": -0.4677734375, + "y": 0.468536376953125 + }, + { + "x": 2.272216796875, + "y": -2.39739990234375 + }, + { + "x": 1.1190185546875, + "y": -1.449188232421875 + }, + { + "x": 1.44415283203125, + "y": -2.59368896484375 + }, + { + "x": -3.029052734375, + "y": 0.75933837890625 + }, + { + "x": -5.70355224609375, + "y": -1.11883544921875 + }, + { + "x": -5.2691650390625, + "y": -3.41070556640625 + }, + { + "x": -1.1834716796875, + "y": -4.199249267578125 + }, + { + "x": 0.751220703125, + "y": -3.45294189453125 + }, + { + "x": 4.55474853515625, + "y": -1.90814208984375 + }, + { + "x": -2.88507080078125, + "y": -2.03369140625 + }, + { + "x": -2.04815673828125, + "y": -2.4161376953125 + }, + { + "x": -6.75311279296875, + "y": -3.47357177734375 + }, + { + "x": -4.3468017578125, + "y": -1.323577880859375 + }, + { + "x": -4.6888427734375, + "y": -2.528533935546875 + }, + { + "x": 3.45556640625, + "y": -1.380126953125 + }, + { + "x": -0.1416015625, + "y": -1.1561279296875 + }, + { + "x": -0.98004150390625, + "y": 0.1746826171875 + }, + { + "x": -0.15997314453125, + "y": 2.573272705078125 + }, + { + "x": -2.28509521484375, + "y": -1.88916015625 + }, + { + "x": -4.4482421875, + "y": -0.74609375 + }, + { + "x": -0.549560546875, + "y": 0.94158935546875 + }, + { + "x": 3.2266845703125, + "y": 1.21466064453125 + }, + { + "x": 3.02386474609375, + "y": 2.84197998046875 + }, + { + "x": 0.4384765625, + "y": 2.7557373046875 + }, + { + "x": -1.53924560546875, + "y": 1.25494384765625 + }, + { + "x": -0.843017578125, + "y": 1.6531982421875 + }, + { + "x": -0.469970703125, + "y": 2.45184326171875 + }, + { + "x": 2.5509033203125, + "y": 5.4185791015625 + }, + { + "x": 2.188720703125, + "y": 8.1295166015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.030186974444323233, + "y": -0.06752028197899264, + "z": 0.3999694030927489 + }, + "rotation": { + "quaternion": { + "W": 0.9914024094093687, + "X": 0.09053752165941854, + "Y": -0.0920598087111512, + "Z": 0.021194608020320114 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img8.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img8.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 737.4358520507812, + "y": 173.3429412841797 + }, + { + "x": 809.8201904296875, + "y": 177.05972290039062 + }, + { + "x": 881.8469848632812, + "y": 182.79226684570312 + }, + { + "x": 955.9002685546875, + "y": 185.40618896484375 + }, + { + "x": 1023.7321166992188, + "y": 186.4801025390625 + }, + { + "x": 1087.47412109375, + "y": 198.40948486328125 + }, + { + "x": 1147.3992919921875, + "y": 197.74435424804688 + }, + { + "x": 731.3284301757812, + "y": 246.70570373535156 + }, + { + "x": 807.5966186523438, + "y": 252.70335388183594 + }, + { + "x": 882.2166748046875, + "y": 254.17169189453125 + }, + { + "x": 951.5049438476562, + "y": 256.9538879394531 + }, + { + "x": 1017.6800537109375, + "y": 260.1094665527344 + }, + { + "x": 1080.8970947265625, + "y": 263.5018005371094 + }, + { + "x": 1141.23876953125, + "y": 269.32916259765625 + }, + { + "x": 731.7456665039062, + "y": 323.42626953125 + }, + { + "x": 806.2174072265625, + "y": 325.2408752441406 + }, + { + "x": 875.66943359375, + "y": 329.2535095214844 + }, + { + "x": 944.80224609375, + "y": 325.1951904296875 + }, + { + "x": 1015.6687622070312, + "y": 326.7659912109375 + }, + { + "x": 1075.8076171875, + "y": 332.61907958984375 + }, + { + "x": 1133.8265380859375, + "y": 334.9330139160156 + }, + { + "x": 731.5794067382812, + "y": 397.09259033203125 + }, + { + "x": 800.70703125, + "y": 398.43292236328125 + }, + { + "x": 873.7344970703125, + "y": 396.6729431152344 + }, + { + "x": 940.8602905273438, + "y": 399.38116455078125 + }, + { + "x": 1007.2235717773438, + "y": 401.148681640625 + }, + { + "x": 1067.1512451171875, + "y": 402.5802001953125 + }, + { + "x": 1126.7352294921875, + "y": 401.4994201660156 + }, + { + "x": 724.746337890625, + "y": 466.4051818847656 + }, + { + "x": 801.4932250976562, + "y": 466.7168273925781 + }, + { + "x": 867.6819458007812, + "y": 466.27838134765625 + }, + { + "x": 936.6746826171875, + "y": 466.4459533691406 + }, + { + "x": 1000.1792602539062, + "y": 464.7867431640625 + }, + { + "x": 1064.369873046875, + "y": 468.3993835449219 + }, + { + "x": 1114.31640625, + "y": 466.2229309082031 + }, + { + "x": 725.8659057617188, + "y": 530.8401489257812 + }, + { + "x": 796.866943359375, + "y": 528.3401489257812 + }, + { + "x": 859.9517211914062, + "y": 527.11669921875 + }, + { + "x": 925.50341796875, + "y": 533.666015625 + }, + { + "x": 993.4419555664062, + "y": 529.6568603515625 + }, + { + "x": 1052.15185546875, + "y": 525.53271484375 + }, + { + "x": 1108.390869140625, + "y": 525.5416870117188 + }, + { + "x": 722.5267333984375, + "y": 591.5128173828125 + }, + { + "x": 791.6461181640625, + "y": 595.0501708984375 + }, + { + "x": 857.3517456054688, + "y": 591.4993286132812 + }, + { + "x": 917.9102172851562, + "y": 586.5689697265625 + }, + { + "x": 982.4602661132812, + "y": 587.9464111328125 + }, + { + "x": 1039.88623046875, + "y": 582.5474243164062 + }, + { + "x": 1102.4703369140625, + "y": 578.3396606445312 + } + ], + "reprojectionErrors": [ + { + "x": 6.4622802734375, + "y": 4.6265411376953125 + }, + { + "x": 5.8719482421875, + "y": 3.66912841796875 + }, + { + "x": 4.13275146484375, + "y": 0.6430206298828125 + }, + { + "x": -1.06256103515625, + "y": 0.6854095458984375 + }, + { + "x": -1.3934326171875, + "y": 2.2203216552734375 + }, + { + "x": 1.076904296875, + "y": -7.1452178955078125 + }, + { + "x": 6.1400146484375, + "y": -3.9588775634765625 + }, + { + "x": 8.8900146484375, + "y": 5.813323974609375 + }, + { + "x": 3.50091552734375, + "y": 1.73260498046875 + }, + { + "x": -1.70782470703125, + "y": 2.156982421875 + }, + { + "x": -2.97833251953125, + "y": 1.244842529296875 + }, + { + "x": -2.45904541015625, + "y": -0.06195068359375 + }, + { + "x": -0.23876953125, + "y": -1.625335693359375 + }, + { + "x": 3.6622314453125, + "y": -5.642303466796875 + }, + { + "x": 4.8740234375, + "y": 1.6490478515625 + }, + { + "x": 0.38397216796875, + "y": 0.95220947265625 + }, + { + "x": -0.51678466796875, + "y": -1.940032958984375 + }, + { + "x": -2.45684814453125, + "y": 3.241607666015625 + }, + { + "x": -7.42144775390625, + "y": 2.79742431640625 + }, + { + "x": -2.8848876953125, + "y": -1.925384521484375 + }, + { + "x": 2.60546875, + "y": -3.10504150390625 + }, + { + "x": 1.52008056640625, + "y": -1.3929443359375 + }, + { + "x": 1.49383544921875, + "y": -2.373504638671875 + }, + { + "x": -3.82647705078125, + "y": -0.2261962890625 + }, + { + "x": -4.56982421875, + "y": -2.520172119140625 + }, + { + "x": -5.809814453125, + "y": -3.847198486328125 + }, + { + "x": -1.8111572265625, + "y": -4.812591552734375 + }, + { + "x": 1.392822265625, + "y": -3.24053955078125 + }, + { + "x": 4.9093017578125, + "y": -1.95416259765625 + }, + { + "x": -3.599853515625, + "y": -2.624969482421875 + }, + { + "x": -2.9100341796875, + "y": -2.494781494140625 + }, + { + "x": -6.31622314453125, + "y": -2.921356201171875 + }, + { + "x": -5.462646484375, + "y": -1.473480224609375 + }, + { + "x": -6.4635009765625, + "y": -5.251220703125 + }, + { + "x": 5.66845703125, + "y": -3.195037841796875 + }, + { + "x": 0.4200439453125, + "y": 0.546142578125 + }, + { + "x": -3.19073486328125, + "y": 2.0052490234375 + }, + { + "x": -0.21044921875, + "y": 2.260498046875 + }, + { + "x": -0.95733642578125, + "y": -5.18701171875 + }, + { + "x": -5.28973388671875, + "y": -2.00836181640625 + }, + { + "x": -1.533935546875, + "y": 1.35076904296875 + }, + { + "x": 3.6075439453125, + "y": 0.64013671875 + }, + { + "x": 0.46160888671875, + "y": 5.04742431640625 + }, + { + "x": -2.09912109375, + "y": -0.17718505859375 + }, + { + "x": -2.5384521484375, + "y": 1.779296875 + }, + { + "x": 0.93994140625, + "y": 5.20477294921875 + }, + { + "x": -0.74310302734375, + "y": 2.40887451171875 + }, + { + "x": 3.5845947265625, + "y": 6.47283935546875 + }, + { + "x": 1.694091796875, + "y": 9.42620849609375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.015697270510913814, + "y": -0.06412668245195097, + "z": 0.37041571529700656 + }, + "rotation": { + "quaternion": { + "W": 0.991604293513844, + "X": 0.10308060608273871, + "Y": -0.07690788462558489, + "Z": 0.013434694523627309 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img9.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img9.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 807.2278442382812, + "y": 482.6828918457031 + }, + { + "x": 815.0000610351562, + "y": 421.244873046875 + }, + { + "x": 813.795654296875, + "y": 355.8375549316406 + }, + { + "x": 819.8831787109375, + "y": 288.3810119628906 + }, + { + "x": 820.6470947265625, + "y": 219.6458282470703 + }, + { + "x": 821.0091552734375, + "y": 149.24618530273438 + }, + { + "x": 823.7036743164062, + "y": 83.21349334716797 + }, + { + "x": 873.4977416992188, + "y": 481.6387634277344 + }, + { + "x": 877.874267578125, + "y": 418.059814453125 + }, + { + "x": 882.7489624023438, + "y": 355.2947998046875 + }, + { + "x": 882.7405395507812, + "y": 291.3645324707031 + }, + { + "x": 886.9373168945312, + "y": 221.70379638671875 + }, + { + "x": 887.4991455078125, + "y": 155.61929321289062 + }, + { + "x": 888.03759765625, + "y": 87.54981994628906 + }, + { + "x": 932.6810302734375, + "y": 481.89044189453125 + }, + { + "x": 935.663330078125, + "y": 415.1279296875 + }, + { + "x": 942.6561889648438, + "y": 355.9500732421875 + }, + { + "x": 946.7688598632812, + "y": 289.26300048828125 + }, + { + "x": 947.486083984375, + "y": 228.10227966308594 + }, + { + "x": 952.35107421875, + "y": 158.3904571533203 + }, + { + "x": 950.1397705078125, + "y": 95.51123809814453 + }, + { + "x": 991.67041015625, + "y": 480.77691650390625 + }, + { + "x": 995.47705078125, + "y": 422.1357727050781 + }, + { + "x": 1005.283203125, + "y": 359.0804748535156 + }, + { + "x": 1008.3055419921875, + "y": 292.0701904296875 + }, + { + "x": 1007.3322143554688, + "y": 225.63858032226562 + }, + { + "x": 1013.33984375, + "y": 162.2513885498047 + }, + { + "x": 1014.5204467773438, + "y": 100.39151763916016 + }, + { + "x": 1047.63916015625, + "y": 475.5971374511719 + }, + { + "x": 1055.852294921875, + "y": 421.4254455566406 + }, + { + "x": 1061.3306884765625, + "y": 356.55010986328125 + }, + { + "x": 1063.654052734375, + "y": 297.4162902832031 + }, + { + "x": 1070.308837890625, + "y": 227.2967987060547 + }, + { + "x": 1069.697021484375, + "y": 168.6982879638672 + }, + { + "x": 1072.864990234375, + "y": 101.936279296875 + }, + { + "x": 1097.699951171875, + "y": 474.56646728515625 + }, + { + "x": 1107.318115234375, + "y": 415.404541015625 + }, + { + "x": 1116.279296875, + "y": 363.0797424316406 + }, + { + "x": 1116.7275390625, + "y": 299.93084716796875 + }, + { + "x": 1121.0330810546875, + "y": 236.5968475341797 + }, + { + "x": 1120.395751953125, + "y": 174.5373077392578 + }, + { + "x": 1124.7174072265625, + "y": 115.39669036865234 + }, + { + "x": 1154.40087890625, + "y": 469.705322265625 + }, + { + "x": 1157.0780029296875, + "y": 421.7998046875 + }, + { + "x": 1158.662353515625, + "y": 361.3133544921875 + }, + { + "x": 1167.34326171875, + "y": 301.8167724609375 + }, + { + "x": 1168.68701171875, + "y": 239.8472137451172 + }, + { + "x": 1175.24267578125, + "y": 182.12583923339844 + }, + { + "x": 1174.228271484375, + "y": 118.7063217163086 + } + ], + "reprojectionErrors": [ + { + "x": 6.17755126953125, + "y": 0.349884033203125 + }, + { + "x": 1.08038330078125, + "y": -3.211517333984375 + }, + { + "x": 5.02789306640625, + "y": -3.318511962890625 + }, + { + "x": 1.75347900390625, + "y": -1.922576904296875 + }, + { + "x": 3.87457275390625, + "y": 0.1734466552734375 + }, + { + "x": 6.4715576171875, + "y": 3.32196044921875 + }, + { + "x": 6.812255859375, + "y": 1.4571762084960938 + }, + { + "x": 0.9088134765625, + "y": 1.05023193359375 + }, + { + "x": -0.58612060546875, + "y": 0.48480224609375 + }, + { + "x": -2.50274658203125, + "y": -1.39569091796875 + }, + { + "x": 0.542236328125, + "y": -2.64251708984375 + }, + { + "x": -0.53729248046875, + "y": 1.2782135009765625 + }, + { + "x": 2.10107421875, + "y": 1.02740478515625 + }, + { + "x": 4.84808349609375, + "y": 2.132904052734375 + }, + { + "x": 1.1116943359375, + "y": 0.449066162109375 + }, + { + "x": 1.20562744140625, + "y": 3.90447998046875 + }, + { + "x": -2.62664794921875, + "y": -0.7125244140625 + }, + { + "x": -3.4921875, + "y": 1.66229248046875 + }, + { + "x": -0.8734130859375, + "y": -2.03704833984375 + }, + { + "x": -2.3111572265625, + "y": 2.2354736328125 + }, + { + "x": 3.421142578125, + "y": -0.936187744140625 + }, + { + "x": -0.0567626953125, + "y": 1.2076416015625 + }, + { + "x": -0.60382080078125, + "y": -2.63818359375 + }, + { + "x": -7.05865478515625, + "y": -2.544769287109375 + }, + { + "x": -6.6356201171875, + "y": 0.999969482421875 + }, + { + "x": -2.120361328125, + "y": 3.43280029296875 + }, + { + "x": -4.48712158203125, + "y": 2.25750732421875 + }, + { + "x": -1.925048828125, + "y": -1.0401992797851562 + }, + { + "x": 0.2779541015625, + "y": 6.02734375 + }, + { + "x": -4.5029296875, + "y": -1.48455810546875 + }, + { + "x": -6.450439453125, + "y": 1.2447509765625 + }, + { + "x": -5.141845703125, + "y": -2.257904052734375 + }, + { + "x": -8.06103515625, + "y": 4.7060394287109375 + }, + { + "x": -3.607177734375, + "y": -0.399749755859375 + }, + { + "x": -2.8240966796875, + "y": 2.0787811279296875 + }, + { + "x": 5.04931640625, + "y": 6.693023681640625 + }, + { + "x": -0.9742431640625, + "y": 4.95855712890625 + }, + { + "x": -6.235595703125, + "y": -4.063507080078125 + }, + { + "x": -2.8763427734375, + "y": -2.73907470703125 + }, + { + "x": -3.2640380859375, + "y": -1.7350006103515625 + }, + { + "x": 1.404296875, + "y": -2.539642333984375 + }, + { + "x": 1.229736328125, + "y": -6.827018737792969 + }, + { + "x": 1.7532958984375, + "y": 11.1845703125 + }, + { + "x": 2.82373046875, + "y": -1.034942626953125 + }, + { + "x": 5.0980224609375, + "y": -1.112335205078125 + }, + { + "x": 0.3896484375, + "y": -2.644805908203125 + }, + { + "x": 3.135009765625, + "y": -2.19659423828125 + }, + { + "x": 0.7879638671875, + "y": -6.516845703125 + }, + { + "x": 6.1336669921875, + "y": -5.6879119873046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.045073971011344575, + "y": 0.0453863289063492, + "z": 0.4223386386127117 + }, + "rotation": { + "quaternion": { + "W": 0.7115423545912457, + "X": 0.10667581544473971, + "Y": -0.052684198293512306, + "Z": -0.6924970204066697 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img10.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img10.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 794.6343383789062, + "y": 88.40254974365234 + }, + { + "x": 862.50927734375, + "y": 91.83477783203125 + }, + { + "x": 927.5287475585938, + "y": 97.11074829101562 + }, + { + "x": 995.5068359375, + "y": 101.19094848632812 + }, + { + "x": 1054.7398681640625, + "y": 101.59008026123047 + }, + { + "x": 1111.5341796875, + "y": 113.05220031738281 + }, + { + "x": 1163.6572265625, + "y": 114.37191009521484 + }, + { + "x": 791.7653198242188, + "y": 157.9339141845703 + }, + { + "x": 862.3995361328125, + "y": 162.42396545410156 + }, + { + "x": 929.6892700195312, + "y": 163.1642303466797 + }, + { + "x": 995.4893188476562, + "y": 164.1636199951172 + }, + { + "x": 1053.8203125, + "y": 171.11575317382812 + }, + { + "x": 1108.7508544921875, + "y": 174.0409698486328 + }, + { + "x": 1163.7337646484375, + "y": 180.2062530517578 + }, + { + "x": 793.3553466796875, + "y": 230.75323486328125 + }, + { + "x": 861.4703979492188, + "y": 229.5925750732422 + }, + { + "x": 926.98291015625, + "y": 235.3979949951172 + }, + { + "x": 991.3538818359375, + "y": 232.32138061523438 + }, + { + "x": 1054.324951171875, + "y": 232.65768432617188 + }, + { + "x": 1110.8714599609375, + "y": 241.13543701171875 + }, + { + "x": 1158.80908203125, + "y": 242.0333251953125 + }, + { + "x": 794.6622314453125, + "y": 302.3282470703125 + }, + { + "x": 859.6452026367188, + "y": 303.341552734375 + }, + { + "x": 927.4578247070312, + "y": 300.15869140625 + }, + { + "x": 991.7113647460938, + "y": 300.8357238769531 + }, + { + "x": 1050.3985595703125, + "y": 303.82135009765625 + }, + { + "x": 1104.3350830078125, + "y": 305.2699890136719 + }, + { + "x": 1157.6414794921875, + "y": 304.693115234375 + }, + { + "x": 790.1657104492188, + "y": 371.5854797363281 + }, + { + "x": 861.63916015625, + "y": 370.3980407714844 + }, + { + "x": 924.222900390625, + "y": 369.4148254394531 + }, + { + "x": 988.8240966796875, + "y": 369.42584228515625 + }, + { + "x": 1046.7313232421875, + "y": 366.1950378417969 + }, + { + "x": 1105.1260986328125, + "y": 369.49432373046875 + }, + { + "x": 1150.5875244140625, + "y": 367.08258056640625 + }, + { + "x": 791.7639770507812, + "y": 438.7175598144531 + }, + { + "x": 858.4063720703125, + "y": 433.7022705078125 + }, + { + "x": 918.6366577148438, + "y": 430.2558288574219 + }, + { + "x": 980.9042358398438, + "y": 434.3685302734375 + }, + { + "x": 1043.552490234375, + "y": 431.0396728515625 + }, + { + "x": 1096.8031005859375, + "y": 426.16937255859375 + }, + { + "x": 1147.802734375, + "y": 426.75360107421875 + }, + { + "x": 786.8562622070312, + "y": 502.28656005859375 + }, + { + "x": 853.6672973632812, + "y": 499.1798400878906 + }, + { + "x": 915.9260864257812, + "y": 498.69488525390625 + }, + { + "x": 976.9902954101562, + "y": 494.3882141113281 + }, + { + "x": 1035.192626953125, + "y": 490.3329162597656 + }, + { + "x": 1089.3157958984375, + "y": 486.8011474609375 + }, + { + "x": 1144.330810546875, + "y": 481.16131591796875 + } + ], + "reprojectionErrors": [ + { + "x": 7.0313720703125, + "y": 1.3805923461914062 + }, + { + "x": 4.58197021484375, + "y": 1.4005661010742188 + }, + { + "x": 3.208984375, + "y": -0.5410919189453125 + }, + { + "x": -2.8037109375, + "y": -1.3987274169921875 + }, + { + "x": -1.6610107421875, + "y": 1.318695068359375 + }, + { + "x": 0.4161376953125, + "y": -7.127532958984375 + }, + { + "x": 5.739990234375, + "y": -5.527015686035156 + }, + { + "x": 8.279296875, + "y": 2.8813018798828125 + }, + { + "x": 2.70501708984375, + "y": 0.81536865234375 + }, + { + "x": -1.283447265625, + "y": 2.419708251953125 + }, + { + "x": -5.4444580078125, + "y": 3.6895904541015625 + }, + { + "x": -3.708740234375, + "y": -1.064727783203125 + }, + { + "x": -0.0606689453125, + "y": -1.8599700927734375 + }, + { + "x": 2.1253662109375, + "y": -5.9597320556640625 + }, + { + "x": 5.06085205078125, + "y": 0.245269775390625 + }, + { + "x": 1.6396484375, + "y": 2.8259429931640625 + }, + { + "x": -0.91741943359375, + "y": -1.601776123046875 + }, + { + "x": -3.97650146484375, + "y": 2.812469482421875 + }, + { + "x": -7.190673828125, + "y": 3.7758331298828125 + }, + { + "x": -5.4522705078125, + "y": -3.438262939453125 + }, + { + "x": 3.5003662109375, + "y": -3.106658935546875 + }, + { + "x": 2.11883544921875, + "y": -1.996185302734375 + }, + { + "x": 1.463134765625, + "y": -2.569732666015625 + }, + { + "x": -3.740478515625, + "y": 1.0465087890625 + }, + { + "x": -7.00982666015625, + "y": 0.796966552734375 + }, + { + "x": -6.2506103515625, + "y": -1.76666259765625 + }, + { + "x": -2.1966552734375, + "y": -2.798492431640625 + }, + { + "x": 1.1075439453125, + "y": -1.809600830078125 + }, + { + "x": 4.9739990234375, + "y": -2.77008056640625 + }, + { + "x": -2.53912353515625, + "y": -2.099578857421875 + }, + { + "x": -2.8607177734375, + "y": -1.604827880859375 + }, + { + "x": -6.80609130859375, + "y": -2.0771484375 + }, + { + "x": -5.5780029296875, + "y": 0.71826171875 + }, + { + "x": -6.2774658203125, + "y": -2.99169921875 + }, + { + "x": 4.59130859375, + "y": -0.96697998046875 + }, + { + "x": 1.7286376953125, + "y": -2.269195556640625 + }, + { + "x": -1.3206787109375, + "y": 1.295928955078125 + }, + { + "x": 0.3638916015625, + "y": 3.35430908203125 + }, + { + "x": -1.57666015625, + "y": -2.087371826171875 + }, + { + "x": -5.4012451171875, + "y": -0.031158447265625 + }, + { + "x": -1.25244140625, + "y": 3.62017822265625 + }, + { + "x": 3.797119140625, + "y": 1.86822509765625 + }, + { + "x": 4.98394775390625, + "y": 0.944671630859375 + }, + { + "x": 1.3985595703125, + "y": 1.691162109375 + }, + { + "x": 0.70703125, + "y": -0.089508056640625 + }, + { + "x": -0.35943603515625, + "y": 2.041534423828125 + }, + { + "x": -0.05029296875, + "y": 4.006927490234375 + }, + { + "x": 2.9296875, + "y": 5.530487060546875 + }, + { + "x": 3.68212890625, + "y": 9.24005126953125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.037760248868085634, + "y": -0.10014789828487321, + "z": 0.39392456344683 + }, + "rotation": { + "quaternion": { + "W": 0.992718488507561, + "X": 0.049432414593303345, + "Y": -0.10982528299197616, + "Z": 0.0022014037502796455 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img11.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img11.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 745.835205078125, + "y": 96.9065170288086 + }, + { + "x": 812.6757202148438, + "y": 101.1380386352539 + }, + { + "x": 878.027587890625, + "y": 107.35442352294922 + }, + { + "x": 947.4471435546875, + "y": 110.76549530029297 + }, + { + "x": 1008.6212158203125, + "y": 111.39105987548828 + }, + { + "x": 1067.4622802734375, + "y": 124.05879211425781 + }, + { + "x": 1121.9189453125, + "y": 124.39913940429688 + }, + { + "x": 741.7721557617188, + "y": 165.88279724121094 + }, + { + "x": 812.2186889648438, + "y": 170.58338928222656 + }, + { + "x": 879.6602783203125, + "y": 171.9676513671875 + }, + { + "x": 945.6367797851562, + "y": 175.00730895996094 + }, + { + "x": 1006.3783569335938, + "y": 181.1765899658203 + }, + { + "x": 1062.5618896484375, + "y": 184.80799865722656 + }, + { + "x": 1119.9857177734375, + "y": 191.04954528808594 + }, + { + "x": 742.2901000976562, + "y": 237.5893096923828 + }, + { + "x": 811.6927490234375, + "y": 239.55274963378906 + }, + { + "x": 875.6859130859375, + "y": 244.23040771484375 + }, + { + "x": 940.8955078125, + "y": 241.089599609375 + }, + { + "x": 1006.7392578125, + "y": 240.94578552246094 + }, + { + "x": 1062.9334716796875, + "y": 250.1610870361328 + }, + { + "x": 1114.73583984375, + "y": 252.54249572753906 + }, + { + "x": 741.6923828125, + "y": 308.4085388183594 + }, + { + "x": 807.6519775390625, + "y": 310.2056884765625 + }, + { + "x": 875.0873413085938, + "y": 307.23822021484375 + }, + { + "x": 940.3087768554688, + "y": 310.1189880371094 + }, + { + "x": 1000.7650146484375, + "y": 313.5697937011719 + }, + { + "x": 1057.080810546875, + "y": 315.3122253417969 + }, + { + "x": 1112.3316650390625, + "y": 315.89178466796875 + }, + { + "x": 736.3084106445312, + "y": 377.03155517578125 + }, + { + "x": 809.4330444335938, + "y": 376.8269958496094 + }, + { + "x": 871.6162719726562, + "y": 376.5892639160156 + }, + { + "x": 938.4246215820312, + "y": 378.3303527832031 + }, + { + "x": 996.343017578125, + "y": 375.84625244140625 + }, + { + "x": 1056.1761474609375, + "y": 378.2763671875 + }, + { + "x": 1104.7322998046875, + "y": 377.6847229003906 + }, + { + "x": 738.7784423828125, + "y": 443.23052978515625 + }, + { + "x": 805.1956787109375, + "y": 439.1337585449219 + }, + { + "x": 864.5517578125, + "y": 435.5860290527344 + }, + { + "x": 929.8692626953125, + "y": 440.7291259765625 + }, + { + "x": 993.0690307617188, + "y": 440.080078125 + }, + { + "x": 1047.472900390625, + "y": 436.8651428222656 + }, + { + "x": 1102.71923828125, + "y": 440.09100341796875 + }, + { + "x": 732.7028198242188, + "y": 505.42425537109375 + }, + { + "x": 798.7306518554688, + "y": 502.2374267578125 + }, + { + "x": 864.373779296875, + "y": 502.7402038574219 + }, + { + "x": 925.370361328125, + "y": 501.82049560546875 + }, + { + "x": 984.4660034179688, + "y": 498.49468994140625 + }, + { + "x": 1039.32080078125, + "y": 495.02044677734375 + }, + { + "x": 1097.947998046875, + "y": 490.29833984375 + } + ], + "reprojectionErrors": [ + { + "x": 5.29205322265625, + "y": 1.7689590454101562 + }, + { + "x": 4.63037109375, + "y": 1.2831878662109375 + }, + { + "x": 3.92413330078125, + "y": -1.2944259643554688 + }, + { + "x": -2.30419921875, + "y": -1.168548583984375 + }, + { + "x": -1.66741943359375, + "y": 1.6458587646484375 + }, + { + "x": -0.00830078125, + "y": -7.67431640625 + }, + { + "x": 4.7901611328125, + "y": -4.7552490234375 + }, + { + "x": 7.0498046875, + "y": 3.086669921875 + }, + { + "x": 2.36688232421875, + "y": 1.261199951171875 + }, + { + "x": -0.82464599609375, + "y": 2.6753692626953125 + }, + { + "x": -3.98724365234375, + "y": 2.3611907958984375 + }, + { + "x": -3.2783203125, + "y": -1.15203857421875 + }, + { + "x": 0.69384765625, + "y": -2.1935272216796875 + }, + { + "x": 2.195556640625, + "y": -5.90814208984375 + }, + { + "x": 4.23809814453125, + "y": 0.72821044921875 + }, + { + "x": 0.18426513671875, + "y": 0.7920074462890625 + }, + { + "x": 0.0457763671875, + "y": -1.9058837890625 + }, + { + "x": -2.7271728515625, + "y": 3.16961669921875 + }, + { + "x": -7.480712890625, + "y": 5.205322265625 + }, + { + "x": -3.86376953125, + "y": -2.1587677001953125 + }, + { + "x": 2.929443359375, + "y": -2.7276611328125 + }, + { + "x": 2.553955078125, + "y": -1.6856689453125 + }, + { + "x": 1.52880859375, + "y": -2.28106689453125 + }, + { + "x": -2.4468994140625, + "y": 1.868896484375 + }, + { + "x": -5.6087646484375, + "y": 0.152496337890625 + }, + { + "x": -5.3350830078125, + "y": -2.15106201171875 + }, + { + "x": -2.184326171875, + "y": -2.7623291015625 + }, + { + "x": 0.830322265625, + "y": -2.225921630859375 + }, + { + "x": 5.66815185546875, + "y": -2.842529296875 + }, + { + "x": -2.935791015625, + "y": -2.23956298828125 + }, + { + "x": -2.05401611328125, + "y": -1.595489501953125 + }, + { + "x": -7.1795654296875, + "y": -2.922393798828125 + }, + { + "x": -4.72821044921875, + "y": -0.016387939453125 + }, + { + "x": -5.439453125, + "y": -2.0169677734375 + }, + { + "x": 3.9398193359375, + "y": -0.988250732421875 + }, + { + "x": 0.9407958984375, + "y": -2.5106201171875 + }, + { + "x": -1.368896484375, + "y": 1.2030029296875 + }, + { + "x": 1.94586181640625, + "y": 4.401763916015625 + }, + { + "x": -2.06536865234375, + "y": -1.05743408203125 + }, + { + "x": -5.25537109375, + "y": -0.69281005859375 + }, + { + "x": -0.8818359375, + "y": 2.26824951171875 + }, + { + "x": 1.47705078125, + "y": -1.1820068359375 + }, + { + "x": 4.771728515625, + "y": 0.89544677734375 + }, + { + "x": 2.43902587890625, + "y": 2.939056396484375 + }, + { + "x": -0.92694091796875, + "y": 1.352508544921875 + }, + { + "x": -0.9932861328125, + "y": 1.245452880859375 + }, + { + "x": -0.4388427734375, + "y": 3.59930419921875 + }, + { + "x": 3.1392822265625, + "y": 6.154205322265625 + }, + { + "x": 1.787353515625, + "y": 10.007659912109375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.01953338752553309, + "y": -0.09794670700694719, + "z": 0.39807265202559844 + }, + "rotation": { + "quaternion": { + "W": 0.9940229090042155, + "X": 0.0564977202955054, + "Y": -0.09294478149926838, + "Z": 0.009366513132490605 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img12.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img12.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 652.8975830078125, + "y": 75.37478637695312 + }, + { + "x": 722.18798828125, + "y": 76.64767456054688 + }, + { + "x": 789.4120483398438, + "y": 81.50244140625 + }, + { + "x": 861.9544677734375, + "y": 83.4075927734375 + }, + { + "x": 927.543701171875, + "y": 82.52932739257812 + }, + { + "x": 990.4971313476562, + "y": 95.18606567382812 + }, + { + "x": 1050.310546875, + "y": 93.46436309814453 + }, + { + "x": 651.33642578125, + "y": 142.5399169921875 + }, + { + "x": 722.8019409179688, + "y": 145.52317810058594 + }, + { + "x": 793.5697021484375, + "y": 147.14805603027344 + }, + { + "x": 860.058837890625, + "y": 148.82858276367188 + }, + { + "x": 924.3971557617188, + "y": 151.59022521972656 + }, + { + "x": 987.3883666992188, + "y": 155.65013122558594 + }, + { + "x": 1048.474853515625, + "y": 162.40975952148438 + }, + { + "x": 652.5836791992188, + "y": 213.98374938964844 + }, + { + "x": 724.2835693359375, + "y": 215.6510772705078 + }, + { + "x": 788.9295654296875, + "y": 219.0380096435547 + }, + { + "x": 857.3303833007812, + "y": 215.1053924560547 + }, + { + "x": 925.7120971679688, + "y": 216.27499389648438 + }, + { + "x": 987.9390258789062, + "y": 223.20677185058594 + }, + { + "x": 1044.9462890625, + "y": 225.12554931640625 + }, + { + "x": 653.7572631835938, + "y": 284.4215087890625 + }, + { + "x": 720.8630981445312, + "y": 285.3088684082031 + }, + { + "x": 791.1729125976562, + "y": 283.44219970703125 + }, + { + "x": 857.5933227539062, + "y": 285.2913513183594 + }, + { + "x": 921.70263671875, + "y": 287.23736572265625 + }, + { + "x": 982.1495361328125, + "y": 291.8613586425781 + }, + { + "x": 1043.7886962890625, + "y": 291.2320861816406 + }, + { + "x": 650.5300903320312, + "y": 352.50408935546875 + }, + { + "x": 724.2785034179688, + "y": 352.6238708496094 + }, + { + "x": 788.7249755859375, + "y": 351.415283203125 + }, + { + "x": 858.3534545898438, + "y": 354.716796875 + }, + { + "x": 917.72314453125, + "y": 353.2265625 + }, + { + "x": 983.7673950195312, + "y": 355.4776306152344 + }, + { + "x": 1035.7197265625, + "y": 355.2860107421875 + }, + { + "x": 655.0037841796875, + "y": 421.4425354003906 + }, + { + "x": 721.7890625, + "y": 415.021728515625 + }, + { + "x": 784.650146484375, + "y": 414.2370300292969 + }, + { + "x": 849.8914184570312, + "y": 420.37774658203125 + }, + { + "x": 915.4688720703125, + "y": 415.6947326660156 + }, + { + "x": 976.099853515625, + "y": 415.4977722167969 + }, + { + "x": 1035.07958984375, + "y": 417.6921691894531 + }, + { + "x": 649.3607177734375, + "y": 482.8036804199219 + }, + { + "x": 719.1389770507812, + "y": 481.5779724121094 + }, + { + "x": 784.9086303710938, + "y": 480.564208984375 + }, + { + "x": 848.6276245117188, + "y": 481.1697692871094 + }, + { + "x": 908.8096313476562, + "y": 479.3932800292969 + }, + { + "x": 970.4996337890625, + "y": 475.8896484375 + }, + { + "x": 1032.5601806640625, + "y": 472.1636657714844 + } + ], + "reprojectionErrors": [ + { + "x": 5.703369140625, + "y": -1.0657196044921875 + }, + { + "x": 4.726318359375, + "y": 0.257537841796875 + }, + { + "x": 4.71697998046875, + "y": -2.0657577514648438 + }, + { + "x": -1.6561279296875, + "y": -1.5015487670898438 + }, + { + "x": -2.07073974609375, + "y": 1.7863998413085938 + }, + { + "x": -0.7958984375, + "y": -8.51800537109375 + }, + { + "x": 2.71875, + "y": -4.499122619628906 + }, + { + "x": 6.3970947265625, + "y": 2.478118896484375 + }, + { + "x": 2.79217529296875, + "y": 1.48809814453125 + }, + { + "x": -1.1990966796875, + "y": 1.8112945556640625 + }, + { + "x": -1.9434814453125, + "y": 2.0355377197265625 + }, + { + "x": -1.51885986328125, + "y": 1.1371307373046875 + }, + { + "x": -0.68145751953125, + "y": -1.0994110107421875 + }, + { + "x": 1.171875, + "y": -6.0739593505859375 + }, + { + "x": 4.2867431640625, + "y": 0.791839599609375 + }, + { + "x": -0.00457763671875, + "y": 0.530609130859375 + }, + { + "x": 1.6883544921875, + "y": -1.4764862060546875 + }, + { + "x": -1.39166259765625, + "y": 3.8108673095703125 + }, + { + "x": -5.4217529296875, + "y": 3.9720001220703125 + }, + { + "x": -4.21929931640625, + "y": -1.6519622802734375 + }, + { + "x": 1.3251953125, + "y": -2.2848663330078125 + }, + { + "x": 2.25445556640625, + "y": -0.83673095703125 + }, + { + "x": 2.1060791015625, + "y": -0.8895263671875 + }, + { + "x": -2.30157470703125, + "y": 1.803680419921875 + }, + { + "x": -3.82464599609375, + "y": 0.7735595703125 + }, + { + "x": -3.9930419921875, + "y": -0.36041259765625 + }, + { + "x": -1.409423828125, + "y": -4.17889404296875 + }, + { + "x": -0.884521484375, + "y": -2.750244140625 + }, + { + "x": 4.62744140625, + "y": -1.055084228515625 + }, + { + "x": -2.6136474609375, + "y": -0.896484375 + }, + { + "x": -1.593994140625, + "y": 0.60009765625 + }, + { + "x": -6.74774169921875, + "y": -2.403900146484375 + }, + { + "x": -2.586669921875, + "y": -0.606719970703125 + }, + { + "x": -5.998779296875, + "y": -2.541534423828125 + }, + { + "x": 3.8258056640625, + "y": -2.024383544921875 + }, + { + "x": -0.69580078125, + "y": -3.070465087890625 + }, + { + "x": -1.4228515625, + "y": 3.087646484375 + }, + { + "x": 0.74713134765625, + "y": 3.6363525390625 + }, + { + "x": -0.44134521484375, + "y": -2.714385986328125 + }, + { + "x": -2.8974609375, + "y": 1.783905029296875 + }, + { + "x": -1.29400634765625, + "y": 1.820831298828125 + }, + { + "x": 1.1163330078125, + "y": -0.509552001953125 + }, + { + "x": 4.1024169921875, + "y": 1.5543212890625 + }, + { + "x": -0.06561279296875, + "y": 1.9912109375 + }, + { + "x": -1.23828125, + "y": 2.259307861328125 + }, + { + "x": -1.325439453125, + "y": 0.949951171875 + }, + { + "x": 1.2052001953125, + "y": 2.063323974609375 + }, + { + "x": 1.35247802734375, + "y": 4.943328857421875 + }, + { + "x": 0.2958984375, + "y": 8.0841064453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.014516355849972224, + "y": -0.10651471781115132, + "z": 0.39675664410322414 + }, + "rotation": { + "quaternion": { + "W": 0.9964785918034454, + "X": 0.05575795317116782, + "Y": -0.062418546094051536, + "Z": 0.005039031562622841 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img13.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img13.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 619.503173828125, + "y": 64.67201232910156 + }, + { + "x": 689.7569580078125, + "y": 66.56584930419922 + }, + { + "x": 758.8739624023438, + "y": 70.53166961669922 + }, + { + "x": 833.8966674804688, + "y": 72.23514556884766 + }, + { + "x": 901.5516357421875, + "y": 71.03099822998047 + }, + { + "x": 967.6630249023438, + "y": 83.17113494873047 + }, + { + "x": 1030.8450927734375, + "y": 81.3750228881836 + }, + { + "x": 617.3546752929688, + "y": 134.80404663085938 + }, + { + "x": 689.9269409179688, + "y": 136.77415466308594 + }, + { + "x": 763.3238525390625, + "y": 138.1069793701172 + }, + { + "x": 831.7670288085938, + "y": 139.4724578857422 + }, + { + "x": 899.7200927734375, + "y": 142.86570739746094 + }, + { + "x": 961.5489501953125, + "y": 148.41647338867188 + }, + { + "x": 1028.842041015625, + "y": 152.71397399902344 + }, + { + "x": 618.8989868164062, + "y": 206.65823364257812 + }, + { + "x": 691.6385498046875, + "y": 208.39125061035156 + }, + { + "x": 758.6580200195312, + "y": 211.30441284179688 + }, + { + "x": 829.116943359375, + "y": 207.14385986328125 + }, + { + "x": 900.7680053710938, + "y": 207.70445251464844 + }, + { + "x": 961.8956909179688, + "y": 212.56729125976562 + }, + { + "x": 1025.544189453125, + "y": 217.27476501464844 + }, + { + "x": 620.3119506835938, + "y": 279.2712097167969 + }, + { + "x": 688.6878051757812, + "y": 279.583984375 + }, + { + "x": 761.3624877929688, + "y": 277.94024658203125 + }, + { + "x": 829.6483154296875, + "y": 279.430419921875 + }, + { + "x": 897.3869018554688, + "y": 282.67559814453125 + }, + { + "x": 957.8627319335938, + "y": 288.2341613769531 + }, + { + "x": 1024.43505859375, + "y": 285.4989929199219 + }, + { + "x": 617.2498168945312, + "y": 348.1330871582031 + }, + { + "x": 691.976806640625, + "y": 348.01202392578125 + }, + { + "x": 759.051025390625, + "y": 346.8373718261719 + }, + { + "x": 830.6893310546875, + "y": 350.51031494140625 + }, + { + "x": 893.9893188476562, + "y": 348.0113525390625 + }, + { + "x": 956.2610473632812, + "y": 347.4994812011719 + }, + { + "x": 1015.6370849609375, + "y": 351.5794982910156 + }, + { + "x": 622.3607177734375, + "y": 418.4253234863281 + }, + { + "x": 689.805908203125, + "y": 412.8490905761719 + }, + { + "x": 755.6123046875, + "y": 411.86309814453125 + }, + { + "x": 822.5623168945312, + "y": 417.943115234375 + }, + { + "x": 892.516845703125, + "y": 415.30120849609375 + }, + { + "x": 952.9028930664062, + "y": 413.8917541503906 + }, + { + "x": 1015.6609497070312, + "y": 415.8141784667969 + }, + { + "x": 617.4644165039062, + "y": 480.80999755859375 + }, + { + "x": 688.3861083984375, + "y": 480.05108642578125 + }, + { + "x": 756.5492553710938, + "y": 478.42236328125 + }, + { + "x": 821.9103393554688, + "y": 480.2715759277344 + }, + { + "x": 884.7357788085938, + "y": 477.8167724609375 + }, + { + "x": 947.2321166992188, + "y": 474.2315368652344 + }, + { + "x": 1012.71142578125, + "y": 471.49896240234375 + } + ], + "reprojectionErrors": [ + { + "x": 4.4207763671875, + "y": -0.8771476745605469 + }, + { + "x": 4.58233642578125, + "y": -0.4591522216796875 + }, + { + "x": 4.8863525390625, + "y": -2.1689453125 + }, + { + "x": -1.660400390625, + "y": -1.6700973510742188 + }, + { + "x": -1.7373046875, + "y": 1.684661865234375 + }, + { + "x": -1.12322998046875, + "y": -8.354660034179688 + }, + { + "x": 1.6107177734375, + "y": -4.505729675292969 + }, + { + "x": 6.09783935546875, + "y": 1.5529327392578125 + }, + { + "x": 3.4107666015625, + "y": 1.3523101806640625 + }, + { + "x": -1.08038330078125, + "y": 1.751068115234375 + }, + { + "x": -1.54888916015625, + "y": 2.080780029296875 + }, + { + "x": -2.4119873046875, + "y": 0.347747802734375 + }, + { + "x": 2.00885009765625, + "y": -3.5764312744140625 + }, + { + "x": 0.167724609375, + "y": -6.2796478271484375 + }, + { + "x": 4.08612060546875, + "y": 1.163482666015625 + }, + { + "x": 0.7039794921875, + "y": 0.67352294921875 + }, + { + "x": 2.07720947265625, + "y": -1.017181396484375 + }, + { + "x": -0.90618896484375, + "y": 4.3461151123046875 + }, + { + "x": -5.9534912109375, + "y": 4.9694366455078125 + }, + { + "x": -1.305419921875, + "y": 1.2725372314453125 + }, + { + "x": 0.0355224609375, + "y": -2.286163330078125 + }, + { + "x": 2.20977783203125, + "y": -1.074188232421875 + }, + { + "x": 2.66607666015625, + "y": -0.6546630859375 + }, + { + "x": -2.1265869140625, + "y": 1.7174072265625 + }, + { + "x": -3.43402099609375, + "y": 0.95196533203125 + }, + { + "x": -5.052978515625, + "y": -1.57171630859375 + }, + { + "x": -0.22515869140625, + "y": -6.411712646484375 + }, + { + "x": -2.268798828125, + "y": -2.960479736328125 + }, + { + "x": 4.8125, + "y": -0.641998291015625 + }, + { + "x": -1.60498046875, + "y": -0.284027099609375 + }, + { + "x": -1.3055419921875, + "y": 1.139556884765625 + }, + { + "x": -6.46026611328125, + "y": -2.272491455078125 + }, + { + "x": -4.12274169921875, + "y": 0.4991455078125 + }, + { + "x": -1.56103515625, + "y": 1.29534912109375 + }, + { + "x": 3.1326904296875, + "y": -2.488800048828125 + }, + { + "x": -0.75372314453125, + "y": -2.712860107421875 + }, + { + "x": -0.409423828125, + "y": 2.619903564453125 + }, + { + "x": 0.65191650390625, + "y": 3.38995361328125 + }, + { + "x": -0.30706787109375, + "y": -2.879150390625 + }, + { + "x": -5.1041259765625, + "y": -0.4000244140625 + }, + { + "x": -1.12493896484375, + "y": 0.872344970703125 + }, + { + "x": -0.27032470703125, + "y": -1.162017822265625 + }, + { + "x": 3.69134521484375, + "y": 2.059814453125 + }, + { + "x": 0.04168701171875, + "y": 2.109649658203125 + }, + { + "x": -1.757080078125, + "y": 3.07171630859375 + }, + { + "x": -1.61737060546875, + "y": 0.59710693359375 + }, + { + "x": 0.23681640625, + "y": 2.466766357421875 + }, + { + "x": 1.63958740234375, + "y": 5.506103515625 + }, + { + "x": -0.6822509765625, + "y": 7.7310791015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.026607393840079856, + "y": -0.10773619142580405, + "z": 0.38735334377806474 + }, + "rotation": { + "quaternion": { + "W": 0.9967389470271368, + "X": 0.0609403373030233, + "Y": -0.0527119794875017, + "Z": 0.004381094285382141 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img14.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img14.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 659.32958984375, + "y": 168.3883514404297 + }, + { + "x": 731.3419799804688, + "y": 171.40335083007812 + }, + { + "x": 801.9281005859375, + "y": 175.65489196777344 + }, + { + "x": 876.7636108398438, + "y": 178.2383270263672 + }, + { + "x": 943.5780639648438, + "y": 177.5945587158203 + }, + { + "x": 1007.8323364257812, + "y": 188.2093048095703 + }, + { + "x": 1067.52490234375, + "y": 188.06764221191406 + }, + { + "x": 653.327880859375, + "y": 239.81124877929688 + }, + { + "x": 730.5338134765625, + "y": 244.28123474121094 + }, + { + "x": 803.0511474609375, + "y": 245.6377716064453 + }, + { + "x": 872.8721923828125, + "y": 246.80723571777344 + }, + { + "x": 938.7285766601562, + "y": 249.89401245117188 + }, + { + "x": 1001.7452392578125, + "y": 253.25942993164062 + }, + { + "x": 1063.57666015625, + "y": 257.4241027832031 + }, + { + "x": 653.7682495117188, + "y": 316.7300109863281 + }, + { + "x": 729.65576171875, + "y": 317.6633605957031 + }, + { + "x": 797.65625, + "y": 319.69677734375 + }, + { + "x": 867.0668334960938, + "y": 315.6625061035156 + }, + { + "x": 937.2753295898438, + "y": 316.34033203125 + }, + { + "x": 998.7998046875, + "y": 321.1104736328125 + }, + { + "x": 1056.7891845703125, + "y": 323.2067565917969 + }, + { + "x": 655.1898803710938, + "y": 388.17724609375 + }, + { + "x": 724.549560546875, + "y": 389.10321044921875 + }, + { + "x": 797.415283203125, + "y": 386.9613037109375 + }, + { + "x": 864.9580688476562, + "y": 387.789794921875 + }, + { + "x": 930.8416137695312, + "y": 389.5963439941406 + }, + { + "x": 991.1842651367188, + "y": 390.630615234375 + }, + { + "x": 1051.1822509765625, + "y": 387.8052062988281 + }, + { + "x": 650.2413940429688, + "y": 457.6225280761719 + }, + { + "x": 727.09814453125, + "y": 457.28826904296875 + }, + { + "x": 792.7578125, + "y": 455.37518310546875 + }, + { + "x": 863.2390747070312, + "y": 456.7964782714844 + }, + { + "x": 924.6951904296875, + "y": 453.3163757324219 + }, + { + "x": 987.7311401367188, + "y": 452.7211608886719 + }, + { + "x": 1041.7933349609375, + "y": 452.6255187988281 + }, + { + "x": 654.4681396484375, + "y": 525.3656005859375 + }, + { + "x": 722.7691040039062, + "y": 518.997802734375 + }, + { + "x": 786.5514526367188, + "y": 516.65087890625 + }, + { + "x": 853.647216796875, + "y": 519.8948974609375 + }, + { + "x": 919.3516235351562, + "y": 516.296142578125 + }, + { + "x": 978.658935546875, + "y": 514.1943969726562 + }, + { + "x": 1036.953857421875, + "y": 512.8974609375 + }, + { + "x": 652.6306762695312, + "y": 582.015380859375 + }, + { + "x": 717.8968505859375, + "y": 582.6289672851562 + }, + { + "x": 786.05859375, + "y": 580.4871826171875 + }, + { + "x": 848.4768676757812, + "y": 579.7138061523438 + }, + { + "x": 910.7485961914062, + "y": 576.5823974609375 + }, + { + "x": 970.7066650390625, + "y": 571.9752807617188 + }, + { + "x": 1031.1793212890625, + "y": 567.3575439453125 + } + ], + "reprojectionErrors": [ + { + "x": 3.8489990234375, + "y": 2.696807861328125 + }, + { + "x": 3.97637939453125, + "y": 1.8333892822265625 + }, + { + "x": 3.9180908203125, + "y": -0.309356689453125 + }, + { + "x": -1.9185791015625, + "y": -0.824462890625 + }, + { + "x": -1.18524169921875, + "y": 1.8493194580078125 + }, + { + "x": 0.7308349609375, + "y": -6.771697998046875 + }, + { + "x": 5.9005126953125, + "y": -4.670654296875 + }, + { + "x": 7.8453369140625, + "y": 5.499481201171875 + }, + { + "x": 1.82135009765625, + "y": 2.3039398193359375 + }, + { + "x": -1.08319091796875, + "y": 2.20928955078125 + }, + { + "x": -2.78057861328125, + "y": 2.29010009765625 + }, + { + "x": -1.92706298828125, + "y": 0.4428558349609375 + }, + { + "x": 0.4234619140625, + "y": -1.6929473876953125 + }, + { + "x": 2.6834716796875, + "y": -4.6371307373046875 + }, + { + "x": 5.4425048828125, + "y": 0.777313232421875 + }, + { + "x": -0.20123291015625, + "y": 0.28759765625 + }, + { + "x": 0.51422119140625, + "y": -1.286590576171875 + }, + { + "x": -1.6309814453125, + "y": 3.222198486328125 + }, + { + "x": -5.951904296875, + "y": 3.03387451171875 + }, + { + "x": -2.89776611328125, + "y": -1.23211669921875 + }, + { + "x": 2.4471435546875, + "y": -2.809783935546875 + }, + { + "x": 2.10009765625, + "y": -0.4376220703125 + }, + { + "x": 2.0650634765625, + "y": -1.706756591796875 + }, + { + "x": -2.96392822265625, + "y": 0.1337890625 + }, + { + "x": -4.08319091796875, + "y": -0.955780029296875 + }, + { + "x": -4.8861083984375, + "y": -2.984466552734375 + }, + { + "x": -1.424560546875, + "y": -4.203216552734375 + }, + { + "x": 1.1678466796875, + "y": -1.525848388671875 + }, + { + "x": 5.168212890625, + "y": -1.55267333984375 + }, + { + "x": -3.26446533203125, + "y": -2.306610107421875 + }, + { + "x": -1.94927978515625, + "y": -1.415618896484375 + }, + { + "x": -6.8328857421875, + "y": -3.795379638671875 + }, + { + "x": -4.00048828125, + "y": -1.212493896484375 + }, + { + "x": -3.9927978515625, + "y": -1.455413818359375 + }, + { + "x": 3.804443359375, + "y": -2.140899658203125 + }, + { + "x": -0.8995361328125, + "y": -2.8077392578125 + }, + { + "x": -1.65899658203125, + "y": 1.76641845703125 + }, + { + "x": 0.68829345703125, + "y": 2.408447265625 + }, + { + "x": -1.62005615234375, + "y": -2.45513916015625 + }, + { + "x": -3.81353759765625, + "y": -0.3939208984375 + }, + { + "x": -0.82421875, + "y": 0.2493896484375 + }, + { + "x": 2.02197265625, + "y": 0.16400146484375 + }, + { + "x": -0.864990234375, + "y": 5.2457275390625 + }, + { + "x": 0.54534912109375, + "y": 2.17071533203125 + }, + { + "x": -2.31561279296875, + "y": 1.9608154296875 + }, + { + "x": -0.7415771484375, + "y": 0.48797607421875 + }, + { + "x": -0.26580810546875, + "y": 1.474609375 + }, + { + "x": 1.3389892578125, + "y": 4.03466796875 + }, + { + "x": 1.301513671875, + "y": 6.6993408203125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.012048075480519168, + "y": -0.06683397100579647, + "z": 0.3724320675111868 + }, + "rotation": { + "quaternion": { + "W": 0.9909179846702323, + "X": 0.10572785481551032, + "Y": -0.08262252456349908, + "Z": 0.008757100430484326 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img15.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img15.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 579.513671875, + "y": 135.44020080566406 + }, + { + "x": 649.732421875, + "y": 136.69395446777344 + }, + { + "x": 722.4830322265625, + "y": 141.15109252929688 + }, + { + "x": 798.9600830078125, + "y": 142.93792724609375 + }, + { + "x": 868.4027099609375, + "y": 142.01316833496094 + }, + { + "x": 936.5408325195312, + "y": 152.451171875 + }, + { + "x": 1001.1134643554688, + "y": 150.195556640625 + }, + { + "x": 576.3632202148438, + "y": 208.25674438476562 + }, + { + "x": 650.0241088867188, + "y": 211.16787719726562 + }, + { + "x": 725.5326538085938, + "y": 211.64532470703125 + }, + { + "x": 795.9227905273438, + "y": 212.27481079101562 + }, + { + "x": 865.3677978515625, + "y": 215.27906799316406 + }, + { + "x": 931.3519897460938, + "y": 218.27227783203125 + }, + { + "x": 997.3023681640625, + "y": 222.72149658203125 + }, + { + "x": 578.0909423828125, + "y": 281.5364685058594 + }, + { + "x": 650.6845092773438, + "y": 282.6499328613281 + }, + { + "x": 720.3471069335938, + "y": 285.56219482421875 + }, + { + "x": 791.8098754882812, + "y": 281.7649841308594 + }, + { + "x": 864.9142456054688, + "y": 281.78948974609375 + }, + { + "x": 930.7081298828125, + "y": 288.035888671875 + }, + { + "x": 991.3148803710938, + "y": 290.1705017089844 + }, + { + "x": 578.4942016601562, + "y": 354.89141845703125 + }, + { + "x": 648.097900390625, + "y": 355.5970153808594 + }, + { + "x": 721.6372680664062, + "y": 353.46966552734375 + }, + { + "x": 791.8743896484375, + "y": 354.192626953125 + }, + { + "x": 859.94921875, + "y": 356.82440185546875 + }, + { + "x": 923.5586547851562, + "y": 359.5576171875 + }, + { + "x": 987.6704711914062, + "y": 356.3238525390625 + }, + { + "x": 575.8749389648438, + "y": 423.9122009277344 + }, + { + "x": 651.8900756835938, + "y": 424.3536682128906 + }, + { + "x": 718.576904296875, + "y": 423.0492858886719 + }, + { + "x": 792.0159301757812, + "y": 426.2940979003906 + }, + { + "x": 855.66357421875, + "y": 422.45111083984375 + }, + { + "x": 924.6966552734375, + "y": 425.70233154296875 + }, + { + "x": 978.4293212890625, + "y": 424.5221862792969 + }, + { + "x": 580.4089965820312, + "y": 492.4427490234375 + }, + { + "x": 649.820556640625, + "y": 486.91961669921875 + }, + { + "x": 715.041015625, + "y": 486.669189453125 + }, + { + "x": 782.67236328125, + "y": 492.2000427246094 + }, + { + "x": 853.3258666992188, + "y": 488.993408203125 + }, + { + "x": 915.4654541015625, + "y": 485.482177734375 + }, + { + "x": 977.3701782226562, + "y": 486.5082092285156 + }, + { + "x": 576.4242553710938, + "y": 555.1836547851562 + }, + { + "x": 647.5108642578125, + "y": 554.3630981445312 + }, + { + "x": 716.4848022460938, + "y": 551.1546630859375 + }, + { + "x": 780.7130737304688, + "y": 552.3445434570312 + }, + { + "x": 845.362060546875, + "y": 549.7699584960938 + }, + { + "x": 908.5736083984375, + "y": 546.3118286132812 + }, + { + "x": 974.1444091796875, + "y": 541.4453125 + } + ], + "reprojectionErrors": [ + { + "x": 1.040771484375, + "y": 0.3953399658203125 + }, + { + "x": 4.42559814453125, + "y": 1.0879974365234375 + }, + { + "x": 4.05523681640625, + "y": -1.45556640625 + }, + { + "x": -1.2044677734375, + "y": -1.360076904296875 + }, + { + "x": -0.53509521484375, + "y": 1.4173126220703125 + }, + { + "x": 0.38824462890625, + "y": -7.1963043212890625 + }, + { + "x": 3.878662109375, + "y": -3.1431732177734375 + }, + { + "x": 3.9471435546875, + "y": 2.48211669921875 + }, + { + "x": 2.91839599609375, + "y": 0.8609619140625 + }, + { + "x": -1.14935302734375, + "y": 1.662200927734375 + }, + { + "x": -1.2315673828125, + "y": 2.3009185791015625 + }, + { + "x": -1.44586181640625, + "y": 0.555145263671875 + }, + { + "x": 0.776611328125, + "y": -1.1885528564453125 + }, + { + "x": 2.05938720703125, + "y": -4.39654541015625 + }, + { + "x": 1.9808349609375, + "y": 2.1220703125 + }, + { + "x": 1.0675048828125, + "y": 1.675689697265625 + }, + { + "x": 1.9246826171875, + "y": -0.560546875 + }, + { + "x": -0.12213134765625, + "y": 3.921630859375 + }, + { + "x": -4.86041259765625, + "y": 4.59112548828125 + }, + { + "x": -3.28662109375, + "y": -0.95220947265625 + }, + { + "x": 2.52484130859375, + "y": -2.37457275390625 + }, + { + "x": 1.34429931640625, + "y": -0.236663818359375 + }, + { + "x": 2.48785400390625, + "y": -0.866119384765625 + }, + { + "x": -1.4346923828125, + "y": 1.365203857421875 + }, + { + "x": -3.1307373046875, + "y": 0.773345947265625 + }, + { + "x": -3.68792724609375, + "y": -1.70068359375 + }, + { + "x": -0.75335693359375, + "y": -4.2501220703125 + }, + { + "x": 0.7528076171875, + "y": -0.807037353515625 + }, + { + "x": 3.7353515625, + "y": -0.126678466796875 + }, + { + "x": -2.4468994140625, + "y": -1.052581787109375 + }, + { + "x": -0.40240478515625, + "y": -0.187164306640625 + }, + { + "x": -6.1585693359375, + "y": -3.826690673828125 + }, + { + "x": -3.12127685546875, + "y": -0.33538818359375 + }, + { + "x": -6.4189453125, + "y": -3.89630126953125 + }, + { + "x": 4.68035888671875, + "y": -2.98492431640625 + }, + { + "x": -1.0218505859375, + "y": -1.335968017578125 + }, + { + "x": -1.4969482421875, + "y": 3.170989990234375 + }, + { + "x": 1.1455078125, + "y": 2.46728515625 + }, + { + "x": 0.35491943359375, + "y": -3.95751953125 + }, + { + "x": -4.430908203125, + "y": -1.5863037109375 + }, + { + "x": -1.62908935546875, + "y": 1.1463623046875 + }, + { + "x": 0.52618408203125, + "y": -0.602874755859375 + }, + { + "x": 2.74456787109375, + "y": 1.48870849609375 + }, + { + "x": -0.28448486328125, + "y": 0.788818359375 + }, + { + "x": -2.247314453125, + "y": 2.55438232421875 + }, + { + "x": -0.4610595703125, + "y": -0.0032958984375 + }, + { + "x": -0.044677734375, + "y": 1.2764892578125 + }, + { + "x": 0.90557861328125, + "y": 3.5106201171875 + }, + { + "x": -1.3636474609375, + "y": 7.22210693359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.04045751418960136, + "y": -0.07875676340061788, + "z": 0.3717151213062533 + }, + "rotation": { + "quaternion": { + "W": 0.9929896514236395, + "X": 0.10186431707932721, + "Y": -0.059591395962642, + "Z": 0.006639171540562885 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img16.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img16.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 804.760498046875, + "y": 168.6860809326172 + }, + { + "x": 869.6657104492188, + "y": 175.32322692871094 + }, + { + "x": 933.0454711914062, + "y": 183.88601684570312 + }, + { + "x": 999.0851440429688, + "y": 190.21389770507812 + }, + { + "x": 1057.9521484375, + "y": 193.4960479736328 + }, + { + "x": 1113.408203125, + "y": 206.44711303710938 + }, + { + "x": 1166.400146484375, + "y": 209.19029235839844 + }, + { + "x": 797.21923828125, + "y": 236.22203063964844 + }, + { + "x": 864.4577026367188, + "y": 243.6212921142578 + }, + { + "x": 930.5526123046875, + "y": 248.32313537597656 + }, + { + "x": 992.7527465820312, + "y": 252.93487548828125 + }, + { + "x": 1050.798095703125, + "y": 261.0290832519531 + }, + { + "x": 1105.0731201171875, + "y": 266.39599609375 + }, + { + "x": 1159.197265625, + "y": 273.43182373046875 + }, + { + "x": 793.0903930664062, + "y": 305.05035400390625 + }, + { + "x": 859.14794921875, + "y": 308.0142822265625 + }, + { + "x": 921.8972778320312, + "y": 316.1263427734375 + }, + { + "x": 983.7356567382812, + "y": 316.2106018066406 + }, + { + "x": 1045.6376953125, + "y": 320.4206848144531 + }, + { + "x": 1096.78564453125, + "y": 325.2578430175781 + }, + { + "x": 1150.4609375, + "y": 332.5595703125 + }, + { + "x": 788.7947387695312, + "y": 372.0976867675781 + }, + { + "x": 851.5435180664062, + "y": 376.74908447265625 + }, + { + "x": 917.6173706054688, + "y": 378.3902282714844 + }, + { + "x": 978.2177734375, + "y": 382.354248046875 + }, + { + "x": 1035.9088134765625, + "y": 387.5175476074219 + }, + { + "x": 1088.400146484375, + "y": 392.4913024902344 + }, + { + "x": 1141.7659912109375, + "y": 393.1828918457031 + }, + { + "x": 779.8590087890625, + "y": 436.435302734375 + }, + { + "x": 848.612548828125, + "y": 439.30938720703125 + }, + { + "x": 908.6864013671875, + "y": 441.7350158691406 + }, + { + "x": 971.4180908203125, + "y": 446.0932922363281 + }, + { + "x": 1026.9781494140625, + "y": 446.0260314941406 + }, + { + "x": 1080.8172607421875, + "y": 448.2566223144531 + }, + { + "x": 1130.4866943359375, + "y": 451.4024963378906 + }, + { + "x": 777.7308349609375, + "y": 498.0843200683594 + }, + { + "x": 840.5899047851562, + "y": 498.3999328613281 + }, + { + "x": 899.3616333007812, + "y": 498.4701232910156 + }, + { + "x": 959.4796752929688, + "y": 504.33807373046875 + }, + { + "x": 1017.4409790039062, + "y": 504.36181640625 + }, + { + "x": 1070.6220703125, + "y": 505.3991394042969 + }, + { + "x": 1120.6868896484375, + "y": 505.405029296875 + }, + { + "x": 771.2825927734375, + "y": 554.4230346679688 + }, + { + "x": 831.525634765625, + "y": 556.7437744140625 + }, + { + "x": 893.8392944335938, + "y": 558.3704833984375 + }, + { + "x": 949.6146240234375, + "y": 559.5492553710938 + }, + { + "x": 1005.788330078125, + "y": 560.7876586914062 + }, + { + "x": 1057.3758544921875, + "y": 556.7279052734375 + }, + { + "x": 1114.2337646484375, + "y": 557.0343017578125 + } + ], + "reprojectionErrors": [ + { + "x": 6.3673095703125, + "y": 4.1116790771484375 + }, + { + "x": 4.863525390625, + "y": 3.241241455078125 + }, + { + "x": 3.4537353515625, + "y": 0.312469482421875 + }, + { + "x": -1.97528076171875, + "y": -0.5074005126953125 + }, + { + "x": -1.5228271484375, + "y": 1.5987091064453125 + }, + { + "x": 1.1134033203125, + "y": -6.07794189453125 + }, + { + "x": 5.0469970703125, + "y": -3.654998779296875 + }, + { + "x": 7.16973876953125, + "y": 4.015869140625 + }, + { + "x": 2.78515625, + "y": 1.534515380859375 + }, + { + "x": -1.86175537109375, + "y": 1.647064208984375 + }, + { + "x": -3.94915771484375, + "y": 1.7515106201171875 + }, + { + "x": -3.1507568359375, + "y": -1.719757080078125 + }, + { + "x": 0.2117919921875, + "y": -2.552215576171875 + }, + { + "x": 2.577880859375, + "y": -5.137664794921875 + }, + { + "x": 4.6715087890625, + "y": 1.281341552734375 + }, + { + "x": 0.92498779296875, + "y": 2.418487548828125 + }, + { + "x": -0.89385986328125, + "y": -1.66827392578125 + }, + { + "x": -3.113525390625, + "y": 2.200958251953125 + }, + { + "x": -6.6439208984375, + "y": 1.87640380859375 + }, + { + "x": -0.60595703125, + "y": 0.860382080078125 + }, + { + "x": 1.7764892578125, + "y": -2.68121337890625 + }, + { + "x": 2.4498291015625, + "y": -0.99310302734375 + }, + { + "x": 1.47418212890625, + "y": -2.329345703125 + }, + { + "x": -4.18231201171875, + "y": -0.704803466796875 + }, + { + "x": -5.65411376953125, + "y": -1.44976806640625 + }, + { + "x": -5.4420166015625, + "y": -3.437957763671875 + }, + { + "x": -1.1959228515625, + "y": -5.278076171875 + }, + { + "x": 1.066162109375, + "y": -2.87506103515625 + }, + { + "x": 4.9761962890625, + "y": -1.853851318359375 + }, + { + "x": -2.5372314453125, + "y": -2.168792724609375 + }, + { + "x": -2.7025146484375, + "y": -2.059722900390625 + }, + { + "x": -6.791748046875, + "y": -3.906097412109375 + }, + { + "x": -4.91363525390625, + "y": -1.3480224609375 + }, + { + "x": -2.4605712890625, + "y": -1.107421875 + }, + { + "x": 3.0711669921875, + "y": -1.80023193359375 + }, + { + "x": 0.8011474609375, + "y": -1.29742431640625 + }, + { + "x": -1.345947265625, + "y": 0.219024658203125 + }, + { + "x": -0.7135009765625, + "y": 1.98016357421875 + }, + { + "x": -2.6712646484375, + "y": -2.05657958984375 + }, + { + "x": -3.65582275390625, + "y": -0.248504638671875 + }, + { + "x": -0.98681640625, + "y": 0.547149658203125 + }, + { + "x": 3.7255859375, + "y": 2.376007080078125 + }, + { + "x": 1.05059814453125, + "y": 3.322021484375 + }, + { + "x": 0.99615478515625, + "y": 2.13421630859375 + }, + { + "x": -2.413330078125, + "y": 1.66217041015625 + }, + { + "x": -0.50653076171875, + "y": 1.65948486328125 + }, + { + "x": -0.161376953125, + "y": 1.618408203125 + }, + { + "x": 3.662353515625, + "y": 6.89642333984375 + }, + { + "x": 1.1607666015625, + "y": 7.8289794921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.04291884492120131, + "y": -0.07297439077362504, + "z": 0.41025060524757156 + }, + "rotation": { + "quaternion": { + "W": 0.9913431714082349, + "X": 0.08738427787004953, + "Y": -0.09153411248466431, + "Z": 0.034988722969520505 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img17.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img17.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 893.8965454101562, + "y": 212.3775634765625 + }, + { + "x": 956.5565185546875, + "y": 217.1291046142578 + }, + { + "x": 1016.7025146484375, + "y": 223.33416748046875 + }, + { + "x": 1077.4630126953125, + "y": 227.6585693359375 + }, + { + "x": 1132.5062255859375, + "y": 228.76864624023438 + }, + { + "x": 1182.631591796875, + "y": 240.17315673828125 + }, + { + "x": 1231.162353515625, + "y": 240.23561096191406 + }, + { + "x": 887.3026733398438, + "y": 278.46630859375 + }, + { + "x": 952.0367431640625, + "y": 284.09124755859375 + }, + { + "x": 1014.087646484375, + "y": 286.73638916015625 + }, + { + "x": 1073.9215087890625, + "y": 287.3751525878906 + }, + { + "x": 1125.2427978515625, + "y": 294.2901611328125 + }, + { + "x": 1175.67333984375, + "y": 296.8119201660156 + }, + { + "x": 1223.9498291015625, + "y": 302.6900939941406 + }, + { + "x": 883.8274536132812, + "y": 346.5619201660156 + }, + { + "x": 946.9100952148438, + "y": 346.8729553222656 + }, + { + "x": 1006.239013671875, + "y": 352.4366149902344 + }, + { + "x": 1063.48828125, + "y": 350.5365295410156 + }, + { + "x": 1121.044189453125, + "y": 351.3463134765625 + }, + { + "x": 1170.20654296875, + "y": 359.0064697265625 + }, + { + "x": 1215.430908203125, + "y": 359.553955078125 + }, + { + "x": 879.6148681640625, + "y": 410.72662353515625 + }, + { + "x": 939.5872192382812, + "y": 413.5095520019531 + }, + { + "x": 1002.1268310546875, + "y": 413.2384338378906 + }, + { + "x": 1057.646484375, + "y": 414.29620361328125 + }, + { + "x": 1111.0775146484375, + "y": 416.741455078125 + }, + { + "x": 1159.8785400390625, + "y": 417.2755126953125 + }, + { + "x": 1207.8475341796875, + "y": 418.0556945800781 + }, + { + "x": 872.5181274414062, + "y": 472.8484802246094 + }, + { + "x": 936.7320556640625, + "y": 473.744873046875 + }, + { + "x": 992.9141845703125, + "y": 473.5981750488281 + }, + { + "x": 1051.1622314453125, + "y": 475.201904296875 + }, + { + "x": 1101.7086181640625, + "y": 473.0606994628906 + }, + { + "x": 1153.2318115234375, + "y": 473.74017333984375 + }, + { + "x": 1197.693359375, + "y": 471.65765380859375 + }, + { + "x": 868.746826171875, + "y": 532.796142578125 + }, + { + "x": 928.5830078125, + "y": 530.1765747070312 + }, + { + "x": 983.7095947265625, + "y": 528.0968017578125 + }, + { + "x": 1039.5146484375, + "y": 530.4764404296875 + }, + { + "x": 1093.2091064453125, + "y": 528.3626708984375 + }, + { + "x": 1141.6326904296875, + "y": 526.3324584960938 + }, + { + "x": 1187.63623046875, + "y": 525.6370849609375 + }, + { + "x": 860.4254150390625, + "y": 587.7100219726562 + }, + { + "x": 919.6744384765625, + "y": 586.4444580078125 + }, + { + "x": 976.6936645507812, + "y": 585.5720825195312 + }, + { + "x": 1030.433837890625, + "y": 584.1857299804688 + }, + { + "x": 1081.6162109375, + "y": 581.662109375 + }, + { + "x": 1128.963623046875, + "y": 576.2529907226562 + }, + { + "x": 1180.8790283203125, + "y": 572.2041015625 + } + ], + "reprojectionErrors": [ + { + "x": 7.6085205078125, + "y": 4.7773590087890625 + }, + { + "x": 4.63409423828125, + "y": 3.634765625 + }, + { + "x": 2.5528564453125, + "y": 0.9457244873046875 + }, + { + "x": -1.6756591796875, + "y": 0.049560546875 + }, + { + "x": -1.6373291015625, + "y": 2.2846832275390625 + }, + { + "x": 1.9449462890625, + "y": -5.853179931640625 + }, + { + "x": 5.8199462890625, + "y": -2.723388671875 + }, + { + "x": 7.69384765625, + "y": 4.26983642578125 + }, + { + "x": 2.110107421875, + "y": 1.28387451171875 + }, + { + "x": -2.38031005859375, + "y": 1.22052001953125 + }, + { + "x": -6.1578369140625, + "y": 3.109649658203125 + }, + { + "x": -2.8470458984375, + "y": -1.328338623046875 + }, + { + "x": 0.0052490234375, + "y": -1.42108154296875 + }, + { + "x": 3.732177734375, + "y": -4.91558837890625 + }, + { + "x": 4.76617431640625, + "y": 0.356719970703125 + }, + { + "x": 0.30419921875, + "y": 1.75439453125 + }, + { + "x": -1.96368408203125, + "y": -2.123931884765625 + }, + { + "x": -3.628173828125, + "y": 1.4395751953125 + }, + { + "x": -6.99755859375, + "y": 2.272796630859375 + }, + { + "x": -3.2987060546875, + "y": -3.763458251953125 + }, + { + "x": 3.0811767578125, + "y": -2.704833984375 + }, + { + "x": 2.6795654296875, + "y": -0.993743896484375 + }, + { + "x": 0.8037109375, + "y": -2.95989990234375 + }, + { + "x": -5.16943359375, + "y": -1.863555908203125 + }, + { + "x": -5.571533203125, + "y": -2.087738037109375 + }, + { + "x": -5.2578125, + "y": -3.691070556640625 + }, + { + "x": -1.615966796875, + "y": -3.374908447265625 + }, + { + "x": 1.6226806640625, + "y": -3.29656982421875 + }, + { + "x": 3.57879638671875, + "y": -1.63970947265625 + }, + { + "x": -3.05731201171875, + "y": -2.574432373046875 + }, + { + "x": -3.16278076171875, + "y": -2.427581787109375 + }, + { + "x": -6.756103515625, + "y": -3.994171142578125 + }, + { + "x": -3.9959716796875, + "y": -1.780303955078125 + }, + { + "x": -3.4913330078125, + "y": -2.352935791015625 + }, + { + "x": 2.861083984375, + "y": -0.130584716796875 + }, + { + "x": 1.25244140625, + "y": -1.42071533203125 + }, + { + "x": -1.51922607421875, + "y": 0.3409423828125 + }, + { + "x": -1.0540771484375, + "y": 1.629638671875 + }, + { + "x": -2.6630859375, + "y": -1.4771728515625 + }, + { + "x": -3.4853515625, + "y": -0.029296875 + }, + { + "x": -0.2928466796875, + "y": 1.3936767578125 + }, + { + "x": 4.1268310546875, + "y": 1.5380859375 + }, + { + "x": 3.57415771484375, + "y": 2.55133056640625 + }, + { + "x": 0.88177490234375, + "y": 2.17352294921875 + }, + { + "x": -1.02587890625, + "y": 1.49615478515625 + }, + { + "x": -1.0245361328125, + "y": 1.422119140625 + }, + { + "x": 0.2347412109375, + "y": 2.57086181640625 + }, + { + "x": 4.094970703125, + "y": 6.6868896484375 + }, + { + "x": 2.2149658203125, + "y": 9.5211181640625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.07892242480522131, + "y": -0.057459213387463216, + "z": 0.4191666630752561 + }, + "rotation": { + "quaternion": { + "W": 0.9884267530786924, + "X": 0.09457246868791344, + "Y": -0.11632137848482688, + "Z": 0.02319350926395282 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img18.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img18.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 881.3707885742188, + "y": 292.66888427734375 + }, + { + "x": 945.6123046875, + "y": 293.2132568359375 + }, + { + "x": 1008.6635131835938, + "y": 294.7347717285156 + }, + { + "x": 1070.0028076171875, + "y": 296.10076904296875 + }, + { + "x": 1125.740478515625, + "y": 293.15789794921875 + }, + { + "x": 1177.209716796875, + "y": 300.572265625 + }, + { + "x": 1224.5133056640625, + "y": 297.35260009765625 + }, + { + "x": 875.7958374023438, + "y": 359.9862976074219 + }, + { + "x": 942.925537109375, + "y": 361.4643249511719 + }, + { + "x": 1005.5360717773438, + "y": 360.0255432128906 + }, + { + "x": 1066.812744140625, + "y": 356.8495788574219 + }, + { + "x": 1119.5792236328125, + "y": 360.5689392089844 + }, + { + "x": 1170.721435546875, + "y": 357.4643859863281 + }, + { + "x": 1218.939453125, + "y": 359.7701721191406 + }, + { + "x": 874.33642578125, + "y": 429.3959655761719 + }, + { + "x": 938.3580322265625, + "y": 425.453125 + }, + { + "x": 999.096923828125, + "y": 427.08349609375 + }, + { + "x": 1057.1259765625, + "y": 420.9266662597656 + }, + { + "x": 1115.225830078125, + "y": 417.687255859375 + }, + { + "x": 1165.618408203125, + "y": 421.1882629394531 + }, + { + "x": 1210.359130859375, + "y": 417.732421875 + }, + { + "x": 871.8638916015625, + "y": 493.8595275878906 + }, + { + "x": 932.6498413085938, + "y": 492.1974792480469 + }, + { + "x": 994.6998291015625, + "y": 486.6209716796875 + }, + { + "x": 1052.43359375, + "y": 484.4962463378906 + }, + { + "x": 1105.6396484375, + "y": 482.5802307128906 + }, + { + "x": 1155.6744384765625, + "y": 478.6451416015625 + }, + { + "x": 1202.479248046875, + "y": 474.840576171875 + }, + { + "x": 864.93359375, + "y": 555.7305908203125 + }, + { + "x": 930.3239135742188, + "y": 551.2379150390625 + }, + { + "x": 987.8818359375, + "y": 547.4956665039062 + }, + { + "x": 1046.359130859375, + "y": 544.2926025390625 + }, + { + "x": 1097.6007080078125, + "y": 538.5718383789062 + }, + { + "x": 1148.447021484375, + "y": 534.7568359375 + }, + { + "x": 1192.50634765625, + "y": 530.265625 + }, + { + "x": 862.7946166992188, + "y": 612.7498779296875 + }, + { + "x": 923.6213989257812, + "y": 607.2361450195312 + }, + { + "x": 978.7958984375, + "y": 600.626220703125 + }, + { + "x": 1034.916259765625, + "y": 600.292724609375 + }, + { + "x": 1089.2061767578125, + "y": 592.873046875 + }, + { + "x": 1138.09765625, + "y": 586.8587646484375 + }, + { + "x": 1180.7733154296875, + "y": 578.5086059570312 + }, + { + "x": 855.2342529296875, + "y": 667.4242553710938 + }, + { + "x": 915.8897705078125, + "y": 661.3677368164062 + }, + { + "x": 973.8157348632812, + "y": 656.4881591796875 + }, + { + "x": 1025.9066162109375, + "y": 648.7325439453125 + }, + { + "x": 1078.5640869140625, + "y": 645.337158203125 + }, + { + "x": 1123.2984619140625, + "y": 633.4473876953125 + }, + { + "x": 1176.7818603515625, + "y": 628.131103515625 + } + ], + "reprojectionErrors": [ + { + "x": 7.79608154296875, + "y": 5.608642578125 + }, + { + "x": 5.107666015625, + "y": 4.34075927734375 + }, + { + "x": 1.71478271484375, + "y": 2.144561767578125 + }, + { + "x": -1.75048828125, + "y": 0.150146484375 + }, + { + "x": -1.296142578125, + "y": 2.508575439453125 + }, + { + "x": 1.83984375, + "y": -5.448455810546875 + }, + { + "x": 7.6429443359375, + "y": -2.731689453125 + }, + { + "x": 8.12139892578125, + "y": 4.9158935546875 + }, + { + "x": 1.7437744140625, + "y": 1.657379150390625 + }, + { + "x": -1.958251953125, + "y": 1.404937744140625 + }, + { + "x": -6.0635986328125, + "y": 2.9742431640625 + }, + { + "x": -3.2974853515625, + "y": -2.271636962890625 + }, + { + "x": -0.4541015625, + "y": -0.617523193359375 + }, + { + "x": 3.851806640625, + "y": -4.30145263671875 + }, + { + "x": 4.44818115234375, + "y": 0.186798095703125 + }, + { + "x": 0.3941650390625, + "y": 1.353057861328125 + }, + { + "x": -2.17120361328125, + "y": -2.92742919921875 + }, + { + "x": -3.718505859375, + "y": 0.699066162109375 + }, + { + "x": -6.9334716796875, + "y": 1.52166748046875 + }, + { + "x": -3.949462890625, + "y": -4.288360595703125 + }, + { + "x": 3.26025390625, + "y": -3.039154052734375 + }, + { + "x": 1.9012451171875, + "y": -1.4708251953125 + }, + { + "x": 0.31451416015625, + "y": -3.524017333984375 + }, + { + "x": -4.28253173828125, + "y": -1.502105712890625 + }, + { + "x": -6.2113037109375, + "y": -2.77978515625 + }, + { + "x": -5.1685791015625, + "y": -4.121826171875 + }, + { + "x": -2.4256591796875, + "y": -3.30780029296875 + }, + { + "x": 2.1556396484375, + "y": -2.494049072265625 + }, + { + "x": 3.92132568359375, + "y": -2.3443603515625 + }, + { + "x": -3.02239990234375, + "y": -2.45135498046875 + }, + { + "x": -3.833984375, + "y": -3.11676025390625 + }, + { + "x": -7.1702880859375, + "y": -4.13934326171875 + }, + { + "x": -4.7880859375, + "y": -2.47149658203125 + }, + { + "x": -3.445556640625, + "y": -2.54541015625 + }, + { + "x": 3.325927734375, + "y": -1.78717041015625 + }, + { + "x": 1.25592041015625, + "y": -0.11114501953125 + }, + { + "x": -1.8616943359375, + "y": -0.0303955078125 + }, + { + "x": -0.9827880859375, + "y": 1.36749267578125 + }, + { + "x": -2.6141357421875, + "y": -3.30169677734375 + }, + { + "x": -3.8941650390625, + "y": -0.68585205078125 + }, + { + "x": -1.17578125, + "y": 0.7135009765625 + }, + { + "x": 6.4327392578125, + "y": 4.62835693359375 + }, + { + "x": 4.1142578125, + "y": 2.78240966796875 + }, + { + "x": 0.4453125, + "y": 2.62109375 + }, + { + "x": -2.10693359375, + "y": 1.53009033203125 + }, + { + "x": -0.3486328125, + "y": 3.54974365234375 + }, + { + "x": -0.599609375, + "y": 1.4320068359375 + }, + { + "x": 5.70654296875, + "y": 8.02044677734375 + }, + { + "x": 1.969482421875, + "y": 8.23699951171875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.07122396067850582, + "y": -0.025155760983134913, + "z": 0.4027095733110335 + }, + "rotation": { + "quaternion": { + "W": 0.9840586123874281, + "X": 0.12167855084076849, + "Y": -0.12966745709317767, + "Z": 0.0030542138774505064 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img19.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img19.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1114.3604736328125, + "y": 239.1194305419922 + }, + { + "x": 1111.608642578125, + "y": 308.819580078125 + }, + { + "x": 1107.5306396484375, + "y": 371.54736328125 + }, + { + "x": 1102.894287109375, + "y": 435.7260437011719 + }, + { + "x": 1095.4306640625, + "y": 496.29278564453125 + }, + { + "x": 1090.6522216796875, + "y": 550.3825073242188 + }, + { + "x": 1089.688232421875, + "y": 599.9061279296875 + }, + { + "x": 1057.5986328125, + "y": 247.3425750732422 + }, + { + "x": 1054.2767333984375, + "y": 309.86236572265625 + }, + { + "x": 1052.82177734375, + "y": 377.7282409667969 + }, + { + "x": 1047.62841796875, + "y": 443.4821472167969 + }, + { + "x": 1046.6072998046875, + "y": 504.91864013671875 + }, + { + "x": 1038.9671630859375, + "y": 559.921875 + }, + { + "x": 1026.9737548828125, + "y": 610.9586791992188 + }, + { + "x": 996.2194213867188, + "y": 242.3312225341797 + }, + { + "x": 993.6295776367188, + "y": 315.6859130859375 + }, + { + "x": 994.9276123046875, + "y": 378.7979736328125 + }, + { + "x": 989.9745483398438, + "y": 451.0641784667969 + }, + { + "x": 986.4966430664062, + "y": 511.12469482421875 + }, + { + "x": 983.5846557617188, + "y": 570.2774658203125 + }, + { + "x": 978.1032104492188, + "y": 624.4725341796875 + }, + { + "x": 931.2528076171875, + "y": 250.9747772216797 + }, + { + "x": 931.496826171875, + "y": 317.8650207519531 + }, + { + "x": 926.9566650390625, + "y": 387.344482421875 + }, + { + "x": 927.7799072265625, + "y": 456.49237060546875 + }, + { + "x": 927.3777465820312, + "y": 521.443603515625 + }, + { + "x": 921.557861328125, + "y": 580.7927856445312 + }, + { + "x": 916.891845703125, + "y": 633.5093994140625 + }, + { + "x": 858.3645629882812, + "y": 255.20065307617188 + }, + { + "x": 863.1512451171875, + "y": 326.05322265625 + }, + { + "x": 860.5247192382812, + "y": 398.6289978027344 + }, + { + "x": 862.4291381835938, + "y": 463.05242919921875 + }, + { + "x": 861.589111328125, + "y": 527.9580078125 + }, + { + "x": 856.5614013671875, + "y": 585.3431396484375 + }, + { + "x": 858.370849609375, + "y": 645.142822265625 + }, + { + "x": 787.3381958007812, + "y": 258.0362243652344 + }, + { + "x": 790.5604858398438, + "y": 331.3003234863281 + }, + { + "x": 790.56591796875, + "y": 401.7041015625 + }, + { + "x": 792.316162109375, + "y": 473.405517578125 + }, + { + "x": 797.1847534179688, + "y": 536.6716918945312 + }, + { + "x": 795.827880859375, + "y": 595.6903686523438 + }, + { + "x": 794.3334350585938, + "y": 653.5078735351562 + }, + { + "x": 714.0335083007812, + "y": 262.2471923828125 + }, + { + "x": 713.544189453125, + "y": 334.8152770996094 + }, + { + "x": 719.5327758789062, + "y": 409.92022705078125 + }, + { + "x": 724.5033569335938, + "y": 479.4398498535156 + }, + { + "x": 722.5728759765625, + "y": 546.3250122070312 + }, + { + "x": 728.9852905273438, + "y": 606.9006958007812 + }, + { + "x": 727.2191162109375, + "y": 663.5595092773438 + } + ], + "reprojectionErrors": [ + { + "x": 6.923828125, + "y": -3.0439453125 + }, + { + "x": 3.8135986328125, + "y": -5.10406494140625 + }, + { + "x": 2.3243408203125, + "y": -2.584869384765625 + }, + { + "x": 1.6708984375, + "y": -3.759918212890625 + }, + { + "x": 4.1058349609375, + "y": -3.4285888671875 + }, + { + "x": 4.1019287109375, + "y": 1.40130615234375 + }, + { + "x": 0.5162353515625, + "y": 8.93621826171875 + }, + { + "x": 1.6646728515625, + "y": -6.4151153564453125 + }, + { + "x": 0.1942138671875, + "y": -0.4422607421875 + }, + { + "x": -2.8907470703125, + "y": -2.27154541015625 + }, + { + "x": -2.0, + "y": -4.28955078125 + }, + { + "x": -5.0582275390625, + "y": -4.147979736328125 + }, + { + "x": -1.2867431640625, + "y": 0.40069580078125 + }, + { + "x": 7.0367431640625, + "y": 7.010986328125 + }, + { + "x": -0.8077392578125, + "y": 3.5728759765625 + }, + { + "x": -1.8756103515625, + "y": -0.4200439453125 + }, + { + "x": -6.6251220703125, + "y": 3.30841064453125 + }, + { + "x": -4.9298095703125, + "y": -4.4771728515625 + }, + { + "x": -4.52740478515625, + "y": -2.26885986328125 + }, + { + "x": -4.51904296875, + "y": -1.22808837890625 + }, + { + "x": -1.77911376953125, + "y": 2.8206787109375 + }, + { + "x": -1.5882568359375, + "y": 0.034881591796875 + }, + { + "x": -4.2864990234375, + "y": 3.392425537109375 + }, + { + "x": -2.0447998046875, + "y": 1.5721435546875 + }, + { + "x": -5.0201416015625, + "y": -2.33770751953125 + }, + { + "x": -6.63226318359375, + "y": -4.31829833984375 + }, + { + "x": -2.6968994140625, + "y": -2.82293701171875 + }, + { + "x": 0.20721435546875, + "y": 3.30914306640625 + }, + { + "x": 3.5897216796875, + "y": 1.047943115234375 + }, + { + "x": -2.37506103515625, + "y": 1.3465576171875 + }, + { + "x": -0.82562255859375, + "y": -2.736419677734375 + }, + { + "x": -3.712158203125, + "y": -1.151397705078125 + }, + { + "x": -3.76483154296875, + "y": -2.37335205078125 + }, + { + "x": 0.45452880859375, + "y": 1.74676513671875 + }, + { + "x": -2.08349609375, + "y": 1.40887451171875 + }, + { + "x": 4.871826171875, + "y": 3.58935546875 + }, + { + "x": 1.8245849609375, + "y": 2.39764404296875 + }, + { + "x": 2.03558349609375, + "y": 1.335693359375 + }, + { + "x": 0.54095458984375, + "y": -3.573638916015625 + }, + { + "x": -4.034912109375, + "y": -2.431884765625 + }, + { + "x": -2.35009765625, + "y": 0.7252197265625 + }, + { + "x": -0.49420166015625, + "y": 2.99090576171875 + }, + { + "x": 6.32427978515625, + "y": 4.898284912109375 + }, + { + "x": 8.42333984375, + "y": 5.342041015625 + }, + { + "x": 4.0211181640625, + "y": 0.443634033203125 + }, + { + "x": 0.61553955078125, + "y": -1.486724853515625 + }, + { + "x": 4.0914306640625, + "y": -3.22802734375 + }, + { + "x": -0.79345703125, + "y": -0.94757080078125 + }, + { + "x": 2.4837646484375, + "y": 3.10662841796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.1556067217886811, + "y": -0.047537204544417844, + "z": 0.39721171977118075 + }, + "rotation": { + "quaternion": { + "W": 0.7171299847293962, + "X": 0.019490858981823695, + "Y": -0.1808876900967659, + "Z": 0.6727736134760511 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img20.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img20.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 644.6550903320312, + "y": 228.22203063964844 + }, + { + "x": 720.9342651367188, + "y": 230.24925231933594 + }, + { + "x": 797.2259521484375, + "y": 234.0833282470703 + }, + { + "x": 876.7141723632812, + "y": 234.8714599609375 + }, + { + "x": 948.9273071289062, + "y": 233.12301635742188 + }, + { + "x": 1017.1553344726562, + "y": 242.72860717773438 + }, + { + "x": 1081.748046875, + "y": 239.6153106689453 + }, + { + "x": 639.3955078125, + "y": 304.7171630859375 + }, + { + "x": 719.2220458984375, + "y": 308.43389892578125 + }, + { + "x": 796.9842529296875, + "y": 307.4568786621094 + }, + { + "x": 873.6605834960938, + "y": 306.6816711425781 + }, + { + "x": 941.934814453125, + "y": 309.17889404296875 + }, + { + "x": 1008.9130249023438, + "y": 311.30242919921875 + }, + { + "x": 1074.40380859375, + "y": 314.41668701171875 + }, + { + "x": 641.7404174804688, + "y": 382.45770263671875 + }, + { + "x": 718.7518920898438, + "y": 382.85992431640625 + }, + { + "x": 791.1732788085938, + "y": 385.3542785644531 + }, + { + "x": 864.854736328125, + "y": 379.3387145996094 + }, + { + "x": 939.4364013671875, + "y": 378.32781982421875 + }, + { + "x": 1003.7062377929688, + "y": 381.4845886230469 + }, + { + "x": 1065.6739501953125, + "y": 381.486083984375 + }, + { + "x": 643.2474365234375, + "y": 457.402099609375 + }, + { + "x": 714.3474731445312, + "y": 456.58636474609375 + }, + { + "x": 789.7608642578125, + "y": 452.4827880859375 + }, + { + "x": 862.1215209960938, + "y": 452.7403259277344 + }, + { + "x": 930.6629638671875, + "y": 452.9263610839844 + }, + { + "x": 994.41357421875, + "y": 452.42547607421875 + }, + { + "x": 1057.48974609375, + "y": 448.8108825683594 + }, + { + "x": 640.7322387695312, + "y": 523.6746215820312 + }, + { + "x": 717.0885620117188, + "y": 524.6273803710938 + }, + { + "x": 784.6104125976562, + "y": 522.7767944335938 + }, + { + "x": 858.7105712890625, + "y": 522.2229614257812 + }, + { + "x": 923.6299438476562, + "y": 517.306640625 + }, + { + "x": 990.4178466796875, + "y": 517.2501831054688 + }, + { + "x": 1046.150146484375, + "y": 513.3679809570312 + }, + { + "x": 642.9475708007812, + "y": 594.32763671875 + }, + { + "x": 712.6632690429688, + "y": 586.3020629882812 + }, + { + "x": 777.7392578125, + "y": 581.5913696289062 + }, + { + "x": 847.6428833007812, + "y": 586.3822021484375 + }, + { + "x": 917.8892822265625, + "y": 581.4085693359375 + }, + { + "x": 978.9178466796875, + "y": 575.5227661132812 + }, + { + "x": 1039.1448974609375, + "y": 573.6542358398438 + }, + { + "x": 638.9172973632812, + "y": 645.9937744140625 + }, + { + "x": 709.5955200195312, + "y": 648.6305541992188 + }, + { + "x": 777.138916015625, + "y": 645.816162109375 + }, + { + "x": 842.3472900390625, + "y": 640.8104858398438 + }, + { + "x": 906.8970336914062, + "y": 638.5877075195312 + }, + { + "x": 968.943359375, + "y": 632.8162231445312 + }, + { + "x": 1031.8592529296875, + "y": 625.645751953125 + } + ], + "reprojectionErrors": [ + { + "x": 3.6224365234375, + "y": 4.860382080078125 + }, + { + "x": 4.61724853515625, + "y": 3.568695068359375 + }, + { + "x": 3.87091064453125, + "y": 0.48089599609375 + }, + { + "x": -1.71038818359375, + "y": 0.44976806640625 + }, + { + "x": -1.5699462890625, + "y": 2.9658966064453125 + }, + { + "x": 1.08221435546875, + "y": -5.8613433837890625 + }, + { + "x": 5.9718017578125, + "y": -1.95904541015625 + }, + { + "x": 7.17034912109375, + "y": 5.510040283203125 + }, + { + "x": 3.13525390625, + "y": 1.638916015625 + }, + { + "x": -0.49835205078125, + "y": 2.502777099609375 + }, + { + "x": -4.62310791015625, + "y": 3.20465087890625 + }, + { + "x": -1.8419189453125, + "y": 0.67254638671875 + }, + { + "x": 0.81536865234375, + "y": -1.448577880859375 + }, + { + "x": 3.612060546875, + "y": -4.5242919921875 + }, + { + "x": 3.16986083984375, + "y": 1.910919189453125 + }, + { + "x": 0.51702880859375, + "y": 0.531890869140625 + }, + { + "x": 0.8538818359375, + "y": -2.87066650390625 + }, + { + "x": -1.588134765625, + "y": 2.302734375 + }, + { + "x": -6.37213134765625, + "y": 2.535064697265625 + }, + { + "x": -2.2135009765625, + "y": -1.33892822265625 + }, + { + "x": 2.9466552734375, + "y": -1.99847412109375 + }, + { + "x": 0.06060791015625, + "y": -1.74249267578125 + }, + { + "x": 1.93377685546875, + "y": -2.663818359375 + }, + { + "x": -2.047607421875, + "y": -0.204010009765625 + }, + { + "x": -4.43975830078125, + "y": -2.015655517578125 + }, + { + "x": -4.40283203125, + "y": -3.6695556640625 + }, + { + "x": -0.89593505859375, + "y": -4.553466796875 + }, + { + "x": 2.030029296875, + "y": -2.243560791015625 + }, + { + "x": 1.02423095703125, + "y": 0.56842041015625 + }, + { + "x": -3.69927978515625, + "y": -2.82427978515625 + }, + { + "x": -1.0732421875, + "y": -3.29815673828125 + }, + { + "x": -6.43646240234375, + "y": -4.95782470703125 + }, + { + "x": -3.95989990234375, + "y": -2.1483154296875 + }, + { + "x": -4.626708984375, + "y": -4.095947265625 + }, + { + "x": 4.5496826171875, + "y": -2.11883544921875 + }, + { + "x": -2.69439697265625, + "y": -4.07501220703125 + }, + { + "x": -2.07470703125, + "y": 0.8607177734375 + }, + { + "x": 1.753173828125, + "y": 2.61700439453125 + }, + { + "x": -0.6075439453125, + "y": -4.99810791015625 + }, + { + "x": -4.605224609375, + "y": -2.72357177734375 + }, + { + "x": -0.6160888671875, + "y": 0.58355712890625 + }, + { + "x": 3.003173828125, + "y": -0.010498046875 + }, + { + "x": -0.1214599609375, + "y": 7.81964111328125 + }, + { + "x": -1.72076416015625, + "y": 1.49212646484375 + }, + { + "x": -1.56597900390625, + "y": 0.76910400390625 + }, + { + "x": -0.3895263671875, + "y": 2.384765625 + }, + { + "x": 0.1959228515625, + "y": 1.35931396484375 + }, + { + "x": 2.09552001953125, + "y": 4.01904296875 + }, + { + "x": 1.993408203125, + "y": 8.20928955078125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.016103125677555674, + "y": -0.0427245652329469, + "z": 0.3489709439642079 + }, + "rotation": { + "quaternion": { + "W": 0.9868146444651501, + "X": 0.1419565153631526, + "Y": -0.07744934304270132, + "Z": 0.0068413797822070065 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img21.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img21.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 572.7039184570312, + "y": 184.25674438476562 + }, + { + "x": 652.991943359375, + "y": 184.40061950683594 + }, + { + "x": 732.2374877929688, + "y": 187.64149475097656 + }, + { + "x": 817.6033325195312, + "y": 188.53526306152344 + }, + { + "x": 894.7426147460938, + "y": 186.13449096679688 + }, + { + "x": 970.189208984375, + "y": 197.14227294921875 + }, + { + "x": 1041.04443359375, + "y": 194.3398895263672 + }, + { + "x": 569.9021606445312, + "y": 261.3083190917969 + }, + { + "x": 654.3033447265625, + "y": 264.4016418457031 + }, + { + "x": 735.6945190429688, + "y": 265.27880859375 + }, + { + "x": 815.4567260742188, + "y": 264.9364318847656 + }, + { + "x": 891.3632202148438, + "y": 268.0364074707031 + }, + { + "x": 965.0829467773438, + "y": 270.0639953613281 + }, + { + "x": 1037.499267578125, + "y": 274.4504699707031 + }, + { + "x": 573.3270874023438, + "y": 344.9764099121094 + }, + { + "x": 655.5218505859375, + "y": 346.1289367675781 + }, + { + "x": 731.4202270507812, + "y": 347.6419372558594 + }, + { + "x": 810.3875732421875, + "y": 342.562744140625 + }, + { + "x": 891.5294799804688, + "y": 341.9489440917969 + }, + { + "x": 964.3320922851562, + "y": 347.802734375 + }, + { + "x": 1031.419189453125, + "y": 348.596435546875 + }, + { + "x": 576.043212890625, + "y": 423.88861083984375 + }, + { + "x": 652.819580078125, + "y": 423.9256286621094 + }, + { + "x": 733.5946044921875, + "y": 422.37200927734375 + }, + { + "x": 809.6050415039062, + "y": 423.45355224609375 + }, + { + "x": 886.522705078125, + "y": 425.72393798828125 + }, + { + "x": 956.4827270507812, + "y": 425.83740234375 + }, + { + "x": 1026.778564453125, + "y": 422.2823791503906 + }, + { + "x": 573.3528442382812, + "y": 500.26568603515625 + }, + { + "x": 657.66162109375, + "y": 499.3365478515625 + }, + { + "x": 730.4801635742188, + "y": 497.5675964355469 + }, + { + "x": 810.2607421875, + "y": 499.8580017089844 + }, + { + "x": 880.8391723632812, + "y": 496.2557678222656 + }, + { + "x": 956.5780029296875, + "y": 498.30926513671875 + }, + { + "x": 1016.6289672851562, + "y": 495.3776550292969 + }, + { + "x": 579.4632568359375, + "y": 570.6917114257812 + }, + { + "x": 656.9191284179688, + "y": 564.8662719726562 + }, + { + "x": 726.4585571289062, + "y": 565.6903686523438 + }, + { + "x": 801.6643676757812, + "y": 570.5499877929688 + }, + { + "x": 877.6204223632812, + "y": 567.1550903320312 + }, + { + "x": 948.0767211914062, + "y": 560.6167602539062 + }, + { + "x": 1013.3974609375, + "y": 562.4171142578125 + }, + { + "x": 575.5862426757812, + "y": 637.9110107421875 + }, + { + "x": 658.4505004882812, + "y": 640.99560546875 + }, + { + "x": 728.3056030273438, + "y": 635.2608642578125 + }, + { + "x": 796.9950561523438, + "y": 632.255859375 + }, + { + "x": 868.1610717773438, + "y": 633.25634765625 + }, + { + "x": 938.4750366210938, + "y": 627.9989624023438 + }, + { + "x": 1009.7350463867188, + "y": 620.8723754882812 + } + ], + "reprojectionErrors": [ + { + "x": 2.7078857421875, + "y": 0.8510284423828125 + }, + { + "x": 4.0986328125, + "y": 1.8287200927734375 + }, + { + "x": 5.22283935546875, + "y": -0.2999420166015625 + }, + { + "x": -1.0137939453125, + "y": -0.090118408203125 + }, + { + "x": -0.19952392578125, + "y": 3.4063262939453125 + }, + { + "x": 1.1939697265625, + "y": -6.513031005859375 + }, + { + "x": 6.1243896484375, + "y": -2.628814697265625 + }, + { + "x": 5.9224853515625, + "y": 5.918212890625 + }, + { + "x": 1.94647216796875, + "y": 3.264251708984375 + }, + { + "x": -0.288818359375, + "y": 2.84051513671875 + }, + { + "x": -2.09857177734375, + "y": 3.650299072265625 + }, + { + "x": -1.19342041015625, + "y": 1.031585693359375 + }, + { + "x": 0.817626953125, + "y": -0.500946044921875 + }, + { + "x": 3.1082763671875, + "y": -4.378692626953125 + }, + { + "x": 2.898681640625, + "y": 1.853363037109375 + }, + { + "x": -0.09368896484375, + "y": 0.49859619140625 + }, + { + "x": 1.97918701171875, + "y": -1.1807861328125 + }, + { + "x": -0.18463134765625, + "y": 3.766937255859375 + }, + { + "x": -5.6302490234375, + "y": 4.28338623046875 + }, + { + "x": -3.78607177734375, + "y": -1.634490966796875 + }, + { + "x": 2.7791748046875, + "y": -2.459716796875 + }, + { + "x": 0.5723876953125, + "y": 0.121337890625 + }, + { + "x": 1.80535888671875, + "y": -0.72119140625 + }, + { + "x": -2.15478515625, + "y": 0.0828857421875 + }, + { + "x": -2.483642578125, + "y": -1.693817138671875 + }, + { + "x": -4.79473876953125, + "y": -4.606536865234375 + }, + { + "x": -1.16748046875, + "y": -5.31085205078125 + }, + { + "x": 1.1578369140625, + "y": -2.296600341796875 + }, + { + "x": 3.64166259765625, + "y": -1.410369873046875 + }, + { + "x": -3.822021484375, + "y": -1.85400390625 + }, + { + "x": -0.9547119140625, + "y": -1.3831787109375 + }, + { + "x": -6.149658203125, + "y": -4.8992919921875 + }, + { + "x": -3.1864013671875, + "y": -2.4525146484375 + }, + { + "x": -6.37384033203125, + "y": -5.5931396484375 + }, + { + "x": 5.1878662109375, + "y": -3.6822509765625 + }, + { + "x": -2.100341796875, + "y": 0.7584228515625 + }, + { + "x": -3.84759521484375, + "y": 4.6778564453125 + }, + { + "x": 1.1962890625, + "y": 2.03961181640625 + }, + { + "x": -0.49462890625, + "y": -4.54498291015625 + }, + { + "x": -3.949951171875, + "y": -2.7886962890625 + }, + { + "x": -2.86767578125, + "y": 2.195068359375 + }, + { + "x": 2.43768310546875, + "y": -1.07830810546875 + }, + { + "x": 2.1348876953125, + "y": 3.9638671875 + }, + { + "x": -6.13037109375, + "y": -1.52801513671875 + }, + { + "x": -2.4791259765625, + "y": 1.9073486328125 + }, + { + "x": 1.2999267578125, + "y": 2.717529296875 + }, + { + "x": 1.6170654296875, + "y": -0.37628173828125 + }, + { + "x": 1.85113525390625, + "y": 2.88623046875 + }, + { + "x": 0.251953125, + "y": 8.11358642578125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.03808961618033284, + "y": -0.0558448291653533, + "z": 0.3352929453399535 + }, + "rotation": { + "quaternion": { + "W": 0.9929959650284372, + "X": 0.10623483430848801, + "Y": -0.05155296460049466, + "Z": 0.003932589171414299 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img22.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img22.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 496.90167236328125, + "y": 180.18858337402344 + }, + { + "x": 576.0716552734375, + "y": 180.48109436035156 + }, + { + "x": 654.5433959960938, + "y": 182.5586395263672 + }, + { + "x": 739.9229736328125, + "y": 183.2417755126953 + }, + { + "x": 818.9319458007812, + "y": 180.10865783691406 + }, + { + "x": 897.60302734375, + "y": 192.33856201171875 + }, + { + "x": 972.3505859375, + "y": 186.82083129882812 + }, + { + "x": 494.7805480957031, + "y": 256.5305480957031 + }, + { + "x": 576.227783203125, + "y": 259.4095458984375 + }, + { + "x": 658.4605102539062, + "y": 260.2955322265625 + }, + { + "x": 737.4048461914062, + "y": 260.1699523925781 + }, + { + "x": 815.5501098632812, + "y": 262.7174072265625 + }, + { + "x": 891.7122802734375, + "y": 265.0333557128906 + }, + { + "x": 967.4616088867188, + "y": 269.4796142578125 + }, + { + "x": 497.6109924316406, + "y": 338.8379821777344 + }, + { + "x": 577.4950561523438, + "y": 339.0251770019531 + }, + { + "x": 652.815673828125, + "y": 343.4154968261719 + }, + { + "x": 732.9334106445312, + "y": 337.1315612792969 + }, + { + "x": 816.4934692382812, + "y": 335.75555419921875 + }, + { + "x": 891.6472778320312, + "y": 343.5522155761719 + }, + { + "x": 960.66162109375, + "y": 345.03863525390625 + }, + { + "x": 500.5806579589844, + "y": 415.8655700683594 + }, + { + "x": 576.5330200195312, + "y": 417.3323669433594 + }, + { + "x": 656.0316772460938, + "y": 416.0809631347656 + }, + { + "x": 733.3956909179688, + "y": 417.7634582519531 + }, + { + "x": 811.3900146484375, + "y": 421.1082763671875 + }, + { + "x": 883.5811767578125, + "y": 422.6796569824219 + }, + { + "x": 957.6224365234375, + "y": 419.8225402832031 + }, + { + "x": 497.94921875, + "y": 492.8722229003906 + }, + { + "x": 581.0081787109375, + "y": 491.1355895996094 + }, + { + "x": 657.5335693359375, + "y": 486.70745849609375 + }, + { + "x": 735.7039184570312, + "y": 495.7790832519531 + }, + { + "x": 805.026123046875, + "y": 494.18408203125 + }, + { + "x": 884.5936889648438, + "y": 495.2166748046875 + }, + { + "x": 947.8208618164062, + "y": 493.4390563964844 + }, + { + "x": 507.8065185546875, + "y": 562.6967163085938 + }, + { + "x": 580.1124877929688, + "y": 560.5792846679688 + }, + { + "x": 652.7916259765625, + "y": 560.91796875 + }, + { + "x": 726.9063110351562, + "y": 566.3900146484375 + }, + { + "x": 804.0050048828125, + "y": 562.1632690429688 + }, + { + "x": 877.4757080078125, + "y": 558.1483764648438 + }, + { + "x": 945.1740112304688, + "y": 560.5499877929688 + }, + { + "x": 502.5556945800781, + "y": 628.7926025390625 + }, + { + "x": 578.13916015625, + "y": 626.0761108398438 + }, + { + "x": 657.1475219726562, + "y": 626.3665161132812 + }, + { + "x": 726.9056396484375, + "y": 630.2396240234375 + }, + { + "x": 797.3833618164062, + "y": 628.7064208984375 + }, + { + "x": 868.5999755859375, + "y": 626.1309204101562 + }, + { + "x": 943.6444702148438, + "y": 620.57080078125 + } + ], + "reprojectionErrors": [ + { + "x": -1.749725341796875, + "y": -1.30029296875 + }, + { + "x": 1.15771484375, + "y": -0.19403076171875 + }, + { + "x": 3.94854736328125, + "y": -0.8751068115234375 + }, + { + "x": -0.9337158203125, + "y": -0.1634063720703125 + }, + { + "x": -0.162841796875, + "y": 4.363616943359375 + }, + { + "x": 0.27496337890625, + "y": -6.4727020263671875 + }, + { + "x": 4.01019287109375, + "y": 0.4389801025390625 + }, + { + "x": 2.13671875, + "y": 4.18603515625 + }, + { + "x": 1.3798828125, + "y": 2.27911376953125 + }, + { + "x": -0.95025634765625, + "y": 2.379547119140625 + }, + { + "x": -0.73211669921875, + "y": 3.506072998046875 + }, + { + "x": -0.40875244140625, + "y": 1.97442626953125 + }, + { + "x": 1.24853515625, + "y": 0.689361572265625 + }, + { + "x": 2.7127685546875, + "y": -2.710662841796875 + }, + { + "x": 1.025115966796875, + "y": 0.970001220703125 + }, + { + "x": 0.4833984375, + "y": 1.355499267578125 + }, + { + "x": 3.7431640625, + "y": -2.432403564453125 + }, + { + "x": 1.4898681640625, + "y": 4.4835205078125 + }, + { + "x": -4.87713623046875, + "y": 6.52099609375 + }, + { + "x": -3.4661865234375, + "y": -0.58477783203125 + }, + { + "x": 3.4976806640625, + "y": -1.35101318359375 + }, + { + "x": -0.270294189453125, + "y": 0.410797119140625 + }, + { + "x": 1.80902099609375, + "y": -0.857177734375 + }, + { + "x": -0.3951416015625, + "y": 0.637054443359375 + }, + { + "x": -1.157470703125, + "y": -0.75909423828125 + }, + { + "x": -3.2000732421875, + "y": -3.77447509765625 + }, + { + "x": -0.04779052734375, + "y": -4.973785400390625 + }, + { + "x": 0.68646240234375, + "y": -1.7022705078125 + }, + { + "x": 3.99249267578125, + "y": -2.64263916015625 + }, + { + "x": -2.30950927734375, + "y": -1.057159423828125 + }, + { + "x": -2.7913818359375, + "y": 3.277069091796875 + }, + { + "x": -5.5889892578125, + "y": -5.83203125 + }, + { + "x": -0.167724609375, + "y": -4.21881103515625 + }, + { + "x": -5.5810546875, + "y": -5.178192138671875 + }, + { + "x": 4.7958984375, + "y": -3.27301025390625 + }, + { + "x": -4.274688720703125, + "y": -0.9267578125 + }, + { + "x": -1.0638427734375, + "y": 0.7119140625 + }, + { + "x": 1.08306884765625, + "y": -0.03607177734375 + }, + { + "x": 1.144775390625, + "y": -5.84893798828125 + }, + { + "x": -2.3870849609375, + "y": -1.8956298828125 + }, + { + "x": -2.8616943359375, + "y": 1.9122314453125 + }, + { + "x": 1.90289306640625, + "y": -0.630859375 + }, + { + "x": 2.526580810546875, + "y": 2.2017822265625 + }, + { + "x": 1.25299072265625, + "y": 4.1328125 + }, + { + "x": -4.1146240234375, + "y": 3.1378173828125 + }, + { + "x": -0.8612060546875, + "y": -1.3603515625 + }, + { + "x": 1.08184814453125, + "y": -0.37396240234375 + }, + { + "x": 1.73284912109375, + "y": 1.7318115234375 + }, + { + "x": -1.96087646484375, + "y": 6.898193359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.0631411674036947, + "y": -0.05789006103005941, + "z": 0.3360313720231867 + }, + "rotation": { + "quaternion": { + "W": 0.9927319146077842, + "X": 0.11643894269108965, + "Y": -0.029589776723017623, + "Z": 0.007054321911163654 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img23.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img23.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 536.3659057617188, + "y": 216.2458038330078 + }, + { + "x": 613.6135864257812, + "y": 216.64280700683594 + }, + { + "x": 691.2429809570312, + "y": 219.19772338867188 + }, + { + "x": 774.4144287109375, + "y": 218.77528381347656 + }, + { + "x": 850.1450805664062, + "y": 215.36724853515625 + }, + { + "x": 924.5074462890625, + "y": 225.35772705078125 + }, + { + "x": 994.4862060546875, + "y": 219.69351196289062 + }, + { + "x": 533.2071533203125, + "y": 292.8793029785156 + }, + { + "x": 615.29541015625, + "y": 295.2243957519531 + }, + { + "x": 694.831787109375, + "y": 295.0012512207031 + }, + { + "x": 771.948974609375, + "y": 294.40606689453125 + }, + { + "x": 846.9464721679688, + "y": 295.171630859375 + }, + { + "x": 919.3624877929688, + "y": 296.2357482910156 + }, + { + "x": 990.4380493164062, + "y": 298.5401611328125 + }, + { + "x": 537.6781616210938, + "y": 374.0511474609375 + }, + { + "x": 616.478759765625, + "y": 373.9202575683594 + }, + { + "x": 691.3544311523438, + "y": 375.2989501953125 + }, + { + "x": 768.4108276367188, + "y": 369.3419494628906 + }, + { + "x": 847.5120849609375, + "y": 367.6954650878906 + }, + { + "x": 918.839111328125, + "y": 371.52825927734375 + }, + { + "x": 983.8734130859375, + "y": 371.6773376464844 + }, + { + "x": 540.6524047851562, + "y": 451.4602966308594 + }, + { + "x": 615.1143188476562, + "y": 450.83392333984375 + }, + { + "x": 693.6890869140625, + "y": 447.62969970703125 + }, + { + "x": 769.4658203125, + "y": 446.868896484375 + }, + { + "x": 843.17578125, + "y": 448.4927978515625 + }, + { + "x": 911.547607421875, + "y": 448.60467529296875 + }, + { + "x": 981.2083740234375, + "y": 443.283203125 + }, + { + "x": 539.70556640625, + "y": 524.49560546875 + }, + { + "x": 621.0125732421875, + "y": 523.6305541992188 + }, + { + "x": 691.9357299804688, + "y": 520.7401123046875 + }, + { + "x": 770.1947631835938, + "y": 522.5070190429688 + }, + { + "x": 839.4732666015625, + "y": 516.833740234375 + }, + { + "x": 912.3115234375, + "y": 517.3988647460938 + }, + { + "x": 971.9087524414062, + "y": 514.4249877929688 + }, + { + "x": 547.16552734375, + "y": 595.5346069335938 + }, + { + "x": 620.2647094726562, + "y": 588.445068359375 + }, + { + "x": 688.4993896484375, + "y": 586.5545654296875 + }, + { + "x": 761.775634765625, + "y": 592.0435180664062 + }, + { + "x": 837.0867309570312, + "y": 586.5353393554688 + }, + { + "x": 904.959716796875, + "y": 579.3883056640625 + }, + { + "x": 969.5265502929688, + "y": 578.4092407226562 + }, + { + "x": 542.8661499023438, + "y": 659.4888305664062 + }, + { + "x": 622.1296997070312, + "y": 659.5538940429688 + }, + { + "x": 692.5370483398438, + "y": 653.8893432617188 + }, + { + "x": 760.658935546875, + "y": 652.5299072265625 + }, + { + "x": 830.7026977539062, + "y": 647.6915893554688 + }, + { + "x": 896.8328857421875, + "y": 643.5822143554688 + }, + { + "x": 967.3658447265625, + "y": 636.3028564453125 + } + ], + "reprojectionErrors": [ + { + "x": -0.1695556640625, + "y": 1.9778289794921875 + }, + { + "x": 3.095458984375, + "y": 1.8367767333984375 + }, + { + "x": 4.492431640625, + "y": -0.4520721435546875 + }, + { + "x": -1.06268310546875, + "y": 0.2463836669921875 + }, + { + "x": -0.51470947265625, + "y": 3.94024658203125 + }, + { + "x": 0.1324462890625, + "y": -5.7547149658203125 + }, + { + "x": 3.959228515625, + "y": 0.2145843505859375 + }, + { + "x": 4.4500732421875, + "y": 5.45892333984375 + }, + { + "x": 1.60382080078125, + "y": 2.621002197265625 + }, + { + "x": -0.130615234375, + "y": 2.38677978515625 + }, + { + "x": -0.81256103515625, + "y": 2.558929443359375 + }, + { + "x": -0.6719970703125, + "y": 1.403564453125 + }, + { + "x": 0.81884765625, + "y": -0.01812744140625 + }, + { + "x": 2.48175048828125, + "y": -2.64886474609375 + }, + { + "x": 1.3966064453125, + "y": 1.893218994140625 + }, + { + "x": 0.60003662109375, + "y": 0.82855224609375 + }, + { + "x": 2.33270263671875, + "y": -1.686798095703125 + }, + { + "x": 0.55950927734375, + "y": 3.19036865234375 + }, + { + "x": -4.516845703125, + "y": 3.811920166015625 + }, + { + "x": -3.01361083984375, + "y": -0.992767333984375 + }, + { + "x": 3.6480712890625, + "y": -2.0623779296875 + }, + { + "x": -0.20172119140625, + "y": -0.32281494140625 + }, + { + "x": 2.13385009765625, + "y": -1.5513916015625 + }, + { + "x": -0.9964599609375, + "y": -0.12164306640625 + }, + { + "x": -2.614013671875, + "y": -1.057708740234375 + }, + { + "x": -3.38568115234375, + "y": -4.303619384765625 + }, + { + "x": 0.02130126953125, + "y": -5.96514892578125 + }, + { + "x": 1.03790283203125, + "y": -2.12335205078125 + }, + { + "x": 2.08087158203125, + "y": -0.48712158203125 + }, + { + "x": -3.604736328125, + "y": -2.095703125 + }, + { + "x": -0.21875, + "y": -1.57855224609375 + }, + { + "x": -5.41546630859375, + "y": -5.6219482421875 + }, + { + "x": -2.81658935546875, + "y": -2.1318359375 + }, + { + "x": -4.9033203125, + "y": -4.7899169921875 + }, + { + "x": 5.18133544921875, + "y": -3.821868896484375 + }, + { + "x": -4.0819091796875, + "y": -0.89056396484375 + }, + { + "x": -2.70660400390625, + "y": 3.1448974609375 + }, + { + "x": 2.26031494140625, + "y": 2.10003662109375 + }, + { + "x": 0.9755859375, + "y": -6.2098388671875 + }, + { + "x": -3.4942626953125, + "y": -3.41217041015625 + }, + { + "x": -1.61932373046875, + "y": 1.13104248046875 + }, + { + "x": 2.52252197265625, + "y": -0.39068603515625 + }, + { + "x": 1.47735595703125, + "y": 3.6378173828125 + }, + { + "x": -4.4302978515625, + "y": -0.0257568359375 + }, + { + "x": -2.7169189453125, + "y": 2.1759033203125 + }, + { + "x": 0.1072998046875, + "y": 0.20318603515625 + }, + { + "x": -0.10736083984375, + "y": 1.83551025390625 + }, + { + "x": 2.5294189453125, + "y": 2.86077880859375 + }, + { + "x": -0.24639892578125, + "y": 7.173828125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.05115239535270584, + "y": -0.04644049728835041, + "z": 0.34123167658566256 + }, + "rotation": { + "quaternion": { + "W": 0.9920023900544179, + "X": 0.11028782408547343, + "Y": -0.06138181252087999, + "Z": 3.564778614029351E-4 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img24.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img24.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 433.4754943847656, + "y": 95.313232421875 + }, + { + "x": 494.08331298828125, + "y": 95.5611343383789 + }, + { + "x": 554.4951171875, + "y": 98.11689758300781 + }, + { + "x": 621.815185546875, + "y": 100.25017547607422 + }, + { + "x": 682.9247436523438, + "y": 95.7226333618164 + }, + { + "x": 744.6556396484375, + "y": 105.61736297607422 + }, + { + "x": 804.6034545898438, + "y": 102.10665130615234 + }, + { + "x": 429.7712707519531, + "y": 155.34228515625 + }, + { + "x": 493.2568054199219, + "y": 156.38719177246094 + }, + { + "x": 559.3436889648438, + "y": 158.36610412597656 + }, + { + "x": 617.5258178710938, + "y": 157.80137634277344 + }, + { + "x": 679.7096557617188, + "y": 160.0205535888672 + }, + { + "x": 739.5127563476562, + "y": 161.83688354492188 + }, + { + "x": 801.2481689453125, + "y": 166.61819458007812 + }, + { + "x": 430.7851257324219, + "y": 218.7726593017578 + }, + { + "x": 495.416259765625, + "y": 221.5185089111328 + }, + { + "x": 551.6145629882812, + "y": 221.67459106445312 + }, + { + "x": 612.9629516601562, + "y": 216.58740234375 + }, + { + "x": 680.4400024414062, + "y": 215.9799346923828 + }, + { + "x": 740.0155639648438, + "y": 223.31060791015625 + }, + { + "x": 795.9515991210938, + "y": 224.71490478515625 + }, + { + "x": 431.0885009765625, + "y": 280.0037841796875 + }, + { + "x": 491.1604309082031, + "y": 280.52734375 + }, + { + "x": 553.3179931640625, + "y": 278.5675354003906 + }, + { + "x": 615.5528564453125, + "y": 279.503662109375 + }, + { + "x": 676.7131958007812, + "y": 284.2506103515625 + }, + { + "x": 733.4696044921875, + "y": 286.16375732421875 + }, + { + "x": 795.3604736328125, + "y": 284.56884765625 + }, + { + "x": 427.432861328125, + "y": 343.1767883300781 + }, + { + "x": 494.67047119140625, + "y": 340.76318359375 + }, + { + "x": 551.6943969726562, + "y": 339.70867919921875 + }, + { + "x": 616.5397338867188, + "y": 343.3030700683594 + }, + { + "x": 674.1482543945312, + "y": 340.2166442871094 + }, + { + "x": 737.3417358398438, + "y": 345.00653076171875 + }, + { + "x": 787.7251586914062, + "y": 344.030029296875 + }, + { + "x": 435.23516845703125, + "y": 401.0072021484375 + }, + { + "x": 494.07232666015625, + "y": 395.5848083496094 + }, + { + "x": 550.4994506835938, + "y": 396.55145263671875 + }, + { + "x": 609.1870727539062, + "y": 402.71685791015625 + }, + { + "x": 674.4990234375, + "y": 401.2750549316406 + }, + { + "x": 731.37646484375, + "y": 396.55157470703125 + }, + { + "x": 789.4944458007812, + "y": 401.58282470703125 + }, + { + "x": 429.0373840332031, + "y": 458.6076965332031 + }, + { + "x": 496.1744079589844, + "y": 458.529541015625 + }, + { + "x": 553.0621337890625, + "y": 454.4842224121094 + }, + { + "x": 610.6058959960938, + "y": 456.6003112792969 + }, + { + "x": 669.3978271484375, + "y": 453.8147888183594 + }, + { + "x": 728.6937255859375, + "y": 456.06463623046875 + }, + { + "x": 789.1981811523438, + "y": 450.6876220703125 + } + ], + "reprojectionErrors": [ + { + "x": -5.372772216796875, + "y": -6.570549011230469 + }, + { + "x": -1.36456298828125, + "y": -4.39788818359375 + }, + { + "x": 1.8905029296875, + "y": -4.572486877441406 + }, + { + "x": -2.668701171875, + "y": -4.362274169921875 + }, + { + "x": -1.88189697265625, + "y": 2.472686767578125 + }, + { + "x": -2.54132080078125, + "y": -5.149116516113281 + }, + { + "x": -2.20458984375, + "y": 0.60150146484375 + }, + { + "x": -0.42706298828125, + "y": -1.4219512939453125 + }, + { + "x": -0.083099365234375, + "y": -0.551116943359375 + }, + { + "x": -3.2669677734375, + "y": -0.63824462890625 + }, + { + "x": 0.56939697265625, + "y": 1.7954864501953125 + }, + { + "x": -0.44024658203125, + "y": 1.423675537109375 + }, + { + "x": 0.12506103515625, + "y": 1.4341583251953125 + }, + { + "x": -2.01080322265625, + "y": -1.5398712158203125 + }, + { + "x": -0.219451904296875, + "y": -1.2421722412109375 + }, + { + "x": -1.79315185546875, + "y": -2.55389404296875 + }, + { + "x": 4.1614990234375, + "y": -1.285247802734375 + }, + { + "x": 4.102294921875, + "y": 5.2179718017578125 + }, + { + "x": -2.91015625, + "y": 7.2334442138671875 + }, + { + "x": -2.808349609375, + "y": 1.3033905029296875 + }, + { + "x": 0.181640625, + "y": 1.2929534912109375 + }, + { + "x": 0.6790771484375, + "y": -0.387908935546875 + }, + { + "x": 2.906585693359375, + "y": 0.063232421875 + }, + { + "x": 2.16534423828125, + "y": 3.0020751953125 + }, + { + "x": 0.5032958984375, + "y": 3.049560546875 + }, + { + "x": -0.88983154296875, + "y": -0.708953857421875 + }, + { + "x": 1.35186767578125, + "y": -1.62860107421875 + }, + { + "x": -2.2752685546875, + "y": 0.965118408203125 + }, + { + "x": 5.51751708984375, + "y": -2.958953857421875 + }, + { + "x": -0.164886474609375, + "y": -0.008880615234375 + }, + { + "x": 3.5040283203125, + "y": 1.599365234375 + }, + { + "x": -1.47235107421875, + "y": -1.424163818359375 + }, + { + "x": 9.765625E-4, + "y": 2.250091552734375 + }, + { + "x": -4.8623046875, + "y": -1.935150146484375 + }, + { + "x": 2.36676025390625, + "y": -0.3372802734375 + }, + { + "x": -1.120697021484375, + "y": -1.630767822265625 + }, + { + "x": 0.8665771484375, + "y": 3.910125732421875 + }, + { + "x": 4.421630859375, + "y": 3.091461181640625 + }, + { + "x": 4.9112548828125, + "y": -2.897003173828125 + }, + { + "x": -1.992431640625, + "y": -1.249847412109375 + }, + { + "x": -1.19635009765625, + "y": 3.7069091796875 + }, + { + "x": -2.3424072265625, + "y": -1.063568115234375 + }, + { + "x": 6.22296142578125, + "y": -1.47735595703125 + }, + { + "x": -0.807342529296875, + "y": -1.679290771484375 + }, + { + "x": 1.58892822265625, + "y": 2.126953125 + }, + { + "x": 2.542724609375, + "y": -0.188140869140625 + }, + { + "x": 1.496826171875, + "y": 2.4376220703125 + }, + { + "x": -0.77117919921875, + "y": 0.06640625 + }, + { + "x": -4.9337158203125, + "y": 5.3597412109375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.10784268311723734, + "y": -0.11009200981289043, + "z": 0.43141509491681673 + }, + "rotation": { + "quaternion": { + "W": 0.9923805423077965, + "X": 0.10744473968463542, + "Y": -0.05945598363149694, + "Z": 0.010073389369814086 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img25.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img25.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 479.5578918457031, + "y": 285.57080078125 + }, + { + "x": 541.6517333984375, + "y": 284.3951416015625 + }, + { + "x": 604.0822143554688, + "y": 284.6913146972656 + }, + { + "x": 669.5983276367188, + "y": 282.50634765625 + }, + { + "x": 729.8031005859375, + "y": 278.21380615234375 + }, + { + "x": 789.7947998046875, + "y": 283.70013427734375 + }, + { + "x": 846.1875, + "y": 276.44647216796875 + }, + { + "x": 478.1470642089844, + "y": 347.4021911621094 + }, + { + "x": 543.3133544921875, + "y": 346.9296569824219 + }, + { + "x": 606.2665405273438, + "y": 344.6123046875 + }, + { + "x": 667.8724365234375, + "y": 341.4346923828125 + }, + { + "x": 725.350341796875, + "y": 339.0854797363281 + }, + { + "x": 784.8245239257812, + "y": 338.1808776855469 + }, + { + "x": 841.767578125, + "y": 339.4910583496094 + }, + { + "x": 482.1253356933594, + "y": 410.59716796875 + }, + { + "x": 544.4864501953125, + "y": 408.806396484375 + }, + { + "x": 602.9764404296875, + "y": 408.2196350097656 + }, + { + "x": 664.0632934570312, + "y": 400.5096740722656 + }, + { + "x": 726.3397216796875, + "y": 397.2743835449219 + }, + { + "x": 783.4556884765625, + "y": 397.6815490722656 + }, + { + "x": 836.9988403320312, + "y": 394.44940185546875 + }, + { + "x": 484.4692687988281, + "y": 471.9283142089844 + }, + { + "x": 544.4682006835938, + "y": 467.6979675292969 + }, + { + "x": 605.3056640625, + "y": 463.3526916503906 + }, + { + "x": 664.471435546875, + "y": 461.231689453125 + }, + { + "x": 722.5819091796875, + "y": 458.79486083984375 + }, + { + "x": 777.4507446289062, + "y": 457.2458190917969 + }, + { + "x": 834.1145629882812, + "y": 451.9128723144531 + }, + { + "x": 486.5080261230469, + "y": 526.134521484375 + }, + { + "x": 549.1984252929688, + "y": 525.209228515625 + }, + { + "x": 605.136474609375, + "y": 519.9506225585938 + }, + { + "x": 666.3236083984375, + "y": 518.9425048828125 + }, + { + "x": 719.1624145507812, + "y": 513.914794921875 + }, + { + "x": 778.6446533203125, + "y": 510.68304443359375 + }, + { + "x": 826.4580688476562, + "y": 505.6636962890625 + }, + { + "x": 493.1802673339844, + "y": 585.5757446289062 + }, + { + "x": 549.2931518554688, + "y": 575.2445068359375 + }, + { + "x": 603.0703125, + "y": 571.8407592773438 + }, + { + "x": 660.5741577148438, + "y": 572.795654296875 + }, + { + "x": 716.2329711914062, + "y": 563.714111328125 + }, + { + "x": 772.8939208984375, + "y": 559.4797973632812 + }, + { + "x": 826.16455078125, + "y": 557.085205078125 + }, + { + "x": 493.88739013671875, + "y": 628.6552124023438 + }, + { + "x": 552.2191772460938, + "y": 631.7279663085938 + }, + { + "x": 606.2001342773438, + "y": 624.2898559570312 + }, + { + "x": 660.8984375, + "y": 620.362548828125 + }, + { + "x": 714.0171508789062, + "y": 616.0308227539062 + }, + { + "x": 769.6084594726562, + "y": 609.6541748046875 + }, + { + "x": 825.1629028320312, + "y": 600.3203735351562 + } + ], + "reprojectionErrors": [ + { + "x": -1.611602783203125, + "y": 1.775115966796875 + }, + { + "x": 1.32220458984375, + "y": 1.5714111328125 + }, + { + "x": 2.2657470703125, + "y": -0.040771484375 + }, + { + "x": -1.445556640625, + "y": 0.888702392578125 + }, + { + "x": -1.3355712890625, + "y": 3.983612060546875 + }, + { + "x": -2.42822265625, + "y": -2.644989013671875 + }, + { + "x": -1.2679443359375, + "y": 3.519439697265625 + }, + { + "x": 1.75823974609375, + "y": 2.748077392578125 + }, + { + "x": 0.561767578125, + "y": 1.058197021484375 + }, + { + "x": -0.0224609375, + "y": 1.302398681640625 + }, + { + "x": -0.779541015625, + "y": 2.4920654296875 + }, + { + "x": 1.14703369140625, + "y": 2.934783935546875 + }, + { + "x": -0.295654296875, + "y": 2.010833740234375 + }, + { + "x": -0.51336669921875, + "y": -1.053314208984375 + }, + { + "x": -0.325286865234375, + "y": 0.343902587890625 + }, + { + "x": 0.25531005859375, + "y": -0.760711669921875 + }, + { + "x": 3.156494140625, + "y": -2.956451416015625 + }, + { + "x": 1.98779296875, + "y": 2.07879638671875 + }, + { + "x": -1.77099609375, + "y": 2.742431640625 + }, + { + "x": -1.70135498046875, + "y": -0.137847900390625 + }, + { + "x": 0.67327880859375, + "y": 0.715606689453125 + }, + { + "x": -0.836090087890625, + "y": -2.12774658203125 + }, + { + "x": 1.10693359375, + "y": -1.47882080078125 + }, + { + "x": 0.70928955078125, + "y": -0.580596923828125 + }, + { + "x": 0.55523681640625, + "y": -1.77825927734375 + }, + { + "x": 0.09814453125, + "y": -2.53729248046875 + }, + { + "x": 1.5899658203125, + "y": -4.066650390625 + }, + { + "x": 0.0557861328125, + "y": -1.69952392578125 + }, + { + "x": -1.100860595703125, + "y": 0.6722412109375 + }, + { + "x": -2.82171630859375, + "y": -2.62603759765625 + }, + { + "x": 0.75390625, + "y": -1.43701171875 + }, + { + "x": -2.304443359375, + "y": -4.351318359375 + }, + { + "x": 1.66754150390625, + "y": -3.105224609375 + }, + { + "x": -2.2587890625, + "y": -3.520263671875 + }, + { + "x": 4.28802490234375, + "y": -2.018524169921875 + }, + { + "x": -6.055877685546875, + "y": -3.5421142578125 + }, + { + "x": -2.1453857421875, + "y": 1.96453857421875 + }, + { + "x": 2.689208984375, + "y": 0.71551513671875 + }, + { + "x": 2.45379638671875, + "y": -4.72784423828125 + }, + { + "x": 2.7841796875, + "y": 0.0225830078125 + }, + { + "x": 0.89373779296875, + "y": 0.07635498046875 + }, + { + "x": 1.2320556640625, + "y": -1.565185546875 + }, + { + "x": -5.100311279296875, + "y": 6.89599609375 + }, + { + "x": -4.3297119140625, + "y": -1.56378173828125 + }, + { + "x": -0.57733154296875, + "y": 0.6754150390625 + }, + { + "x": 1.154052734375, + "y": -0.416259765625 + }, + { + "x": 3.22308349609375, + "y": -0.9312744140625 + }, + { + "x": 1.63580322265625, + "y": 0.76373291015625 + }, + { + "x": -1.04351806640625, + "y": 5.57421875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.08654776024751502, + "y": -0.030792702984819065, + "z": 0.4246055831352314 + }, + "rotation": { + "quaternion": { + "W": 0.9840323741322805, + "X": 0.1403893509093247, + "Y": -0.10938309954936658, + "Z": -0.002540540064515506 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img26.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img26.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 783.3204956054688, + "y": 278.88311767578125 + }, + { + "x": 781.02197265625, + "y": 341.51898193359375 + }, + { + "x": 779.1356811523438, + "y": 398.15911865234375 + }, + { + "x": 778.5061645507812, + "y": 455.4443054199219 + }, + { + "x": 772.5657958984375, + "y": 511.3593444824219 + }, + { + "x": 774.9310302734375, + "y": 561.4299926757812 + }, + { + "x": 776.3451538085938, + "y": 606.7655639648438 + }, + { + "x": 724.4436645507812, + "y": 285.47607421875 + }, + { + "x": 721.6611938476562, + "y": 344.1449279785156 + }, + { + "x": 721.8681640625, + "y": 400.8299865722656 + }, + { + "x": 720.484619140625, + "y": 462.6114196777344 + }, + { + "x": 723.4139404296875, + "y": 515.7513427734375 + }, + { + "x": 720.0769653320312, + "y": 566.5635986328125 + }, + { + "x": 717.646484375, + "y": 615.1173095703125 + }, + { + "x": 664.9207153320312, + "y": 282.8747253417969 + }, + { + "x": 663.5867919921875, + "y": 346.3428649902344 + }, + { + "x": 666.1111450195312, + "y": 402.6453552246094 + }, + { + "x": 665.0734252929688, + "y": 465.76007080078125 + }, + { + "x": 664.6199951171875, + "y": 519.2368774414062 + }, + { + "x": 664.76123046875, + "y": 571.7578125 + }, + { + "x": 663.901611328125, + "y": 622.9234008789062 + }, + { + "x": 604.4766845703125, + "y": 290.1486511230469 + }, + { + "x": 603.0221557617188, + "y": 349.78704833984375 + }, + { + "x": 602.3756713867188, + "y": 407.95477294921875 + }, + { + "x": 605.8446044921875, + "y": 468.34539794921875 + }, + { + "x": 609.5810546875, + "y": 526.581298828125 + }, + { + "x": 607.4769897460938, + "y": 578.9547119140625 + }, + { + "x": 609.4087524414062, + "y": 628.3349609375 + }, + { + "x": 537.4153442382812, + "y": 293.7554016113281 + }, + { + "x": 542.6644897460938, + "y": 353.6613464355469 + }, + { + "x": 541.9326782226562, + "y": 415.9395446777344 + }, + { + "x": 546.4143676757812, + "y": 472.287841796875 + }, + { + "x": 548.6455688476562, + "y": 528.2443237304688 + }, + { + "x": 549.4239501953125, + "y": 580.9837036132812 + }, + { + "x": 554.636474609375, + "y": 632.4649047851562 + }, + { + "x": 475.4874267578125, + "y": 295.03363037109375 + }, + { + "x": 479.4070739746094, + "y": 357.1073913574219 + }, + { + "x": 482.5049133300781, + "y": 418.2469482421875 + }, + { + "x": 485.0036315917969, + "y": 477.5799255371094 + }, + { + "x": 492.3569030761719, + "y": 534.3683471679688 + }, + { + "x": 495.9598693847656, + "y": 583.1114501953125 + }, + { + "x": 502.73663330078125, + "y": 642.512451171875 + }, + { + "x": 414.5941467285156, + "y": 297.4508361816406 + }, + { + "x": 415.298583984375, + "y": 359.4137878417969 + }, + { + "x": 421.28533935546875, + "y": 421.4498596191406 + }, + { + "x": 426.9276428222656, + "y": 482.4071960449219 + }, + { + "x": 429.32757568359375, + "y": 537.328857421875 + }, + { + "x": 436.074951171875, + "y": 592.604736328125 + }, + { + "x": 438.7225646972656, + "y": 642.7362670898438 + } + ], + "reprojectionErrors": [ + { + "x": -2.37042236328125, + "y": 4.7103271484375 + }, + { + "x": -1.18524169921875, + "y": 0.437957763671875 + }, + { + "x": -0.34674072265625, + "y": 0.5467529296875 + }, + { + "x": -0.70263671875, + "y": -1.518798828125 + }, + { + "x": 4.3118896484375, + "y": -3.66375732421875 + }, + { + "x": 1.0777587890625, + "y": -1.33935546875 + }, + { + "x": -1.15081787109375, + "y": 4.414794921875 + }, + { + "x": -1.6712646484375, + "y": 0.57080078125 + }, + { + "x": 0.8287353515625, + "y": 0.86968994140625 + }, + { + "x": 0.37554931640625, + "y": 1.50347900390625 + }, + { + "x": 1.54754638671875, + "y": -4.5201416015625 + }, + { + "x": -1.56024169921875, + "y": -3.38128662109375 + }, + { + "x": 1.63006591796875, + "y": -1.31719970703125 + }, + { + "x": 3.94427490234375, + "y": 1.67486572265625 + }, + { + "x": -1.6480712890625, + "y": 5.66656494140625 + }, + { + "x": 0.27203369140625, + "y": 1.779266357421875 + }, + { + "x": -1.6610107421875, + "y": 3.373504638671875 + }, + { + "x": -0.0269775390625, + "y": -3.438079833984375 + }, + { + "x": 1.02789306640625, + "y": -2.12103271484375 + }, + { + "x": 1.49310302734375, + "y": -1.27838134765625 + }, + { + "x": 2.9642333984375, + "y": -0.4371337890625 + }, + { + "x": -2.05853271484375, + "y": 0.928955078125 + }, + { + "x": 0.89013671875, + "y": 1.49346923828125 + }, + { + "x": 3.00274658203125, + "y": 1.808441162109375 + }, + { + "x": 0.97357177734375, + "y": -1.726470947265625 + }, + { + "x": -1.3477783203125, + "y": -4.6468505859375 + }, + { + "x": 2.1480712890625, + "y": -3.1636962890625 + }, + { + "x": 1.58624267578125, + "y": -0.0706787109375 + }, + { + "x": 2.75994873046875, + "y": -0.09869384765625 + }, + { + "x": -0.04620361328125, + "y": 0.829498291015625 + }, + { + "x": 3.0654296875, + "y": -2.371795654296875 + }, + { + "x": 0.9039306640625, + "y": -1.304443359375 + }, + { + "x": 0.93658447265625, + "y": -1.4171142578125 + }, + { + "x": 2.3687744140625, + "y": 0.198974609375 + }, + { + "x": -0.68359375, + "y": 1.66278076171875 + }, + { + "x": 1.02197265625, + "y": 1.245880126953125 + }, + { + "x": 0.53692626953125, + "y": 0.6468505859375 + }, + { + "x": 0.77313232421875, + "y": -0.813262939453125 + }, + { + "x": 1.513397216796875, + "y": -2.16314697265625 + }, + { + "x": -2.690765380859375, + "y": -2.57281494140625 + }, + { + "x": -3.229705810546875, + "y": 3.54443359375 + }, + { + "x": -7.02301025390625, + "y": -2.4344482421875 + }, + { + "x": -3.209136962890625, + "y": 1.496185302734375 + }, + { + "x": 0.55706787109375, + "y": 1.65802001953125 + }, + { + "x": -1.099334716796875, + "y": -0.087554931640625 + }, + { + "x": -2.54388427734375, + "y": -2.48681640625 + }, + { + "x": -0.8714599609375, + "y": -0.4879150390625 + }, + { + "x": -3.665252685546875, + "y": -0.3924560546875 + }, + { + "x": -2.4718017578125, + "y": 3.380615234375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.0352185619825597, + "y": -0.0348939936178775, + "z": 0.45930013796652375 + }, + "rotation": { + "quaternion": { + "W": 0.7077379341463763, + "X": 0.01967183457295502, + "Y": -0.16238107757854447, + "Z": 0.6872789980344114 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img27.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img27.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 727.69970703125, + "y": 251.98330688476562 + }, + { + "x": 728.5887451171875, + "y": 313.1991882324219 + }, + { + "x": 729.3826904296875, + "y": 373.1026611328125 + }, + { + "x": 732.3643798828125, + "y": 430.1681823730469 + }, + { + "x": 729.5576782226562, + "y": 488.5151672363281 + }, + { + "x": 734.4747924804688, + "y": 539.033447265625 + }, + { + "x": 738.4476318359375, + "y": 587.46484375 + }, + { + "x": 669.4312744140625, + "y": 260.23846435546875 + }, + { + "x": 669.2926635742188, + "y": 318.2181701660156 + }, + { + "x": 672.6626586914062, + "y": 377.27337646484375 + }, + { + "x": 673.712646484375, + "y": 438.45635986328125 + }, + { + "x": 678.9703979492188, + "y": 494.2736511230469 + }, + { + "x": 678.8840942382812, + "y": 545.9673461914062 + }, + { + "x": 680.2135620117188, + "y": 597.4259033203125 + }, + { + "x": 608.0375366210938, + "y": 258.70361328125 + }, + { + "x": 609.33447265625, + "y": 322.7178039550781 + }, + { + "x": 614.7398071289062, + "y": 379.6925354003906 + }, + { + "x": 617.1195068359375, + "y": 444.29022216796875 + }, + { + "x": 619.2546997070312, + "y": 498.7857360839844 + }, + { + "x": 623.1187133789062, + "y": 554.14111328125 + }, + { + "x": 624.5249633789062, + "y": 605.1906127929688 + }, + { + "x": 547.264892578125, + "y": 268.0393981933594 + }, + { + "x": 549.9931030273438, + "y": 325.882568359375 + }, + { + "x": 550.3645629882812, + "y": 387.302001953125 + }, + { + "x": 556.5979614257812, + "y": 448.4434814453125 + }, + { + "x": 563.5216674804688, + "y": 507.67132568359375 + }, + { + "x": 564.3320922851562, + "y": 560.8143920898438 + }, + { + "x": 568.8651733398438, + "y": 612.459228515625 + }, + { + "x": 480.3151550292969, + "y": 273.5879821777344 + }, + { + "x": 488.244384765625, + "y": 334.3355712890625 + }, + { + "x": 489.4550476074219, + "y": 397.38616943359375 + }, + { + "x": 497.4985046386719, + "y": 454.3977966308594 + }, + { + "x": 501.9781188964844, + "y": 510.7481384277344 + }, + { + "x": 505.17572021484375, + "y": 565.0245971679688 + }, + { + "x": 513.4757080078125, + "y": 617.6184692382812 + }, + { + "x": 418.3878479003906, + "y": 277.46771240234375 + }, + { + "x": 424.51171875, + "y": 339.639892578125 + }, + { + "x": 430.8940734863281, + "y": 401.5929870605469 + }, + { + "x": 435.3111267089844, + "y": 461.38916015625 + }, + { + "x": 445.1687927246094, + "y": 518.531982421875 + }, + { + "x": 451.4403076171875, + "y": 568.3426513671875 + }, + { + "x": 457.0606689453125, + "y": 626.3551635742188 + }, + { + "x": 358.1756591796875, + "y": 282.10955810546875 + }, + { + "x": 360.7490539550781, + "y": 343.88201904296875 + }, + { + "x": 369.76983642578125, + "y": 405.91119384765625 + }, + { + "x": 378.3425598144531, + "y": 468.311279296875 + }, + { + "x": 381.53045654296875, + "y": 524.3782958984375 + }, + { + "x": 391.8509826660156, + "y": 579.1883544921875 + }, + { + "x": 397.34747314453125, + "y": 630.2002563476562 + } + ], + "reprojectionErrors": [ + { + "x": -2.1512451171875, + "y": 4.745086669921875 + }, + { + "x": -0.948486328125, + "y": 2.657928466796875 + }, + { + "x": 0.3236083984375, + "y": 0.412200927734375 + }, + { + "x": -0.61614990234375, + "y": -0.39288330078125 + }, + { + "x": 4.2098388671875, + "y": -3.8074951171875 + }, + { + "x": 1.2908935546875, + "y": -0.65643310546875 + }, + { + "x": -0.70355224609375, + "y": 3.37957763671875 + }, + { + "x": -2.8253173828125, + "y": 0.567779541015625 + }, + { + "x": 0.1900634765625, + "y": 2.24932861328125 + }, + { + "x": -0.355712890625, + "y": 1.35699462890625 + }, + { + "x": 1.36895751953125, + "y": -3.085968017578125 + }, + { + "x": -1.1611328125, + "y": -3.51507568359375 + }, + { + "x": 1.60858154296875, + "y": -1.10577392578125 + }, + { + "x": 2.92059326171875, + "y": 0.31610107421875 + }, + { + "x": -1.576904296875, + "y": 6.25323486328125 + }, + { + "x": 0.819091796875, + "y": 2.43853759765625 + }, + { + "x": -0.97406005859375, + "y": 4.1368408203125 + }, + { + "x": 0.18194580078125, + "y": -3.236663818359375 + }, + { + "x": 1.50994873046875, + "y": -1.88409423828125 + }, + { + "x": 1.0404052734375, + "y": -2.69915771484375 + }, + { + "x": 2.9635009765625, + "y": -0.45196533203125 + }, + { + "x": -2.17669677734375, + "y": 1.1422119140625 + }, + { + "x": -0.363525390625, + "y": 4.04241943359375 + }, + { + "x": 3.6959228515625, + "y": 1.811309814453125 + }, + { + "x": 1.78857421875, + "y": -1.61724853515625 + }, + { + "x": -0.90838623046875, + "y": -4.533050537109375 + }, + { + "x": 2.41351318359375, + "y": -2.69482421875 + }, + { + "x": 1.923095703125, + "y": -0.62347412109375 + }, + { + "x": 2.148681640625, + "y": -0.106109619140625 + }, + { + "x": -0.35723876953125, + "y": 0.4393310546875 + }, + { + "x": 3.713531494140625, + "y": -2.902496337890625 + }, + { + "x": 0.816925048828125, + "y": -1.707916259765625 + }, + { + "x": 1.356414794921875, + "y": -1.278106689453125 + }, + { + "x": 3.05657958984375, + "y": -0.128662109375 + }, + { + "x": -0.46099853515625, + "y": 1.41650390625 + }, + { + "x": 0.17449951171875, + "y": 0.391357421875 + }, + { + "x": 0.39044189453125, + "y": 0.067626953125 + }, + { + "x": 0.1729736328125, + "y": -1.651092529296875 + }, + { + "x": 1.7548828125, + "y": -2.743133544921875 + }, + { + "x": -2.261383056640625, + "y": -2.63360595703125 + }, + { + "x": -2.8411865234375, + "y": 3.429931640625 + }, + { + "x": -2.912139892578125, + "y": -0.01751708984375 + }, + { + "x": -4.817657470703125, + "y": 0.205108642578125 + }, + { + "x": -0.09893798828125, + "y": 0.842315673828125 + }, + { + "x": -2.037322998046875, + "y": -0.42169189453125 + }, + { + "x": -3.7265625, + "y": -3.6151123046875 + }, + { + "x": -0.219879150390625, + "y": -1.95343017578125 + }, + { + "x": -4.025299072265625, + "y": -0.4373779296875 + }, + { + "x": -3.177337646484375, + "y": 3.54510498046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.011645387063703185, + "y": -0.04617861550107845, + "z": 0.458660302276663 + }, + "rotation": { + "quaternion": { + "W": 0.7218738439925539, + "X": 0.014235942235431776, + "Y": -0.14506568662492048, + "Z": 0.6764993997574009 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img28.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img28.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 714.7217407226562, + "y": 261.3623962402344 + }, + { + "x": 714.9761352539062, + "y": 322.56231689453125 + }, + { + "x": 715.37060546875, + "y": 383.07940673828125 + }, + { + "x": 717.4661865234375, + "y": 440.1640319824219 + }, + { + "x": 713.818359375, + "y": 499.1203918457031 + }, + { + "x": 718.4913940429688, + "y": 549.3839111328125 + }, + { + "x": 722.4346923828125, + "y": 597.6913452148438 + }, + { + "x": 656.1857299804688, + "y": 269.058837890625 + }, + { + "x": 655.21337890625, + "y": 327.5384216308594 + }, + { + "x": 658.2003173828125, + "y": 387.120849609375 + }, + { + "x": 658.4746704101562, + "y": 448.6262512207031 + }, + { + "x": 662.693115234375, + "y": 503.7342224121094 + }, + { + "x": 662.5946044921875, + "y": 556.3877563476562 + }, + { + "x": 663.4678955078125, + "y": 607.413330078125 + }, + { + "x": 594.3197021484375, + "y": 267.21038818359375 + }, + { + "x": 595.1476440429688, + "y": 331.9151916503906 + }, + { + "x": 599.5582885742188, + "y": 389.5195007324219 + }, + { + "x": 601.2566528320312, + "y": 453.7110595703125 + }, + { + "x": 603.3103637695312, + "y": 508.6014709472656 + }, + { + "x": 606.1932373046875, + "y": 563.6334228515625 + }, + { + "x": 608.2056884765625, + "y": 614.7018432617188 + }, + { + "x": 532.8916015625, + "y": 276.2335205078125 + }, + { + "x": 534.5430297851562, + "y": 334.9313049316406 + }, + { + "x": 534.676513671875, + "y": 396.25634765625 + }, + { + "x": 540.9739379882812, + "y": 457.5440368652344 + }, + { + "x": 547.3367309570312, + "y": 517.496337890625 + }, + { + "x": 547.5182495117188, + "y": 570.57666015625 + }, + { + "x": 551.7821044921875, + "y": 621.891357421875 + }, + { + "x": 465.1233825683594, + "y": 281.3941955566406 + }, + { + "x": 472.6804504394531, + "y": 342.6252746582031 + }, + { + "x": 473.7974853515625, + "y": 405.5103454589844 + }, + { + "x": 481.4531555175781, + "y": 463.57415771484375 + }, + { + "x": 485.3420715332031, + "y": 519.8507690429688 + }, + { + "x": 486.9972229003906, + "y": 573.8087768554688 + }, + { + "x": 496.1806945800781, + "y": 626.839599609375 + }, + { + "x": 402.6141052246094, + "y": 284.6163330078125 + }, + { + "x": 409.0479736328125, + "y": 346.7567443847656 + }, + { + "x": 414.0392761230469, + "y": 409.47906494140625 + }, + { + "x": 418.33447265625, + "y": 470.25555419921875 + }, + { + "x": 428.0187683105469, + "y": 527.4412841796875 + }, + { + "x": 434.4251403808594, + "y": 576.8797607421875 + }, + { + "x": 440.27972412109375, + "y": 636.0732421875 + }, + { + "x": 342.23992919921875, + "y": 288.6751403808594 + }, + { + "x": 344.4543151855469, + "y": 351.534423828125 + }, + { + "x": 352.54248046875, + "y": 414.2159423828125 + }, + { + "x": 360.9427795410156, + "y": 476.4267883300781 + }, + { + "x": 364.242431640625, + "y": 532.7156372070312 + }, + { + "x": 373.8011779785156, + "y": 587.5000610351562 + }, + { + "x": 378.4169006347656, + "y": 640.05029296875 + } + ], + "reprojectionErrors": [ + { + "x": -2.6632080078125, + "y": 5.238677978515625 + }, + { + "x": -1.29022216796875, + "y": 3.220245361328125 + }, + { + "x": -0.0714111328125, + "y": 0.421295166015625 + }, + { + "x": -0.566650390625, + "y": -0.33538818359375 + }, + { + "x": 4.66943359375, + "y": -4.2852783203125 + }, + { + "x": 1.5736083984375, + "y": -0.7991943359375 + }, + { + "x": -0.80267333984375, + "y": 3.44677734375 + }, + { + "x": -3.2744140625, + "y": 1.145538330078125 + }, + { + "x": 0.10595703125, + "y": 2.42901611328125 + }, + { + "x": -0.5135498046875, + "y": 1.116668701171875 + }, + { + "x": 1.54132080078125, + "y": -3.536376953125 + }, + { + "x": -0.38397216796875, + "y": -3.139190673828125 + }, + { + "x": 1.9736328125, + "y": -1.56842041015625 + }, + { + "x": 3.3272705078125, + "y": 0.411865234375 + }, + { + "x": -1.84954833984375, + "y": 6.665130615234375 + }, + { + "x": 0.5445556640625, + "y": 2.3125 + }, + { + "x": -0.71258544921875, + "y": 3.53704833984375 + }, + { + "x": 0.67755126953125, + "y": -3.2716064453125 + }, + { + "x": 1.65087890625, + "y": -2.152557373046875 + }, + { + "x": 1.7366943359375, + "y": -2.48040771484375 + }, + { + "x": 2.6376953125, + "y": -0.08599853515625 + }, + { + "x": -2.1864013671875, + "y": 1.3824462890625 + }, + { + "x": 0.2330322265625, + "y": 3.633575439453125 + }, + { + "x": 4.07208251953125, + "y": 1.703094482421875 + }, + { + "x": 1.654052734375, + "y": -1.6649169921875 + }, + { + "x": -0.91778564453125, + "y": -5.09783935546875 + }, + { + "x": 2.6077880859375, + "y": -2.9891357421875 + }, + { + "x": 1.9713134765625, + "y": -0.37945556640625 + }, + { + "x": 2.462493896484375, + "y": 0.03302001953125 + }, + { + "x": -0.138916015625, + "y": 0.3553466796875 + }, + { + "x": 3.570037841796875, + "y": -2.5625 + }, + { + "x": 0.617340087890625, + "y": -2.16351318359375 + }, + { + "x": 1.314605712890625, + "y": -1.40509033203125 + }, + { + "x": 4.134674072265625, + "y": 0.31597900390625 + }, + { + "x": -0.67901611328125, + "y": 1.67572021484375 + }, + { + "x": 0.466552734375, + "y": 0.6944580078125 + }, + { + "x": -0.089324951171875, + "y": 0.71978759765625 + }, + { + "x": 0.634490966796875, + "y": -1.45556640625 + }, + { + "x": 1.899810791015625, + "y": -3.2197265625 + }, + { + "x": -2.3707275390625, + "y": -2.84906005859375 + }, + { + "x": -3.502777099609375, + "y": 3.88677978515625 + }, + { + "x": -4.215667724609375, + "y": -0.44525146484375 + }, + { + "x": -5.08258056640625, + "y": 0.593170166015625 + }, + { + "x": -0.4576416015625, + "y": 0.5198974609375 + }, + { + "x": -1.904541015625, + "y": -1.027740478515625 + }, + { + "x": -3.8514404296875, + "y": -3.67034912109375 + }, + { + "x": -0.87615966796875, + "y": -1.8756103515625 + }, + { + "x": -4.329498291015625, + "y": 0.01470947265625 + }, + { + "x": -3.001068115234375, + "y": 2.80157470703125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.005903859118547574, + "y": -0.041917527011074505, + "z": 0.4576098443680001 + }, + "rotation": { + "quaternion": { + "W": 0.7181904788989603, + "X": 0.009811783578011461, + "Y": -0.14868878159696672, + "Z": 0.6797042085709858 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img29.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img29.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 744.4442749023438, + "y": 242.18824768066406 + }, + { + "x": 741.9342041015625, + "y": 310.2508239746094 + }, + { + "x": 738.833740234375, + "y": 370.41168212890625 + }, + { + "x": 738.3037719726562, + "y": 433.38299560546875 + }, + { + "x": 732.1417236328125, + "y": 492.0726623535156 + }, + { + "x": 733.4164428710938, + "y": 548.2560424804688 + }, + { + "x": 733.5011596679688, + "y": 596.4078979492188 + }, + { + "x": 681.550537109375, + "y": 248.268310546875 + }, + { + "x": 677.3005981445312, + "y": 311.5758972167969 + }, + { + "x": 676.771484375, + "y": 372.6397705078125 + }, + { + "x": 674.5517578125, + "y": 440.4830322265625 + }, + { + "x": 678.2453002929688, + "y": 497.8494567871094 + }, + { + "x": 673.5632934570312, + "y": 552.577392578125 + }, + { + "x": 671.423095703125, + "y": 605.338623046875 + }, + { + "x": 617.2398681640625, + "y": 244.26319885253906 + }, + { + "x": 614.5841064453125, + "y": 312.8457336425781 + }, + { + "x": 616.8621826171875, + "y": 374.0094909667969 + }, + { + "x": 615.5154418945312, + "y": 442.96673583984375 + }, + { + "x": 614.2499389648438, + "y": 500.7516174316406 + }, + { + "x": 614.8477172851562, + "y": 558.7076416015625 + }, + { + "x": 613.6978759765625, + "y": 612.424072265625 + }, + { + "x": 551.6754150390625, + "y": 251.2205352783203 + }, + { + "x": 550.5686645507812, + "y": 314.4949951171875 + }, + { + "x": 548.07958984375, + "y": 379.2848815917969 + }, + { + "x": 550.49365234375, + "y": 445.5614318847656 + }, + { + "x": 554.637451171875, + "y": 508.1221008300781 + }, + { + "x": 551.7427368164062, + "y": 566.6141357421875 + }, + { + "x": 554.77880859375, + "y": 618.9030151367188 + }, + { + "x": 479.4169006347656, + "y": 254.15599060058594 + }, + { + "x": 484.11944580078125, + "y": 319.5499267578125 + }, + { + "x": 482.6182861328125, + "y": 387.2708740234375 + }, + { + "x": 487.1788635253906, + "y": 448.72119140625 + }, + { + "x": 489.2705993652344, + "y": 509.5789489746094 + }, + { + "x": 490.1739807128906, + "y": 567.1099853515625 + }, + { + "x": 495.74786376953125, + "y": 622.75146484375 + }, + { + "x": 413.3827209472656, + "y": 255.88592529296875 + }, + { + "x": 415.8685607910156, + "y": 322.51141357421875 + }, + { + "x": 419.0599670410156, + "y": 389.8838195800781 + }, + { + "x": 420.8267822265625, + "y": 453.9825744628906 + }, + { + "x": 428.61773681640625, + "y": 515.8549194335938 + }, + { + "x": 432.2896423339844, + "y": 569.0928955078125 + }, + { + "x": 439.48876953125, + "y": 632.9010009765625 + }, + { + "x": 346.8638610839844, + "y": 257.4886474609375 + }, + { + "x": 347.0116882324219, + "y": 324.8208312988281 + }, + { + "x": 352.4788513183594, + "y": 392.5277099609375 + }, + { + "x": 358.31890869140625, + "y": 458.7374267578125 + }, + { + "x": 361.3655700683594, + "y": 518.2705688476562 + }, + { + "x": 368.57855224609375, + "y": 579.3468017578125 + }, + { + "x": 370.9422607421875, + "y": 633.9729614257812 + } + ], + "reprojectionErrors": [ + { + "x": -3.699462890625, + "y": 6.45587158203125 + }, + { + "x": -2.6431884765625, + "y": 1.12677001953125 + }, + { + "x": -0.91961669921875, + "y": 1.951019287109375 + }, + { + "x": -1.69317626953125, + "y": -1.68988037109375 + }, + { + "x": 3.2352294921875, + "y": -2.61639404296875 + }, + { + "x": 0.7935791015625, + "y": -2.52215576171875 + }, + { + "x": -0.3944091796875, + "y": 4.1944580078125 + }, + { + "x": -2.75433349609375, + "y": 1.7588043212890625 + }, + { + "x": 0.92596435546875, + "y": 2.029571533203125 + }, + { + "x": 0.930908203125, + "y": 2.74798583984375 + }, + { + "x": 2.66998291015625, + "y": -5.011871337890625 + }, + { + "x": -1.46270751953125, + "y": -3.903106689453125 + }, + { + "x": 2.81976318359375, + "y": -1.67938232421875 + }, + { + "x": 4.598388671875, + "y": 1.06671142578125 + }, + { + "x": -2.1640625, + "y": 7.1746826171875 + }, + { + "x": 0.85711669921875, + "y": 3.0340576171875 + }, + { + "x": -1.04400634765625, + "y": 4.4666748046875 + }, + { + "x": 0.69091796875, + "y": -3.638763427734375 + }, + { + "x": 2.35552978515625, + "y": -2.222442626953125 + }, + { + "x": 2.1673583984375, + "y": -2.53997802734375 + }, + { + "x": 3.737060546875, + "y": -0.0987548828125 + }, + { + "x": -2.154052734375, + "y": 1.656768798828125 + }, + { + "x": 0.3070068359375, + "y": 3.707000732421875 + }, + { + "x": 4.125244140625, + "y": 2.345062255859375 + }, + { + "x": 3.0167236328125, + "y": -2.29547119140625 + }, + { + "x": 0.1563720703125, + "y": -4.914520263671875 + }, + { + "x": 4.313720703125, + "y": -5.0682373046875 + }, + { + "x": 2.52081298828125, + "y": -0.5372314453125 + }, + { + "x": 2.6510009765625, + "y": 0.1903228759765625 + }, + { + "x": 0.34857177734375, + "y": 1.023773193359375 + }, + { + "x": 4.18499755859375, + "y": -2.419708251953125 + }, + { + "x": 1.898529052734375, + "y": -1.43353271484375 + }, + { + "x": 2.023193359375, + "y": -1.594482421875 + }, + { + "x": 3.281707763671875, + "y": -0.073974609375 + }, + { + "x": -0.181793212890625, + "y": 1.77880859375 + }, + { + "x": -0.73529052734375, + "y": -0.0400543212890625 + }, + { + "x": 0.284912109375, + "y": 0.485015869140625 + }, + { + "x": 0.49188232421875, + "y": -1.7418212890625 + }, + { + "x": 2.021759033203125, + "y": -2.586822509765625 + }, + { + "x": -2.568511962890625, + "y": -2.99200439453125 + }, + { + "x": -3.13055419921875, + "y": 3.5484619140625 + }, + { + "x": -7.305755615234375, + "y": -2.07855224609375 + }, + { + "x": -5.6749267578125, + "y": -0.111663818359375 + }, + { + "x": -1.14715576171875, + "y": 0.65106201171875 + }, + { + "x": -2.0926513671875, + "y": -1.023040771484375 + }, + { + "x": -3.556365966796875, + "y": -3.14447021484375 + }, + { + "x": -2.364013671875, + "y": -0.424560546875 + }, + { + "x": -5.467803955078125, + "y": -0.98126220703125 + }, + { + "x": -3.845245361328125, + "y": 3.27325439453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.017041804026555557, + "y": -0.04669523028637152, + "z": 0.4318948737405406 + }, + "rotation": { + "quaternion": { + "W": 0.7028802220667221, + "X": 0.0025449517645422973, + "Y": -0.16988422588278573, + "Z": 0.6907186594005974 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img30.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img30.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 328.5989990234375, + "y": 144.65716552734375 + }, + { + "x": 392.4637145996094, + "y": 145.5077667236328 + }, + { + "x": 458.36181640625, + "y": 150.22805786132812 + }, + { + "x": 532.4378051757812, + "y": 151.39149475097656 + }, + { + "x": 601.5775146484375, + "y": 150.34646606445312 + }, + { + "x": 672.3118896484375, + "y": 161.53143310546875 + }, + { + "x": 740.4247436523438, + "y": 159.75234985351562 + }, + { + "x": 322.7470397949219, + "y": 209.51100158691406 + }, + { + "x": 390.4771423339844, + "y": 214.03707885742188 + }, + { + "x": 459.5727844238281, + "y": 215.65408325195312 + }, + { + "x": 527.2815551757812, + "y": 217.31907653808594 + }, + { + "x": 595.3765258789062, + "y": 220.784423828125 + }, + { + "x": 664.6983642578125, + "y": 225.02906799316406 + }, + { + "x": 734.3294677734375, + "y": 231.10145568847656 + }, + { + "x": 324.63970947265625, + "y": 279.7137451171875 + }, + { + "x": 390.3753356933594, + "y": 281.6843566894531 + }, + { + "x": 452.7068786621094, + "y": 287.2628479003906 + }, + { + "x": 521.7368774414062, + "y": 283.7770690917969 + }, + { + "x": 594.6714477539062, + "y": 285.2976989746094 + }, + { + "x": 661.9195556640625, + "y": 294.1071472167969 + }, + { + "x": 727.3622436523438, + "y": 297.3795471191406 + }, + { + "x": 324.5535888671875, + "y": 344.55322265625 + }, + { + "x": 387.0495910644531, + "y": 349.4522705078125 + }, + { + "x": 453.5892028808594, + "y": 348.4019775390625 + }, + { + "x": 522.2113037109375, + "y": 352.24468994140625 + }, + { + "x": 589.5098266601562, + "y": 359.148681640625 + }, + { + "x": 654.230712890625, + "y": 362.86895751953125 + }, + { + "x": 724.1080932617188, + "y": 363.4901428222656 + }, + { + "x": 321.7987976074219, + "y": 411.5450439453125 + }, + { + "x": 391.08087158203125, + "y": 412.0305480957031 + }, + { + "x": 452.1064453125, + "y": 414.5562438964844 + }, + { + "x": 522.7162475585938, + "y": 421.546630859375 + }, + { + "x": 584.4384765625, + "y": 421.63134765625 + }, + { + "x": 656.5886840820312, + "y": 428.286865234375 + }, + { + "x": 715.4903564453125, + "y": 428.10986328125 + }, + { + "x": 330.1453552246094, + "y": 472.5631103515625 + }, + { + "x": 390.364990234375, + "y": 471.60931396484375 + }, + { + "x": 449.7961120605469, + "y": 473.53253173828125 + }, + { + "x": 515.6221923828125, + "y": 482.26556396484375 + }, + { + "x": 581.494384765625, + "y": 482.1659240722656 + }, + { + "x": 650.4811401367188, + "y": 481.6352233886719 + }, + { + "x": 713.4791259765625, + "y": 490.4633483886719 + }, + { + "x": 324.20013427734375, + "y": 531.4140625 + }, + { + "x": 387.0461120605469, + "y": 529.185302734375 + }, + { + "x": 453.1515808105469, + "y": 536.2732543945312 + }, + { + "x": 512.1419067382812, + "y": 535.55029296875 + }, + { + "x": 580.3883056640625, + "y": 539.5489501953125 + }, + { + "x": 642.5199584960938, + "y": 543.5763549804688 + }, + { + "x": 713.1146240234375, + "y": 542.2133178710938 + } + ], + "reprojectionErrors": [ + { + "x": -8.630706787109375, + "y": -7.3584747314453125 + }, + { + "x": -1.798309326171875, + "y": -3.650909423828125 + }, + { + "x": 2.364013671875, + "y": -3.84771728515625 + }, + { + "x": -2.25238037109375, + "y": -0.520111083984375 + }, + { + "x": -2.49853515625, + "y": 4.985687255859375 + }, + { + "x": -4.87158203125, + "y": -1.7666473388671875 + }, + { + "x": -5.12249755859375, + "y": 4.4189605712890625 + }, + { + "x": -1.90863037109375, + "y": -1.7859039306640625 + }, + { + "x": 0.0625, + "y": -2.1197357177734375 + }, + { + "x": 0.04864501953125, + "y": 0.43359375 + }, + { + "x": 0.8370361328125, + "y": 2.918914794921875 + }, + { + "x": 0.688232421875, + "y": 3.5857391357421875 + }, + { + "x": -1.20556640625, + "y": 3.456939697265625 + }, + { + "x": -3.8948974609375, + "y": 1.48583984375 + }, + { + "x": -2.930633544921875, + "y": -3.5325927734375 + }, + { + "x": 0.0614013671875, + "y": -1.65869140625 + }, + { + "x": 5.854736328125, + "y": -3.402587890625 + }, + { + "x": 4.38055419921875, + "y": 3.909454345703125 + }, + { + "x": -1.5345458984375, + "y": 6.2083740234375 + }, + { + "x": -2.26776123046875, + "y": 1.213287353515625 + }, + { + "x": -1.66912841796875, + "y": 1.751556396484375 + }, + { + "x": -1.97344970703125, + "y": -1.820404052734375 + }, + { + "x": 3.306243896484375, + "y": -3.205474853515625 + }, + { + "x": 3.95562744140625, + "y": 1.360198974609375 + }, + { + "x": 1.968505859375, + "y": 1.035552978515625 + }, + { + "x": 0.78265380859375, + "y": -2.34637451171875 + }, + { + "x": 1.68304443359375, + "y": -2.539276123046875 + }, + { + "x": -3.03436279296875, + "y": 0.37347412109375 + }, + { + "x": 1.65252685546875, + "y": -4.10174560546875 + }, + { + "x": -0.78485107421875, + "y": -1.387481689453125 + }, + { + "x": 4.46307373046875, + "y": -0.701385498046875 + }, + { + "x": -0.4127197265625, + "y": -4.4669189453125 + }, + { + "x": 3.09033203125, + "y": -1.3126220703125 + }, + { + "x": -4.313232421875, + "y": -4.713958740234375 + }, + { + "x": 1.0821533203125, + "y": -1.266571044921875 + }, + { + "x": -5.822906494140625, + "y": -2.189971923828125 + }, + { + "x": -0.1085205078125, + "y": 1.6649169921875 + }, + { + "x": 5.838134765625, + "y": 2.664794921875 + }, + { + "x": 4.8643798828125, + "y": -3.122344970703125 + }, + { + "x": 3.348876953125, + "y": -0.053131103515625 + }, + { + "x": -1.74755859375, + "y": 3.471649169921875 + }, + { + "x": -1.2933349609375, + "y": -2.337066650390625 + }, + { + "x": 0.993194580078125, + "y": 0.16644287109375 + }, + { + "x": 3.190277099609375, + "y": 5.01226806640625 + }, + { + "x": 1.586029052734375, + "y": 0.57281494140625 + }, + { + "x": 6.58502197265625, + "y": 3.97625732421875 + }, + { + "x": 1.84503173828125, + "y": 2.69073486328125 + }, + { + "x": 2.7652587890625, + "y": 1.40972900390625 + }, + { + "x": -5.20458984375, + "y": 5.5531005859375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.13799657613221317, + "y": -0.08298697608515604, + "z": 0.3941845491407384 + }, + "rotation": { + "quaternion": { + "W": 0.9926061876786534, + "X": 0.11442711188772298, + "Y": -0.027574372606764222, + "Z": 0.02964871367239587 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img31.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img31.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 256.5148010253906, + "y": 133.75469970703125 + }, + { + "x": 317.8174743652344, + "y": 132.8827362060547 + }, + { + "x": 382.32183837890625, + "y": 133.79949951171875 + }, + { + "x": 454.7913513183594, + "y": 132.46087646484375 + }, + { + "x": 524.1026611328125, + "y": 128.0714569091797 + }, + { + "x": 594.0224609375, + "y": 135.9993438720703 + }, + { + "x": 664.6848754882812, + "y": 132.294921875 + }, + { + "x": 252.1842041015625, + "y": 199.42141723632812 + }, + { + "x": 317.7677307128906, + "y": 200.08055114746094 + }, + { + "x": 384.322265625, + "y": 199.11660766601562 + }, + { + "x": 452.2977600097656, + "y": 198.0796661376953 + }, + { + "x": 520.5049438476562, + "y": 200.28701782226562 + }, + { + "x": 588.4844360351562, + "y": 201.59381103515625 + }, + { + "x": 660.4349365234375, + "y": 205.1075439453125 + }, + { + "x": 255.2878875732422, + "y": 268.40936279296875 + }, + { + "x": 318.50341796875, + "y": 267.4062805175781 + }, + { + "x": 381.3172302246094, + "y": 269.5786437988281 + }, + { + "x": 448.376220703125, + "y": 265.0482482910156 + }, + { + "x": 520.941650390625, + "y": 264.4775085449219 + }, + { + "x": 588.2530517578125, + "y": 269.6120300292969 + }, + { + "x": 655.7233276367188, + "y": 271.3250732421875 + }, + { + "x": 258.0941162109375, + "y": 333.8450622558594 + }, + { + "x": 319.02618408203125, + "y": 334.7084045410156 + }, + { + "x": 384.291015625, + "y": 333.2156066894531 + }, + { + "x": 450.3981628417969, + "y": 334.65594482421875 + }, + { + "x": 518.7515258789062, + "y": 338.40118408203125 + }, + { + "x": 583.7127685546875, + "y": 340.680419921875 + }, + { + "x": 655.1473388671875, + "y": 339.2803955078125 + }, + { + "x": 257.4889831542969, + "y": 399.7629089355469 + }, + { + "x": 325.1519470214844, + "y": 399.1181640625 + }, + { + "x": 385.0086364746094, + "y": 398.591552734375 + }, + { + "x": 452.7807312011719, + "y": 401.94635009765625 + }, + { + "x": 517.61572265625, + "y": 400.3553771972656 + }, + { + "x": 586.6171264648438, + "y": 404.1885986328125 + }, + { + "x": 649.0608520507812, + "y": 404.5231628417969 + }, + { + "x": 267.59637451171875, + "y": 460.8807373046875 + }, + { + "x": 326.6050109863281, + "y": 457.65478515625 + }, + { + "x": 386.40673828125, + "y": 459.9230041503906 + }, + { + "x": 447.5617980957031, + "y": 469.0523376464844 + }, + { + "x": 516.3480834960938, + "y": 463.7520446777344 + }, + { + "x": 584.5751953125, + "y": 461.81005859375 + }, + { + "x": 650.9564208984375, + "y": 469.2441101074219 + }, + { + "x": 264.52423095703125, + "y": 520.4346313476562 + }, + { + "x": 331.7067565917969, + "y": 521.7108154296875 + }, + { + "x": 391.8401184082031, + "y": 520.6657104492188 + }, + { + "x": 449.04833984375, + "y": 519.0499267578125 + }, + { + "x": 517.2464599609375, + "y": 522.4573974609375 + }, + { + "x": 578.7138061523438, + "y": 522.794921875 + }, + { + "x": 653.0435791015625, + "y": 520.6448974609375 + } + ], + "reprojectionErrors": [ + { + "x": -7.980499267578125, + "y": -6.489830017089844 + }, + { + "x": -1.148406982421875, + "y": -3.91400146484375 + }, + { + "x": 2.25128173828125, + "y": -3.1405181884765625 + }, + { + "x": -2.517120361328125, + "y": -0.1245574951171875 + }, + { + "x": -4.30279541015625, + "y": 5.930023193359375 + }, + { + "x": -6.84515380859375, + "y": -0.3441925048828125 + }, + { + "x": -10.25140380859375, + "y": 5.003082275390625 + }, + { + "x": -1.04815673828125, + "y": -3.2791290283203125 + }, + { + "x": 0.86962890625, + "y": -2.3459930419921875 + }, + { + "x": 1.5897216796875, + "y": 0.2060394287109375 + }, + { + "x": 0.689453125, + "y": 2.8275146484375 + }, + { + "x": -0.61492919921875, + "y": 2.2017822265625 + }, + { + "x": -1.8372802734375, + "y": 2.4743194580078125 + }, + { + "x": -7.14990234375, + "y": 0.5382537841796875 + }, + { + "x": -1.5649261474609375, + "y": -4.658233642578125 + }, + { + "x": 2.0938720703125, + "y": -2.170806884765625 + }, + { + "x": 5.931732177734375, + "y": -2.853912353515625 + }, + { + "x": 5.328460693359375, + "y": 3.17120361328125 + }, + { + "x": -0.95068359375, + "y": 5.24267578125 + }, + { + "x": -2.11895751953125, + "y": 1.615447998046875 + }, + { + "x": -3.5633544921875, + "y": 1.4168701171875 + }, + { + "x": -1.79925537109375, + "y": -3.73419189453125 + }, + { + "x": 3.522552490234375, + "y": -3.217498779296875 + }, + { + "x": 4.292816162109375, + "y": -0.331024169921875 + }, + { + "x": 4.02825927734375, + "y": -0.36358642578125 + }, + { + "x": 1.3509521484375, + "y": -2.6864013671875 + }, + { + "x": 1.925048828125, + "y": -3.528076171875 + }, + { + "x": -4.08941650390625, + "y": -0.67486572265625 + }, + { + "x": 1.36260986328125, + "y": -4.522003173828125 + }, + { + "x": -0.6605224609375, + "y": -2.59808349609375 + }, + { + "x": 4.907684326171875, + "y": -0.770233154296875 + }, + { + "x": 2.371368408203125, + "y": -2.80133056640625 + }, + { + "x": 2.6085205078125, + "y": 0.136260986328125 + }, + { + "x": -1.45916748046875, + "y": -2.326995849609375 + }, + { + "x": 0.9176025390625, + "y": -1.267791748046875 + }, + { + "x": -6.203399658203125, + "y": -1.72027587890625 + }, + { + "x": -0.1798095703125, + "y": 2.687347412109375 + }, + { + "x": 4.839508056640625, + "y": 1.6309814453125 + }, + { + "x": 8.319671630859375, + "y": -6.2559814453125 + }, + { + "x": 4.00775146484375, + "y": 0.31756591796875 + }, + { + "x": 0.1190185546875, + "y": 3.5640869140625 + }, + { + "x": -2.03521728515625, + "y": -2.53375244140625 + }, + { + "x": -0.6053466796875, + "y": 1.45391845703125 + }, + { + "x": -3.356903076171875, + "y": 1.26519775390625 + }, + { + "x": 0.733245849609375, + "y": 3.435791015625 + }, + { + "x": 7.56591796875, + "y": 6.21527099609375 + }, + { + "x": 3.2506103515625, + "y": 4.010009765625 + }, + { + "x": 5.53240966796875, + "y": 4.91363525390625 + }, + { + "x": -5.15777587890625, + "y": 8.3441162109375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.16885895920192803, + "y": -0.08915629844935409, + "z": 0.40570411379167204 + }, + "rotation": { + "quaternion": { + "W": 0.9969579744189065, + "X": 0.07680108252873663, + "Y": -0.007221540987989303, + "Z": 0.011146313772896363 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img32.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img32.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 255.38685607910156, + "y": 132.75326538085938 + }, + { + "x": 317.290771484375, + "y": 131.649658203125 + }, + { + "x": 382.20587158203125, + "y": 133.02005004882812 + }, + { + "x": 454.915771484375, + "y": 131.51663208007812 + }, + { + "x": 524.6929321289062, + "y": 127.59979248046875 + }, + { + "x": 595.0713500976562, + "y": 135.5572509765625 + }, + { + "x": 665.258056640625, + "y": 132.3590545654297 + }, + { + "x": 250.60777282714844, + "y": 198.21685791015625 + }, + { + "x": 317.35028076171875, + "y": 199.35684204101562 + }, + { + "x": 384.0975036621094, + "y": 198.45167541503906 + }, + { + "x": 452.5309143066406, + "y": 197.4075164794922 + }, + { + "x": 520.8502197265625, + "y": 199.76177978515625 + }, + { + "x": 589.4205322265625, + "y": 201.24102783203125 + }, + { + "x": 661.3300170898438, + "y": 204.83163452148438 + }, + { + "x": 254.46827697753906, + "y": 267.7455139160156 + }, + { + "x": 317.6571350097656, + "y": 266.8413391113281 + }, + { + "x": 381.1280212402344, + "y": 269.1448059082031 + }, + { + "x": 448.1820068359375, + "y": 264.45831298828125 + }, + { + "x": 521.116455078125, + "y": 264.3751525878906 + }, + { + "x": 588.73828125, + "y": 269.5694274902344 + }, + { + "x": 656.4022827148438, + "y": 271.233154296875 + }, + { + "x": 256.64434814453125, + "y": 333.416015625 + }, + { + "x": 317.80810546875, + "y": 335.182373046875 + }, + { + "x": 384.19671630859375, + "y": 333.22637939453125 + }, + { + "x": 450.7207336425781, + "y": 334.2446594238281 + }, + { + "x": 518.8438110351562, + "y": 338.0602111816406 + }, + { + "x": 583.7268676757812, + "y": 340.7751770019531 + }, + { + "x": 655.4138793945312, + "y": 339.1348876953125 + }, + { + "x": 256.4921569824219, + "y": 399.64263916015625 + }, + { + "x": 324.40716552734375, + "y": 399.13623046875 + }, + { + "x": 384.710693359375, + "y": 398.26531982421875 + }, + { + "x": 453.794189453125, + "y": 403.162353515625 + }, + { + "x": 517.4131469726562, + "y": 400.39752197265625 + }, + { + "x": 586.4310913085938, + "y": 403.60552978515625 + }, + { + "x": 649.3243408203125, + "y": 404.47979736328125 + }, + { + "x": 266.43878173828125, + "y": 461.1496887207031 + }, + { + "x": 326.18902587890625, + "y": 457.4715270996094 + }, + { + "x": 386.26416015625, + "y": 460.39520263671875 + }, + { + "x": 447.7172546386719, + "y": 468.2202453613281 + }, + { + "x": 515.8972778320312, + "y": 463.4403381347656 + }, + { + "x": 584.7345581054688, + "y": 461.566650390625 + }, + { + "x": 650.5628051757812, + "y": 468.63385009765625 + }, + { + "x": 263.25164794921875, + "y": 520.6488647460938 + }, + { + "x": 330.66766357421875, + "y": 521.750244140625 + }, + { + "x": 391.1257629394531, + "y": 520.6834716796875 + }, + { + "x": 448.3798828125, + "y": 518.7725219726562 + }, + { + "x": 517.3366088867188, + "y": 521.8482055664062 + }, + { + "x": 578.7366333007812, + "y": 522.5406494140625 + }, + { + "x": 652.7078857421875, + "y": 520.6660766601562 + } + ], + "reprojectionErrors": [ + { + "x": -8.26702880859375, + "y": -6.788665771484375 + }, + { + "x": -1.405975341796875, + "y": -3.7615737915039062 + }, + { + "x": 2.1119384765625, + "y": -3.224609375 + }, + { + "x": -2.46771240234375, + "y": 0.1709136962890625 + }, + { + "x": -4.38873291015625, + "y": 5.965423583984375 + }, + { + "x": -7.15679931640625, + "y": -0.1279754638671875 + }, + { + "x": -9.95111083984375, + "y": 4.921478271484375 + }, + { + "x": -0.8319244384765625, + "y": -2.99249267578125 + }, + { + "x": 0.51708984375, + "y": -2.37451171875 + }, + { + "x": 1.535675048828125, + "y": 0.28240966796875 + }, + { + "x": 0.57098388671875, + "y": 3.0728302001953125 + }, + { + "x": -0.54864501953125, + "y": 2.4600677490234375 + }, + { + "x": -2.1605224609375, + "y": 2.7182464599609375 + }, + { + "x": -7.32550048828125, + "y": 0.8617095947265625 + }, + { + "x": -2.055450439453125, + "y": -4.60211181640625 + }, + { + "x": 2.181610107421875, + "y": -2.099609375 + }, + { + "x": 5.817047119140625, + "y": -2.80145263671875 + }, + { + "x": 5.57781982421875, + "y": 3.490570068359375 + }, + { + "x": -0.805908203125, + "y": 5.18377685546875 + }, + { + "x": -2.11376953125, + "y": 1.60467529296875 + }, + { + "x": -3.6739501953125, + "y": 1.56182861328125 + }, + { + "x": -1.6136474609375, + "y": -3.671112060546875 + }, + { + "x": 3.99066162109375, + "y": -3.993072509765625 + }, + { + "x": 4.056549072265625, + "y": -0.58026123046875 + }, + { + "x": 3.70086669921875, + "y": -0.1287841796875 + }, + { + "x": 1.48699951171875, + "y": -2.46112060546875 + }, + { + "x": 2.2806396484375, + "y": -3.678955078125 + }, + { + "x": -3.93585205078125, + "y": -0.527099609375 + }, + { + "x": 1.137298583984375, + "y": -4.590789794921875 + }, + { + "x": -0.6597900390625, + "y": -2.788421630859375 + }, + { + "x": 4.846893310546875, + "y": -0.600341796875 + }, + { + "x": 1.292755126953125, + "y": -4.1585693359375 + }, + { + "x": 2.94879150390625, + "y": -0.032958984375 + }, + { + "x": -1.0223388671875, + "y": -1.857757568359375 + }, + { + "x": 0.92877197265625, + "y": -1.32598876953125 + }, + { + "x": -6.229736328125, + "y": -2.062835693359375 + }, + { + "x": -0.504608154296875, + "y": 2.768218994140625 + }, + { + "x": 4.593658447265625, + "y": 1.027069091796875 + }, + { + "x": 8.038330078125, + "y": -5.58551025390625 + }, + { + "x": 4.50640869140625, + "y": 0.437103271484375 + }, + { + "x": 0.09326171875, + "y": 3.58404541015625 + }, + { + "x": -1.50970458984375, + "y": -2.17901611328125 + }, + { + "x": -0.482208251953125, + "y": 1.223388671875 + }, + { + "x": -3.057830810546875, + "y": 1.13702392578125 + }, + { + "x": 1.028076171875, + "y": 3.2564697265625 + }, + { + "x": 8.047454833984375, + "y": 6.25811767578125 + }, + { + "x": 3.119140625, + "y": 4.31121826171875 + }, + { + "x": 5.527587890625, + "y": 4.785888671875 + }, + { + "x": -4.830322265625, + "y": 7.86627197265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.16846905861629352, + "y": -0.08915401661050235, + "z": 0.403497862948623 + }, + "rotation": { + "quaternion": { + "W": 0.9966113738621943, + "X": 0.08034903557860898, + "Y": -0.012955952321679991, + "Z": 0.011914078627209302 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img33.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img33.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 497.848876953125, + "y": 56.34195327758789 + }, + { + "x": 500.72821044921875, + "y": 131.1049346923828 + }, + { + "x": 503.1993408203125, + "y": 201.36448669433594 + }, + { + "x": 509.44329833984375, + "y": 271.9956970214844 + }, + { + "x": 509.60888671875, + "y": 342.1026611328125 + }, + { + "x": 518.3167114257812, + "y": 404.236083984375 + }, + { + "x": 527.2088012695312, + "y": 464.351318359375 + }, + { + "x": 426.5885009765625, + "y": 69.41565704345703 + }, + { + "x": 427.4149475097656, + "y": 137.46551513671875 + }, + { + "x": 434.4546203613281, + "y": 210.21192932128906 + }, + { + "x": 438.1096496582031, + "y": 283.2442626953125 + }, + { + "x": 447.5378723144531, + "y": 351.4469299316406 + }, + { + "x": 450.2099609375, + "y": 415.6391296386719 + }, + { + "x": 457.3162841796875, + "y": 477.638916015625 + }, + { + "x": 352.30108642578125, + "y": 70.71388244628906 + }, + { + "x": 355.4281921386719, + "y": 147.25123596191406 + }, + { + "x": 363.50042724609375, + "y": 215.36724853515625 + }, + { + "x": 367.54180908203125, + "y": 291.7323303222656 + }, + { + "x": 375.17303466796875, + "y": 360.4786071777344 + }, + { + "x": 385.2039489746094, + "y": 427.29620361328125 + }, + { + "x": 391.37664794921875, + "y": 489.2560119628906 + }, + { + "x": 281.724609375, + "y": 88.07644653320312 + }, + { + "x": 284.091796875, + "y": 155.42271423339844 + }, + { + "x": 287.3885803222656, + "y": 228.11912536621094 + }, + { + "x": 298.19000244140625, + "y": 301.52947998046875 + }, + { + "x": 309.22430419921875, + "y": 372.7589111328125 + }, + { + "x": 313.4331970214844, + "y": 444.0902099609375 + }, + { + "x": 325.1324768066406, + "y": 499.6043701171875 + }, + { + "x": 203.1602020263672, + "y": 98.2454605102539 + }, + { + "x": 214.11856079101562, + "y": 169.6389923095703 + }, + { + "x": 217.14553833007812, + "y": 244.58831787109375 + }, + { + "x": 230.33607482910156, + "y": 314.4802551269531 + }, + { + "x": 240.05702209472656, + "y": 380.6326599121094 + }, + { + "x": 246.04783630371094, + "y": 445.9200439453125 + }, + { + "x": 261.0425109863281, + "y": 512.5806884765625 + }, + { + "x": 133.77906799316406, + "y": 108.0473861694336 + }, + { + "x": 143.33004760742188, + "y": 179.25636291503906 + }, + { + "x": 152.17636108398438, + "y": 255.7818603515625 + }, + { + "x": 159.384033203125, + "y": 326.3901062011719 + }, + { + "x": 176.30325317382812, + "y": 394.9016418457031 + }, + { + "x": 184.51283264160156, + "y": 457.3229064941406 + }, + { + "x": 198.62863159179688, + "y": 522.7435302734375 + }, + { + "x": 69.2711181640625, + "y": 120.57210540771484 + }, + { + "x": 72.00373840332031, + "y": 191.74078369140625 + }, + { + "x": 84.73534393310547, + "y": 265.3339538574219 + }, + { + "x": 95.57704162597656, + "y": 338.279296875 + }, + { + "x": 105.47159576416016, + "y": 406.5416259765625 + }, + { + "x": 124.35745239257812, + "y": 472.8961181640625 + }, + { + "x": 130.41172790527344, + "y": 537.601806640625 + } + ], + "reprojectionErrors": [ + { + "x": -17.975860595703125, + "y": 5.3239593505859375 + }, + { + "x": -11.399658203125, + "y": -0.076171875 + }, + { + "x": -4.437286376953125, + "y": -0.9428558349609375 + }, + { + "x": -1.265960693359375, + "y": -2.122314453125 + }, + { + "x": 7.96942138671875, + "y": -2.689697265625 + }, + { + "x": 8.652099609375, + "y": 4.833465576171875 + }, + { + "x": 9.1439208984375, + "y": 14.521148681640625 + }, + { + "x": -15.57647705078125, + "y": 1.9973068237304688 + }, + { + "x": -6.979095458984375, + "y": 3.279815673828125 + }, + { + "x": -4.6265869140625, + "y": -0.1029205322265625 + }, + { + "x": 1.08282470703125, + "y": -3.71142578125 + }, + { + "x": 0.995086669921875, + "y": -2.401153564453125 + }, + { + "x": 7.643341064453125, + "y": 3.037811279296875 + }, + { + "x": 9.841094970703125, + "y": 10.81671142578125 + }, + { + "x": -10.052001953125, + "y": 10.460548400878906 + }, + { + "x": -3.7877197265625, + "y": 3.2194976806640625 + }, + { + "x": -2.50970458984375, + "y": 4.4323883056640625 + }, + { + "x": 2.7618408203125, + "y": -2.5423583984375 + }, + { + "x": 4.410003662109375, + "y": -1.8079833984375 + }, + { + "x": 3.62872314453125, + "y": 0.974517822265625 + }, + { + "x": 6.679656982421875, + "y": 8.763519287109375 + }, + { + "x": -8.12384033203125, + "y": 2.8714752197265625 + }, + { + "x": -1.13275146484375, + "y": 4.779876708984375 + }, + { + "x": 4.87811279296875, + "y": 1.3720245361328125 + }, + { + "x": 3.337493896484375, + "y": -2.687103271484375 + }, + { + "x": 1.520904541015625, + "y": -4.4737548828125 + }, + { + "x": 6.4903564453125, + "y": -6.24163818359375 + }, + { + "x": 3.9337158203125, + "y": 7.95745849609375 + }, + { + "x": 1.9232635498046875, + "y": 2.4855804443359375 + }, + { + "x": 0.2894287109375, + "y": 0.2995452880859375 + }, + { + "x": 6.526885986328125, + "y": -5.407135009765625 + }, + { + "x": 2.5444488525390625, + "y": -5.99249267578125 + }, + { + "x": 1.978973388671875, + "y": -2.74560546875 + }, + { + "x": 5.09466552734375, + "y": 1.488128662109375 + }, + { + "x": -0.838836669921875, + "y": 4.49957275390625 + }, + { + "x": 2.9344635009765625, + "y": 2.4740066528320312 + }, + { + "x": 2.6735992431640625, + "y": 0.419830322265625 + }, + { + "x": 3.0478973388671875, + "y": -6.914459228515625 + }, + { + "x": 4.9950408935546875, + "y": -8.266357421875 + }, + { + "x": -2.8314666748046875, + "y": -7.4276123046875 + }, + { + "x": -2.0068511962890625, + "y": -0.37567138671875 + }, + { + "x": -7.1433868408203125, + "y": 3.8289794921875 + }, + { + "x": -0.7639236450195312, + "y": -0.25551605224609375 + }, + { + "x": 5.758522033691406, + "y": -2.327606201171875 + }, + { + "x": 2.203125, + "y": -6.7864990234375 + }, + { + "x": 0.46244049072265625, + "y": -10.531219482421875 + }, + { + "x": -0.402679443359375, + "y": -9.49786376953125 + }, + { + "x": -10.327110290527344, + "y": -6.432586669921875 + }, + { + "x": -7.484443664550781, + "y": -1.56536865234375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.07957898473433071, + "y": -0.11031803625022145, + "z": 0.39386319305286055 + }, + "rotation": { + "quaternion": { + "W": 0.7539334441397747, + "X": 2.0171698381358255E-4, + "Y": 0.00848073970168359, + "Z": 0.6568960330005867 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img34.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img34.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 125.25679779052734, + "y": 100.52096557617188 + }, + { + "x": 192.6508331298828, + "y": 96.5009994506836 + }, + { + "x": 264.0940246582031, + "y": 95.95550537109375 + }, + { + "x": 342.940185546875, + "y": 94.23101806640625 + }, + { + "x": 416.6556701660156, + "y": 89.06075286865234 + }, + { + "x": 492.2032165527344, + "y": 95.6316146850586 + }, + { + "x": 568.0936889648438, + "y": 90.74931335449219 + }, + { + "x": 118.87318420410156, + "y": 170.72552490234375 + }, + { + "x": 193.09600830078125, + "y": 170.8367156982422 + }, + { + "x": 266.52197265625, + "y": 169.28671264648438 + }, + { + "x": 338.01898193359375, + "y": 165.5017852783203 + }, + { + "x": 411.7507629394531, + "y": 165.61090087890625 + }, + { + "x": 484.1172790527344, + "y": 166.67755126953125 + }, + { + "x": 560.0040893554688, + "y": 167.6574249267578 + }, + { + "x": 124.65795135498047, + "y": 248.49667358398438 + }, + { + "x": 193.5926513671875, + "y": 245.03338623046875 + }, + { + "x": 261.7129821777344, + "y": 244.57167053222656 + }, + { + "x": 334.3739318847656, + "y": 238.36277770996094 + }, + { + "x": 411.3525390625, + "y": 235.44839477539062 + }, + { + "x": 482.1336669921875, + "y": 237.26748657226562 + }, + { + "x": 554.2705688476562, + "y": 238.46788024902344 + }, + { + "x": 129.1461639404297, + "y": 320.9237365722656 + }, + { + "x": 193.28469848632812, + "y": 319.2453918457031 + }, + { + "x": 266.57171630859375, + "y": 315.29058837890625 + }, + { + "x": 335.8404235839844, + "y": 312.680908203125 + }, + { + "x": 408.18841552734375, + "y": 312.9695739746094 + }, + { + "x": 477.268310546875, + "y": 314.3526916503906 + }, + { + "x": 551.5695190429688, + "y": 309.2281799316406 + }, + { + "x": 130.5396728515625, + "y": 390.0558776855469 + }, + { + "x": 201.63088989257812, + "y": 387.3959045410156 + }, + { + "x": 267.1941833496094, + "y": 383.29638671875 + }, + { + "x": 340.388916015625, + "y": 385.8929443359375 + }, + { + "x": 405.9898986816406, + "y": 381.102294921875 + }, + { + "x": 478.52490234375, + "y": 378.78582763671875 + }, + { + "x": 544.3680419921875, + "y": 379.2597351074219 + }, + { + "x": 143.42921447753906, + "y": 458.6654052734375 + }, + { + "x": 204.6043701171875, + "y": 450.9896545410156 + }, + { + "x": 268.74493408203125, + "y": 449.3165588378906 + }, + { + "x": 335.88134765625, + "y": 453.2296447753906 + }, + { + "x": 407.203857421875, + "y": 447.2143249511719 + }, + { + "x": 475.2408142089844, + "y": 444.95458984375 + }, + { + "x": 545.38818359375, + "y": 443.16693115234375 + }, + { + "x": 140.51821899414062, + "y": 521.40576171875 + }, + { + "x": 209.9426727294922, + "y": 516.3779907226562 + }, + { + "x": 276.1589050292969, + "y": 513.2124633789062 + }, + { + "x": 341.4817810058594, + "y": 514.1353759765625 + }, + { + "x": 404.6827087402344, + "y": 511.88909912109375 + }, + { + "x": 472.4676818847656, + "y": 504.3604736328125 + }, + { + "x": 546.3248901367188, + "y": 500.8766784667969 + } + ], + "reprojectionErrors": [ + { + "x": -4.05029296875, + "y": -3.3934478759765625 + }, + { + "x": 0.520965576171875, + "y": 0.8677902221679688 + }, + { + "x": 0.623046875, + "y": 1.6239547729492188 + }, + { + "x": -7.06500244140625, + "y": 3.5288314819335938 + }, + { + "x": -9.977294921875, + "y": 8.849479675292969 + }, + { + "x": -15.044921875, + "y": 2.3992538452148438 + }, + { + "x": -20.74761962890625, + "y": 7.372650146484375 + }, + { + "x": 4.4984130859375, + "y": -1.85101318359375 + }, + { + "x": 2.00347900390625, + "y": -1.9033203125 + }, + { + "x": -0.111846923828125, + "y": -0.3140869140625 + }, + { + "x": -0.68280029296875, + "y": 3.490570068359375 + }, + { + "x": -3.841094970703125, + "y": 3.3818359375 + }, + { + "x": -5.955291748046875, + "y": 2.2963104248046875 + }, + { + "x": -11.8800048828125, + "y": 1.2784423828125 + }, + { + "x": 0.9086761474609375, + "y": -8.331741333007812 + }, + { + "x": 3.4600830078125, + "y": -4.9896087646484375 + }, + { + "x": 6.41143798828125, + "y": -4.6579132080078125 + }, + { + "x": 4.440185546875, + "y": 1.4120941162109375 + }, + { + "x": -2.198944091796875, + "y": 4.1787567138671875 + }, + { + "x": -2.959564208984375, + "y": 2.2030792236328125 + }, + { + "x": -5.36419677734375, + "y": 0.83721923828125 + }, + { + "x": -1.3554000854492188, + "y": -9.937835693359375 + }, + { + "x": 5.7461090087890625, + "y": -8.558319091796875 + }, + { + "x": 3.28759765625, + "y": -4.900543212890625 + }, + { + "x": 4.468017578125, + "y": -2.58624267578125 + }, + { + "x": 2.22137451171875, + "y": -3.168792724609375 + }, + { + "x": 2.926025390625, + "y": -4.844390869140625 + }, + { + "x": -1.87689208984375, + "y": -0.011138916015625 + }, + { + "x": -0.4965057373046875, + "y": -8.730987548828125 + }, + { + "x": -0.597900390625, + "y": -6.545074462890625 + }, + { + "x": 4.41998291015625, + "y": -2.907318115234375 + }, + { + "x": 1.42974853515625, + "y": -5.95361328125 + }, + { + "x": 5.687896728515625, + "y": -1.60101318359375 + }, + { + "x": 2.69744873046875, + "y": 0.2889404296875 + }, + { + "x": 6.1146240234375, + "y": -0.60028076171875 + }, + { + "x": -11.106201171875, + "y": -7.49560546875 + }, + { + "x": -1.5458221435546875, + "y": -0.46661376953125 + }, + { + "x": 4.643463134765625, + "y": 0.58233642578125 + }, + { + "x": 7.462890625, + "y": -3.932708740234375 + }, + { + "x": 5.753326416015625, + "y": 1.502471923828125 + }, + { + "x": 7.01702880859375, + "y": 3.2034912109375 + }, + { + "x": 5.8880615234375, + "y": 4.45355224609375 + }, + { + "x": -5.888763427734375, + "y": -0.89678955078125 + }, + { + "x": -4.8359222412109375, + "y": 3.31396484375 + }, + { + "x": -0.97760009765625, + "y": 5.6953125 + }, + { + "x": 3.40283203125, + "y": 4.0205078125 + }, + { + "x": 9.5648193359375, + "y": 5.54656982421875 + }, + { + "x": 10.832763671875, + "y": 12.38629150390625 + }, + { + "x": 5.74822998046875, + "y": 15.211944580078125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.20716817183840897, + "y": -0.09599395530285074, + "z": 0.38789183874624505 + }, + "rotation": { + "quaternion": { + "W": 0.9995098574376929, + "X": 0.02660627560695174, + "Y": -0.016305150204119944, + "Z": -0.0025085972237300167 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img35.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img35.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 96.29362487792969, + "y": 271.8240051269531 + }, + { + "x": 175.69615173339844, + "y": 274.9122314453125 + }, + { + "x": 258.1667785644531, + "y": 278.0750427246094 + }, + { + "x": 350.64697265625, + "y": 278.81219482421875 + }, + { + "x": 437.7291259765625, + "y": 276.8752136230469 + }, + { + "x": 523.4609985351562, + "y": 286.40875244140625 + }, + { + "x": 605.4595947265625, + "y": 285.40185546875 + }, + { + "x": 95.95792388916016, + "y": 353.7174987792969 + }, + { + "x": 176.75656127929688, + "y": 355.55572509765625 + }, + { + "x": 260.6190490722656, + "y": 357.51959228515625 + }, + { + "x": 345.1302185058594, + "y": 356.16839599609375 + }, + { + "x": 426.8254699707031, + "y": 359.30377197265625 + }, + { + "x": 510.98992919921875, + "y": 360.72833251953125 + }, + { + "x": 592.1307373046875, + "y": 363.7985534667969 + }, + { + "x": 101.4369888305664, + "y": 431.8569030761719 + }, + { + "x": 177.13255310058594, + "y": 430.9048767089844 + }, + { + "x": 255.5515594482422, + "y": 436.2550048828125 + }, + { + "x": 336.7009582519531, + "y": 431.8567810058594 + }, + { + "x": 423.0550842285156, + "y": 431.5990905761719 + }, + { + "x": 501.52801513671875, + "y": 434.8529052734375 + }, + { + "x": 579.2244262695312, + "y": 435.41021728515625 + }, + { + "x": 110.12853240966797, + "y": 504.0289001464844 + }, + { + "x": 176.62696838378906, + "y": 510.39263916015625 + }, + { + "x": 261.0988464355469, + "y": 505.3446044921875 + }, + { + "x": 335.9183044433594, + "y": 506.220947265625 + }, + { + "x": 414.6372985839844, + "y": 505.6443786621094 + }, + { + "x": 489.96966552734375, + "y": 507.7406311035156 + }, + { + "x": 569.5214233398438, + "y": 504.0298767089844 + }, + { + "x": 113.48186492919922, + "y": 569.2696533203125 + }, + { + "x": 190.39024353027344, + "y": 568.5003662109375 + }, + { + "x": 262.2806396484375, + "y": 565.3291625976562 + }, + { + "x": 337.86590576171875, + "y": 570.9713134765625 + }, + { + "x": 407.2146301269531, + "y": 571.1535034179688 + }, + { + "x": 489.05712890625, + "y": 570.65966796875 + }, + { + "x": 555.6417846679688, + "y": 566.6307373046875 + }, + { + "x": 127.03094482421875, + "y": 627.2952270507812 + }, + { + "x": 188.81512451171875, + "y": 632.3477783203125 + }, + { + "x": 261.521484375, + "y": 625.7957153320312 + }, + { + "x": 333.8000183105469, + "y": 630.8800048828125 + }, + { + "x": 409.2967834472656, + "y": 627.718505859375 + }, + { + "x": 479.2939758300781, + "y": 623.6834106445312 + }, + { + "x": 551.7283935546875, + "y": 625.3117065429688 + }, + { + "x": 126.54034423828125, + "y": 682.8375854492188 + }, + { + "x": 198.12527465820312, + "y": 678.5166015625 + }, + { + "x": 269.0859375, + "y": 680.6537475585938 + }, + { + "x": 336.67572021484375, + "y": 682.9533081054688 + }, + { + "x": 405.3163757324219, + "y": 677.5415649414062 + }, + { + "x": 475.7586669921875, + "y": 678.58642578125 + }, + { + "x": 547.2286376953125, + "y": 669.088134765625 + } + ], + "reprojectionErrors": [ + { + "x": -12.689079284667969, + "y": -1.098388671875 + }, + { + "x": -0.266815185546875, + "y": 1.061126708984375 + }, + { + "x": 5.61651611328125, + "y": 3.001861572265625 + }, + { + "x": -1.7523193359375, + "y": 7.234161376953125 + }, + { + "x": -6.756622314453125, + "y": 14.015777587890625 + }, + { + "x": -13.2520751953125, + "y": 9.2105712890625 + }, + { + "x": -18.67901611328125, + "y": 14.83734130859375 + }, + { + "x": -6.721717834472656, + "y": -3.665771484375 + }, + { + "x": 1.8197174072265625, + "y": -1.869140625 + }, + { + "x": 4.0057373046875, + "y": -0.26885986328125 + }, + { + "x": 2.46343994140625, + "y": 4.58099365234375 + }, + { + "x": 0.852081298828125, + "y": 4.883697509765625 + }, + { + "x": -5.934417724609375, + "y": 6.841033935546875 + }, + { + "x": -12.23822021484375, + "y": 7.100738525390625 + }, + { + "x": -6.829261779785156, + "y": -6.603790283203125 + }, + { + "x": 4.4535980224609375, + "y": -3.47357177734375 + }, + { + "x": 9.887649536132812, + "y": -6.652557373046875 + }, + { + "x": 9.663177490234375, + "y": -0.0889892578125 + }, + { + "x": 1.48724365234375, + "y": 2.3294677734375 + }, + { + "x": -1.386993408203125, + "y": 1.23284912109375 + }, + { + "x": -5.909912109375, + "y": 2.8302001953125 + }, + { + "x": -10.391120910644531, + "y": -7.406280517578125 + }, + { + "x": 7.8413848876953125, + "y": -12.908782958984375 + }, + { + "x": 5.1295166015625, + "y": -6.951263427734375 + }, + { + "x": 9.282928466796875, + "y": -6.87200927734375 + }, + { + "x": 6.91900634765625, + "y": -5.295623779296875 + }, + { + "x": 5.4803466796875, + "y": -6.349609375 + }, + { + "x": -2.49456787109375, + "y": -1.55572509765625 + }, + { + "x": -8.839973449707031, + "y": -4.84356689453125 + }, + { + "x": -3.1587371826171875, + "y": -4.4046630859375 + }, + { + "x": 4.713226318359375, + "y": -1.4676513671875 + }, + { + "x": 6.234619140625, + "y": -7.25274658203125 + }, + { + "x": 11.4952392578125, + "y": -7.49102783203125 + }, + { + "x": 1.91119384765625, + "y": -6.97064208984375 + }, + { + "x": 5.3697509765625, + "y": -2.8363037109375 + }, + { + "x": -17.69464111328125, + "y": 1.6102294921875 + }, + { + "x": 1.06829833984375, + "y": -4.8516845703125 + }, + { + "x": 6.215728759765625, + "y": 0.4287109375 + }, + { + "x": 9.25799560546875, + "y": -5.79669189453125 + }, + { + "x": 6.697357177734375, + "y": -3.65234375 + }, + { + "x": 7.38897705078125, + "y": -0.5166015625 + }, + { + "x": 3.5234375, + "y": -2.93212890625 + }, + { + "x": -12.705902099609375, + "y": 7.4437255859375 + }, + { + "x": -5.6940155029296875, + "y": 9.37774658203125 + }, + { + "x": -0.626220703125, + "y": 5.02734375 + }, + { + "x": 5.394256591796875, + "y": 0.67919921875 + }, + { + "x": 8.084686279296875, + "y": 4.19854736328125 + }, + { + "x": 6.823333740234375, + "y": 1.40985107421875 + }, + { + "x": 2.50390625, + "y": 9.3055419921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.18498373422204367, + "y": -0.028551594168607582, + "z": 0.3251615265755159 + }, + "rotation": { + "quaternion": { + "W": 0.9747580026409717, + "X": 0.18518542205460792, + "Y": -0.1165260587871693, + "Z": 0.04443954735783677 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img36.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img36.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 153.6877899169922, + "y": 285.39044189453125 + }, + { + "x": 244.22091674804688, + "y": 287.0008239746094 + }, + { + "x": 337.0573425292969, + "y": 286.6675720214844 + }, + { + "x": 436.4123840332031, + "y": 288.269775390625 + }, + { + "x": 528.1065673828125, + "y": 284.2976989746094 + }, + { + "x": 618.364013671875, + "y": 293.2076110839844 + }, + { + "x": 702.553466796875, + "y": 288.7025146484375 + }, + { + "x": 150.64309692382812, + "y": 364.9397277832031 + }, + { + "x": 243.28797912597656, + "y": 367.7803955078125 + }, + { + "x": 334.6617126464844, + "y": 366.5883483886719 + }, + { + "x": 425.5961608886719, + "y": 364.10760498046875 + }, + { + "x": 512.5833129882812, + "y": 364.67767333984375 + }, + { + "x": 599.8746337890625, + "y": 364.4661865234375 + }, + { + "x": 682.853271484375, + "y": 366.50408935546875 + }, + { + "x": 157.83782958984375, + "y": 447.6065368652344 + }, + { + "x": 246.64759826660156, + "y": 444.8717956542969 + }, + { + "x": 327.40478515625, + "y": 444.6716613769531 + }, + { + "x": 414.32305908203125, + "y": 436.9683837890625 + }, + { + "x": 504.6803894042969, + "y": 434.5191650390625 + }, + { + "x": 585.5386352539062, + "y": 435.0775146484375 + }, + { + "x": 663.6683349609375, + "y": 433.5484619140625 + }, + { + "x": 166.56991577148438, + "y": 510.2845153808594 + }, + { + "x": 245.7386474609375, + "y": 512.484375 + }, + { + "x": 330.2545166015625, + "y": 508.2017517089844 + }, + { + "x": 410.81390380859375, + "y": 507.15277099609375 + }, + { + "x": 493.4068298339844, + "y": 505.9599914550781 + }, + { + "x": 567.6461791992188, + "y": 504.94189453125 + }, + { + "x": 647.3353881835938, + "y": 498.7053527832031 + }, + { + "x": 173.5071563720703, + "y": 572.4708251953125 + }, + { + "x": 256.28240966796875, + "y": 571.9025268554688 + }, + { + "x": 328.54644775390625, + "y": 566.8715209960938 + }, + { + "x": 409.72021484375, + "y": 569.0558471679688 + }, + { + "x": 480.8484191894531, + "y": 564.806640625 + }, + { + "x": 562.8775634765625, + "y": 563.6658325195312 + }, + { + "x": 630.5840454101562, + "y": 554.7728881835938 + }, + { + "x": 184.26763916015625, + "y": 626.5053100585938 + }, + { + "x": 256.745849609375, + "y": 624.415771484375 + }, + { + "x": 327.64385986328125, + "y": 620.7425537109375 + }, + { + "x": 400.8725280761719, + "y": 623.7155151367188 + }, + { + "x": 479.4487609863281, + "y": 619.2367553710938 + }, + { + "x": 548.8838500976562, + "y": 610.4923706054688 + }, + { + "x": 617.236572265625, + "y": 605.1220703125 + }, + { + "x": 184.10665893554688, + "y": 685.3809204101562 + }, + { + "x": 265.8739929199219, + "y": 679.1898803710938 + }, + { + "x": 332.5412292480469, + "y": 669.63330078125 + }, + { + "x": 399.7013854980469, + "y": 665.2078247070312 + }, + { + "x": 470.1861877441406, + "y": 663.1677856445312 + }, + { + "x": 541.83837890625, + "y": 665.2385864257812 + }, + { + "x": 609.7027587890625, + "y": 650.4507446289062 + } + ], + "reprojectionErrors": [ + { + "x": -12.183822631835938, + "y": -2.9681396484375 + }, + { + "x": 0.77667236328125, + "y": -1.005462646484375 + }, + { + "x": 5.639556884765625, + "y": 2.792724609375 + }, + { + "x": -1.29815673828125, + "y": 4.557525634765625 + }, + { + "x": -5.40301513671875, + "y": 11.807830810546875 + }, + { + "x": -12.49542236328125, + "y": 6.09539794921875 + }, + { + "x": -17.58367919921875, + "y": 13.724517822265625 + }, + { + "x": -2.978485107421875, + "y": -0.617218017578125 + }, + { + "x": 3.500823974609375, + "y": -2.293365478515625 + }, + { + "x": 5.9205322265625, + "y": 0.099517822265625 + }, + { + "x": 3.903472900390625, + "y": 3.815093994140625 + }, + { + "x": 1.36248779296875, + "y": 4.51177978515625 + }, + { + "x": -5.59228515625, + "y": 6.020050048828125 + }, + { + "x": -12.02020263671875, + "y": 5.30731201171875 + }, + { + "x": -4.4913787841796875, + "y": -8.009918212890625 + }, + { + "x": 1.799468994140625, + "y": -6.155364990234375 + }, + { + "x": 11.222930908203125, + "y": -6.685150146484375 + }, + { + "x": 9.970916748046875, + "y": 0.42681884765625 + }, + { + "x": 1.12786865234375, + "y": 2.413055419921875 + }, + { + "x": -2.04302978515625, + "y": 1.510711669921875 + }, + { + "x": -6.02008056640625, + "y": 2.80645751953125 + }, + { + "x": -7.96636962890625, + "y": -1.29083251953125 + }, + { + "x": 4.2483367919921875, + "y": -6.111358642578125 + }, + { + "x": 6.56170654296875, + "y": -4.209503173828125 + }, + { + "x": 8.64056396484375, + "y": -5.31964111328125 + }, + { + "x": 4.82073974609375, + "y": -6.080780029296875 + }, + { + "x": 5.7825927734375, + "y": -6.826202392578125 + }, + { + "x": -2.0126953125, + "y": -2.176055908203125 + }, + { + "x": -10.025009155273438, + "y": 0.68328857421875 + }, + { + "x": -4.861328125, + "y": -2.85394287109375 + }, + { + "x": 6.586456298828125, + "y": -1.6180419921875 + }, + { + "x": 5.22393798828125, + "y": -7.310302734375 + }, + { + "x": 10.3004150390625, + "y": -6.3026123046875 + }, + { + "x": 1.1348876953125, + "y": -8.1556396484375 + }, + { + "x": 3.1912841796875, + "y": -2.02593994140625 + }, + { + "x": -16.245651245117188, + "y": 6.123291015625 + }, + { + "x": -3.985626220703125, + "y": 2.83843994140625 + }, + { + "x": 5.92108154296875, + "y": 1.502685546875 + }, + { + "x": 9.858306884765625, + "y": -6.14031982421875 + }, + { + "x": 5.075347900390625, + "y": -6.01666259765625 + }, + { + "x": 6.30206298828125, + "y": -1.3341064453125 + }, + { + "x": 5.698486328125, + "y": 0.248046875 + }, + { + "x": -11.849227905273438, + "y": 2.5123291015625 + }, + { + "x": -11.860214233398438, + "y": 2.24346923828125 + }, + { + "x": -0.4400634765625, + "y": 5.7481689453125 + }, + { + "x": 7.085052490234375, + "y": 4.50115966796875 + }, + { + "x": 8.125152587890625, + "y": 1.22186279296875 + }, + { + "x": 5.0572509765625, + "y": -5.8387451171875 + }, + { + "x": 3.03643798828125, + "y": 4.26727294921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.1479058111195244, + "y": -0.022115476195451324, + "z": 0.287030315569809 + }, + "rotation": { + "quaternion": { + "W": 0.9481503713559263, + "X": 0.27005760629005077, + "Y": -0.15877869377555198, + "Z": 0.05356387761763031 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img37.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img37.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 178.47610473632812, + "y": 316.7341003417969 + }, + { + "x": 270.7010803222656, + "y": 320.4378967285156 + }, + { + "x": 366.0714416503906, + "y": 323.3299865722656 + }, + { + "x": 466.41632080078125, + "y": 327.11175537109375 + }, + { + "x": 559.222900390625, + "y": 325.79107666015625 + }, + { + "x": 648.75830078125, + "y": 335.3490295410156 + }, + { + "x": 733.0203857421875, + "y": 332.9295959472656 + }, + { + "x": 174.08399963378906, + "y": 395.6485900878906 + }, + { + "x": 265.65576171875, + "y": 401.3062744140625 + }, + { + "x": 361.4650573730469, + "y": 402.2632751464844 + }, + { + "x": 451.9501037597656, + "y": 401.3442077636719 + }, + { + "x": 539.3961181640625, + "y": 403.2886657714844 + }, + { + "x": 626.768798828125, + "y": 404.96356201171875 + }, + { + "x": 709.0501098632812, + "y": 408.30853271484375 + }, + { + "x": 178.50230407714844, + "y": 475.16522216796875 + }, + { + "x": 267.4466857910156, + "y": 474.5956726074219 + }, + { + "x": 349.3289489746094, + "y": 477.7204284667969 + }, + { + "x": 437.65924072265625, + "y": 471.6955261230469 + }, + { + "x": 528.2151489257812, + "y": 470.9847412109375 + }, + { + "x": 609.53564453125, + "y": 473.21856689453125 + }, + { + "x": 686.9880981445312, + "y": 472.15350341796875 + }, + { + "x": 185.11270141601562, + "y": 536.66650390625 + }, + { + "x": 265.0105895996094, + "y": 539.940673828125 + }, + { + "x": 349.7135009765625, + "y": 538.06298828125 + }, + { + "x": 428.71417236328125, + "y": 539.9683837890625 + }, + { + "x": 513.4788208007812, + "y": 538.79931640625 + }, + { + "x": 586.955078125, + "y": 539.858642578125 + }, + { + "x": 665.0084228515625, + "y": 533.5753784179688 + }, + { + "x": 189.49765014648438, + "y": 595.8603515625 + }, + { + "x": 272.56396484375, + "y": 597.4879150390625 + }, + { + "x": 344.8673400878906, + "y": 595.232177734375 + }, + { + "x": 426.2654113769531, + "y": 597.2428588867188 + }, + { + "x": 497.2674255371094, + "y": 595.4188232421875 + }, + { + "x": 575.5641479492188, + "y": 587.783935546875 + }, + { + "x": 645.7487182617188, + "y": 588.1445922851562 + }, + { + "x": 197.4429931640625, + "y": 647.1935424804688 + }, + { + "x": 270.7310485839844, + "y": 648.537109375 + }, + { + "x": 342.3580627441406, + "y": 645.4503784179688 + }, + { + "x": 414.8013610839844, + "y": 650.468994140625 + }, + { + "x": 493.37255859375, + "y": 649.8001098632812 + }, + { + "x": 562.4236450195312, + "y": 639.4544067382812 + }, + { + "x": 630.2084350585938, + "y": 611.2433471679688 + }, + { + "x": 197.05345153808594, + "y": 693.5381469726562 + }, + { + "x": 274.7661437988281, + "y": 693.0852661132812 + }, + { + "x": 344.7867126464844, + "y": 691.119384765625 + }, + { + "x": 411.6963195800781, + "y": 687.9619750976562 + }, + { + "x": 481.88458251953125, + "y": 687.5966796875 + }, + { + "x": 551.2218627929688, + "y": 688.7017822265625 + }, + { + "x": 602.7911376953125, + "y": 694.5993041992188 + } + ], + "reprojectionErrors": [ + { + "x": -8.975051879882812, + "y": -0.689971923828125 + }, + { + "x": 3.219268798828125, + "y": 1.154327392578125 + }, + { + "x": 6.233428955078125, + "y": 3.595916748046875 + }, + { + "x": -1.21429443359375, + "y": 4.95361328125 + }, + { + "x": -6.12762451171875, + "y": 11.23736572265625 + }, + { + "x": -12.344970703125, + "y": 6.48199462890625 + }, + { + "x": -17.48291015625, + "y": 13.557586669921875 + }, + { + "x": -1.9662322998046875, + "y": -0.15106201171875 + }, + { + "x": 6.283416748046875, + "y": -2.76397705078125 + }, + { + "x": 4.768768310546875, + "y": -0.7327880859375 + }, + { + "x": 3.5340576171875, + "y": 3.123687744140625 + }, + { + "x": 0.72222900390625, + "y": 4.0709228515625 + }, + { + "x": -6.2509765625, + "y": 5.24658203125 + }, + { + "x": -12.02679443359375, + "y": 4.715087890625 + }, + { + "x": -3.976837158203125, + "y": -7.069488525390625 + }, + { + "x": 2.6822509765625, + "y": -5.563568115234375 + }, + { + "x": 11.32391357421875, + "y": -7.6851806640625 + }, + { + "x": 8.865386962890625, + "y": -0.59515380859375 + }, + { + "x": -0.08990478515625, + "y": 1.238525390625 + }, + { + "x": -3.739990234375, + "y": 0.181549072265625 + }, + { + "x": -7.1466064453125, + "y": 2.4739990234375 + }, + { + "x": -8.3634033203125, + "y": -2.00140380859375 + }, + { + "x": 3.458953857421875, + "y": -6.12115478515625 + }, + { + "x": 5.79248046875, + "y": -4.9259033203125 + }, + { + "x": 9.52484130859375, + "y": -7.36297607421875 + }, + { + "x": 3.53033447265625, + "y": -6.58587646484375 + }, + { + "x": 5.16729736328125, + "y": -7.907470703125 + }, + { + "x": -1.1544189453125, + "y": -1.76568603515625 + }, + { + "x": -10.6871337890625, + "y": 0.04400634765625 + }, + { + "x": -5.619964599609375, + "y": -3.93951416015625 + }, + { + "x": 5.87811279296875, + "y": -3.80133056640625 + }, + { + "x": 4.289581298828125, + "y": -7.70916748046875 + }, + { + "x": 9.41082763671875, + "y": -7.5777587890625 + }, + { + "x": 3.82659912109375, + "y": -1.4454345703125 + }, + { + "x": 3.19268798828125, + "y": -3.13165283203125 + }, + { + "x": -16.715744018554688, + "y": 5.21484375 + }, + { + "x": -5.193328857421875, + "y": 0.23223876953125 + }, + { + "x": 3.972198486328125, + "y": -0.02337646484375 + }, + { + "x": 8.608856201171875, + "y": -8.109130859375 + }, + { + "x": 3.680389404296875, + "y": -10.2518310546875 + }, + { + "x": 5.0838623046875, + "y": -2.47979736328125 + }, + { + "x": 4.79119873046875, + "y": 23.37957763671875 + }, + { + "x": -14.5384521484375, + "y": 11.1485595703125 + }, + { + "x": -10.52801513671875, + "y": 6.87042236328125 + }, + { + "x": -2.56170654296875, + "y": 4.4471435546875 + }, + { + "x": 5.054351806640625, + "y": 3.5330810546875 + }, + { + "x": 6.179595947265625, + "y": 0.12261962890625 + }, + { + "x": 5.16949462890625, + "y": -4.48248291015625 + }, + { + "x": 19.14642333984375, + "y": -13.622314453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.1379765143698225, + "y": -0.013004672865712193, + "z": 0.28194252732950537 + }, + "rotation": { + "quaternion": { + "W": 0.9418998106230607, + "X": 0.2885543156696579, + "Y": -0.15596370613566776, + "Z": 0.07236349925953753 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img38.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img38.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 185.40664672851562, + "y": 319.9282531738281 + }, + { + "x": 276.33660888671875, + "y": 323.976806640625 + }, + { + "x": 370.3404541015625, + "y": 326.5173034667969 + }, + { + "x": 469.27886962890625, + "y": 330.97186279296875 + }, + { + "x": 559.7010498046875, + "y": 329.4048156738281 + }, + { + "x": 648.1258544921875, + "y": 339.15789794921875 + }, + { + "x": 730.5824584960938, + "y": 336.3000793457031 + }, + { + "x": 180.1776123046875, + "y": 397.9094543457031 + }, + { + "x": 271.33221435546875, + "y": 403.46954345703125 + }, + { + "x": 365.34588623046875, + "y": 404.6914367675781 + }, + { + "x": 454.38433837890625, + "y": 403.7714538574219 + }, + { + "x": 540.3876953125, + "y": 405.6019592285156 + }, + { + "x": 626.3294677734375, + "y": 407.24560546875 + }, + { + "x": 707.3075561523438, + "y": 410.6219482421875 + }, + { + "x": 184.86741638183594, + "y": 475.638671875 + }, + { + "x": 272.7291564941406, + "y": 476.6908874511719 + }, + { + "x": 353.4007568359375, + "y": 478.849853515625 + }, + { + "x": 439.93353271484375, + "y": 472.9284362792969 + }, + { + "x": 528.902587890625, + "y": 472.71343994140625 + }, + { + "x": 609.4287109375, + "y": 474.7973937988281 + }, + { + "x": 685.6708374023438, + "y": 473.3441467285156 + }, + { + "x": 190.3793487548828, + "y": 537.8446044921875 + }, + { + "x": 269.27838134765625, + "y": 540.4869384765625 + }, + { + "x": 353.16802978515625, + "y": 539.2364501953125 + }, + { + "x": 431.36407470703125, + "y": 540.3540649414062 + }, + { + "x": 514.2998657226562, + "y": 539.5887451171875 + }, + { + "x": 587.3573608398438, + "y": 539.824951171875 + }, + { + "x": 664.0650634765625, + "y": 534.1880493164062 + }, + { + "x": 194.54112243652344, + "y": 596.153564453125 + }, + { + "x": 276.572265625, + "y": 598.0059204101562 + }, + { + "x": 348.0893859863281, + "y": 595.4758911132812 + }, + { + "x": 428.5637512207031, + "y": 597.8229370117188 + }, + { + "x": 498.5586242675781, + "y": 595.3436889648438 + }, + { + "x": 576.3935546875, + "y": 589.3973388671875 + }, + { + "x": 644.6051025390625, + "y": 588.4252319335938 + }, + { + "x": 201.61532592773438, + "y": 647.8368530273438 + }, + { + "x": 274.6610107421875, + "y": 647.354248046875 + }, + { + "x": 345.0433654785156, + "y": 645.4352416992188 + }, + { + "x": 416.7093505859375, + "y": 649.7572021484375 + }, + { + "x": 493.6900939941406, + "y": 646.2612915039062 + }, + { + "x": 562.7210693359375, + "y": 638.9707641601562 + }, + { + "x": 632.2909545898438, + "y": 604.5697631835938 + }, + { + "x": 202.3524627685547, + "y": 692.6123657226562 + }, + { + "x": 277.78515625, + "y": 693.3571166992188 + }, + { + "x": 346.67144775390625, + "y": 691.5777587890625 + }, + { + "x": 413.172607421875, + "y": 687.6765747070312 + }, + { + "x": 482.6102600097656, + "y": 687.5339965820312 + }, + { + "x": 552.2625122070312, + "y": 690.2167358398438 + }, + { + "x": 615.4113159179688, + "y": 680.718017578125 + } + ], + "reprojectionErrors": [ + { + "x": -9.555404663085938, + "y": 0.771148681640625 + }, + { + "x": 2.49395751953125, + "y": 1.78955078125 + }, + { + "x": 5.531707763671875, + "y": 4.1295166015625 + }, + { + "x": -1.765777587890625, + "y": 4.386566162109375 + }, + { + "x": -5.47314453125, + "y": 10.511871337890625 + }, + { + "x": -11.6883544921875, + "y": 5.177581787109375 + }, + { + "x": -16.0660400390625, + "y": 12.3270263671875 + }, + { + "x": -1.9614715576171875, + "y": 0.99969482421875 + }, + { + "x": 5.377227783203125, + "y": -1.934661865234375 + }, + { + "x": 4.4140625, + "y": -0.56463623046875 + }, + { + "x": 3.457305908203125, + "y": 2.91717529296875 + }, + { + "x": 0.987548828125, + "y": 3.621734619140625 + }, + { + "x": -5.59375, + "y": 4.48931884765625 + }, + { + "x": -11.04949951171875, + "y": 3.60308837890625 + }, + { + "x": -4.473297119140625, + "y": -5.207489013671875 + }, + { + "x": 2.039093017578125, + "y": -5.691986083984375 + }, + { + "x": 10.73516845703125, + "y": -7.19775390625 + }, + { + "x": 8.983917236328125, + "y": -0.54400634765625 + }, + { + "x": 0.5850830078125, + "y": 0.476776123046875 + }, + { + "x": -3.24676513671875, + "y": -0.732940673828125 + }, + { + "x": -6.36968994140625, + "y": 1.658416748046875 + }, + { + "x": -7.9718780517578125, + "y": -1.780029296875 + }, + { + "x": 3.707733154296875, + "y": -5.59552001953125 + }, + { + "x": 5.77679443359375, + "y": -5.33935546875 + }, + { + "x": 9.293975830078125, + "y": -7.2862548828125 + }, + { + "x": 4.16131591796875, + "y": -7.19732666015625 + }, + { + "x": 5.29815673828125, + "y": -7.96795654296875 + }, + { + "x": -0.55279541015625, + "y": -2.73345947265625 + }, + { + "x": -10.266036987304688, + "y": 0.3323974609375 + }, + { + "x": -5.22705078125, + "y": -4.169677734375 + }, + { + "x": 6.04998779296875, + "y": -4.03778076171875 + }, + { + "x": 4.428955078125, + "y": -8.5504150390625 + }, + { + "x": 9.6478271484375, + "y": -8.02093505859375 + }, + { + "x": 3.65869140625, + "y": -3.823974609375 + }, + { + "x": 4.17041015625, + "y": -4.41455078125 + }, + { + "x": -15.602279663085938, + "y": 4.43548583984375 + }, + { + "x": -4.83074951171875, + "y": 1.01318359375 + }, + { + "x": 4.6356201171875, + "y": -0.66461181640625 + }, + { + "x": 9.150970458984375, + "y": -8.29791259765625 + }, + { + "x": 4.955841064453125, + "y": -7.8480224609375 + }, + { + "x": 5.5604248046875, + "y": -3.35662841796875 + }, + { + "x": 2.6988525390625, + "y": 28.47552490234375 + }, + { + "x": -14.717300415039062, + "y": 11.30615234375 + }, + { + "x": -9.35699462890625, + "y": 5.5877685546875 + }, + { + "x": -1.14288330078125, + "y": 2.74517822265625 + }, + { + "x": 6.035369873046875, + "y": 2.35113525390625 + }, + { + "x": 7.10186767578125, + "y": -1.4974365234375 + }, + { + "x": 5.0015869140625, + "y": -7.88775634765625 + }, + { + "x": 6.65533447265625, + "y": -1.83154296875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.13805390453239755, + "y": -0.011947606421143894, + "z": 0.28553066805686744 + }, + "rotation": { + "quaternion": { + "W": 0.9413061460590944, + "X": 0.28950001363837774, + "Y": -0.15813165234829454, + "Z": 0.07160210904960927 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img39.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x720/img39.png" + } + ], + "calobjectSize": { + "width": 7.0, + "height": 7.0 + }, + "calobjectSpacing": 0.0254, + "lensmodel": "LENSMODEL_OPENCV" +} diff --git a/camera_calibrations/Left_1280x800.json b/camera_calibrations/Left_1280x800.json new file mode 100644 index 0000000..6520cdf --- /dev/null +++ b/camera_calibrations/Left_1280x800.json @@ -0,0 +1,53752 @@ +{ + "resolution": { + "width": 1280.0, + "height": 800.0 + }, + "cameraIntrinsics": { + "rows": 3, + "cols": 3, + "type": 6, + "data": [ + 1107.6719983068401, + 0.0, + 596.8940950149919, + 0.0, + 1110.0510223132944, + 403.7697208795013, + 0.0, + 0.0, + 1.0 + ] + }, + "distCoeffs": { + "rows": 1, + "cols": 8, + "type": 6, + "data": [ + -0.4080227501944989, + 0.21400696065776909, + 0.004892501025774948, + 0.0043964359952480755, + -0.08917051399857423, + 0.014703827835077631, + -0.0018834123148126578, + -0.012563388802434948 + ] + }, + "calobjectWarp": [ + -6.3926742465777914E-6, + 5.268100503977182E-4 + ], + "observations": [ + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 570.7962646484375, + "y": 272.5306701660156 + }, + { + "x": 604.7579956054688, + "y": 273.5311584472656 + }, + { + "x": 637.0672607421875, + "y": 276.0182800292969 + }, + { + "x": 673.480712890625, + "y": 276.0985107421875 + }, + { + "x": 707.6712646484375, + "y": 276.85162353515625 + }, + { + "x": 743.1464233398438, + "y": 279.7830505371094 + }, + { + "x": 777.0879516601562, + "y": 280.8121643066406 + }, + { + "x": 571.64794921875, + "y": 306.3818359375 + }, + { + "x": 604.6126098632812, + "y": 307.6180114746094 + }, + { + "x": 639.5274658203125, + "y": 309.27813720703125 + }, + { + "x": 671.7776489257812, + "y": 310.8211364746094 + }, + { + "x": 707.1506958007812, + "y": 312.0205993652344 + }, + { + "x": 741.4985961914062, + "y": 313.5374755859375 + }, + { + "x": 776.4555053710938, + "y": 315.2601013183594 + }, + { + "x": 571.17529296875, + "y": 340.521240234375 + }, + { + "x": 604.6564331054688, + "y": 341.5149841308594 + }, + { + "x": 637.1302490234375, + "y": 344.14288330078125 + }, + { + "x": 671.165771484375, + "y": 343.47967529296875 + }, + { + "x": 706.5773315429688, + "y": 345.19970703125 + }, + { + "x": 740.5352172851562, + "y": 347.6676940917969 + }, + { + "x": 774.41552734375, + "y": 350.5123596191406 + }, + { + "x": 571.6895751953125, + "y": 373.7547912597656 + }, + { + "x": 604.3404541015625, + "y": 375.21319580078125 + }, + { + "x": 636.708984375, + "y": 375.43841552734375 + }, + { + "x": 672.2512817382812, + "y": 378.03765869140625 + }, + { + "x": 704.975830078125, + "y": 380.4878845214844 + }, + { + "x": 739.3557739257812, + "y": 383.3507080078125 + }, + { + "x": 774.20166015625, + "y": 384.24383544921875 + }, + { + "x": 571.4840087890625, + "y": 406.134521484375 + }, + { + "x": 604.6383666992188, + "y": 408.07904052734375 + }, + { + "x": 637.0504760742188, + "y": 409.93865966796875 + }, + { + "x": 671.6605834960938, + "y": 412.6173095703125 + }, + { + "x": 703.8697509765625, + "y": 414.6141662597656 + }, + { + "x": 739.1452026367188, + "y": 416.2565612792969 + }, + { + "x": 772.4154663085938, + "y": 418.363037109375 + }, + { + "x": 572.3495483398438, + "y": 439.5596618652344 + }, + { + "x": 604.7400512695312, + "y": 439.9642639160156 + }, + { + "x": 636.3145141601562, + "y": 441.8126220703125 + }, + { + "x": 670.7324829101562, + "y": 444.1338195800781 + }, + { + "x": 703.1321411132812, + "y": 446.38690185546875 + }, + { + "x": 736.7008666992188, + "y": 449.5979919433594 + }, + { + "x": 771.3255615234375, + "y": 450.92047119140625 + }, + { + "x": 569.7749633789062, + "y": 471.4095458984375 + }, + { + "x": 603.3756103515625, + "y": 472.29876708984375 + }, + { + "x": 636.6486206054688, + "y": 475.47149658203125 + }, + { + "x": 669.5189208984375, + "y": 477.58880615234375 + }, + { + "x": 702.9517822265625, + "y": 478.5901184082031 + }, + { + "x": 736.2330932617188, + "y": 481.81390380859375 + }, + { + "x": 770.2011108398438, + "y": 483.7422180175781 + } + ], + "reprojectionErrors": [ + { + "x": 0.6260986328125, + "y": 0.50457763671875 + }, + { + "x": 0.02423095703125, + "y": 0.53778076171875 + }, + { + "x": 1.53143310546875, + "y": -0.901641845703125 + }, + { + "x": -0.599609375, + "y": 0.080047607421875 + }, + { + "x": -0.0323486328125, + "y": 0.403411865234375 + }, + { + "x": -0.264404296875, + "y": -1.436676025390625 + }, + { + "x": 1.53253173828125, + "y": -1.359283447265625 + }, + { + "x": -0.069580078125, + "y": 0.6162109375 + }, + { + "x": 0.07684326171875, + "y": 0.634979248046875 + }, + { + "x": -1.27716064453125, + "y": 0.246612548828125 + }, + { + "x": 0.49237060546875, + "y": -0.0074462890625 + }, + { + "x": -0.39276123046875, + "y": 0.09954833984375 + }, + { + "x": 0.22503662109375, + "y": -0.093017578125 + }, + { + "x": 0.72149658203125, + "y": -0.473052978515625 + }, + { + "x": 0.5286865234375, + "y": -0.04229736328125 + }, + { + "x": -0.08349609375, + "y": 0.433746337890625 + }, + { + "x": 0.7548828125, + "y": -0.70477294921875 + }, + { + "x": 0.48358154296875, + "y": 1.467742919921875 + }, + { + "x": -0.7025146484375, + "y": 1.27734375 + }, + { + "x": 0.03564453125, + "y": 0.35980224609375 + }, + { + "x": 1.33160400390625, + "y": -0.913238525390625 + }, + { + "x": 0.1102294921875, + "y": -0.256683349609375 + }, + { + "x": 0.09271240234375, + "y": -0.036468505859375 + }, + { + "x": 0.79443359375, + "y": 1.439117431640625 + }, + { + "x": -1.23211669921875, + "y": 0.56329345703125 + }, + { + "x": 0.0135498046875, + "y": -0.140472412109375 + }, + { + "x": 0.06744384765625, + "y": -1.2332763671875 + }, + { + "x": 0.12847900390625, + "y": -0.3323974609375 + }, + { + "x": 0.3824462890625, + "y": -0.059600830078125 + }, + { + "x": -0.3677978515625, + "y": -0.122406005859375 + }, + { + "x": 0.054931640625, + "y": -0.07562255859375 + }, + { + "x": -1.28118896484375, + "y": -0.82269287109375 + }, + { + "x": 0.23162841796875, + "y": -0.862335205078125 + }, + { + "x": -0.864990234375, + "y": -0.52130126953125 + }, + { + "x": 0.50982666015625, + "y": -0.61767578125 + }, + { + "x": -0.44488525390625, + "y": -1.331787109375 + }, + { + "x": -0.6544189453125, + "y": 0.343048095703125 + }, + { + "x": 0.3768310546875, + "y": 0.6011962890625 + }, + { + "x": -1.0023193359375, + "y": 0.414093017578125 + }, + { + "x": 0.07843017578125, + "y": 0.323272705078125 + }, + { + "x": 0.44061279296875, + "y": -0.696868896484375 + }, + { + "x": 0.206298828125, + "y": 0.200897216796875 + }, + { + "x": 2.1400146484375, + "y": -1.4346923828125 + }, + { + "x": 0.5030517578125, + "y": -0.05194091796875 + }, + { + "x": -0.38720703125, + "y": -0.923309326171875 + }, + { + "x": -0.44757080078125, + "y": -0.70928955078125 + }, + { + "x": -0.6348876953125, + "y": 0.6512451171875 + }, + { + "x": -0.22650146484375, + "y": -0.1795654296875 + }, + { + "x": -0.05181884765625, + "y": 0.316864013671875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.018924301680372707, + "y": -0.09692131762869427, + "z": 0.8229475184734675 + }, + "rotation": { + "quaternion": { + "W": 0.9866896420905447, + "X": 0.11648649563189198, + "Y": 0.11247787881080917, + "Z": 0.014938986071851361 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img0.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img0.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 343.435546875, + "y": 279.8111877441406 + }, + { + "x": 374.8524169921875, + "y": 279.3620910644531 + }, + { + "x": 405.724853515625, + "y": 278.9249267578125 + }, + { + "x": 440.3097229003906, + "y": 276.9974365234375 + }, + { + "x": 473.81884765625, + "y": 274.7114562988281 + }, + { + "x": 508.695068359375, + "y": 276.19921875 + }, + { + "x": 542.2339477539062, + "y": 273.5494384765625 + }, + { + "x": 346.0102233886719, + "y": 314.0059814453125 + }, + { + "x": 376.66497802734375, + "y": 312.80059814453125 + }, + { + "x": 410.0558776855469, + "y": 312.1311340332031 + }, + { + "x": 440.429443359375, + "y": 311.4900207519531 + }, + { + "x": 475.22869873046875, + "y": 310.0914001464844 + }, + { + "x": 509.0223388671875, + "y": 308.7449035644531 + }, + { + "x": 543.6278076171875, + "y": 309.05517578125 + }, + { + "x": 348.4088134765625, + "y": 346.47412109375 + }, + { + "x": 379.19091796875, + "y": 346.529052734375 + }, + { + "x": 409.6916809082031, + "y": 346.5581359863281 + }, + { + "x": 442.7880554199219, + "y": 344.1699523925781 + }, + { + "x": 477.3843994140625, + "y": 342.6341247558594 + }, + { + "x": 510.8768615722656, + "y": 343.81781005859375 + }, + { + "x": 544.2115478515625, + "y": 343.3172912597656 + }, + { + "x": 350.1085510253906, + "y": 380.46319580078125 + }, + { + "x": 381.29425048828125, + "y": 379.24615478515625 + }, + { + "x": 412.32373046875, + "y": 377.95526123046875 + }, + { + "x": 446.2760314941406, + "y": 377.7442321777344 + }, + { + "x": 477.832275390625, + "y": 378.4287109375 + }, + { + "x": 512.5849609375, + "y": 377.5994873046875 + }, + { + "x": 546.0772705078125, + "y": 377.6498107910156 + }, + { + "x": 352.7270812988281, + "y": 412.0950622558594 + }, + { + "x": 384.3597412109375, + "y": 412.2844543457031 + }, + { + "x": 415.27264404296875, + "y": 411.5987243652344 + }, + { + "x": 448.04248046875, + "y": 412.4681091308594 + }, + { + "x": 479.6159973144531, + "y": 411.7567138671875 + }, + { + "x": 514.325439453125, + "y": 411.8370666503906 + }, + { + "x": 547.65234375, + "y": 410.7248229980469 + }, + { + "x": 356.2326965332031, + "y": 445.42620849609375 + }, + { + "x": 386.6039123535156, + "y": 443.4148254394531 + }, + { + "x": 416.8699951171875, + "y": 443.963134765625 + }, + { + "x": 450.64166259765625, + "y": 442.7168273925781 + }, + { + "x": 481.5922546386719, + "y": 444.2070007324219 + }, + { + "x": 514.1718139648438, + "y": 444.8445739746094 + }, + { + "x": 548.968994140625, + "y": 444.5514221191406 + }, + { + "x": 356.5192565917969, + "y": 476.7262268066406 + }, + { + "x": 388.173583984375, + "y": 475.8113708496094 + }, + { + "x": 419.9476013183594, + "y": 476.46685791015625 + }, + { + "x": 451.6226806640625, + "y": 477.1673583984375 + }, + { + "x": 485.1070556640625, + "y": 474.9385070800781 + }, + { + "x": 517.2099609375, + "y": 477.43548583984375 + }, + { + "x": 551.1836547851562, + "y": 476.67974853515625 + } + ], + "reprojectionErrors": [ + { + "x": -1.171905517578125, + "y": -0.348968505859375 + }, + { + "x": -0.207672119140625, + "y": -0.74981689453125 + }, + { + "x": 1.593109130859375, + "y": -1.170318603515625 + }, + { + "x": -0.02264404296875, + "y": -0.108367919921875 + }, + { + "x": -0.262786865234375, + "y": 1.304107666015625 + }, + { + "x": -1.56622314453125, + "y": -1.065216064453125 + }, + { + "x": -1.22442626953125, + "y": 0.694854736328125 + }, + { + "x": -1.0921630859375, + "y": -0.832855224609375 + }, + { + "x": 0.462127685546875, + "y": -0.322296142578125 + }, + { + "x": -0.43084716796875, + "y": -0.35400390625 + }, + { + "x": 1.98614501953125, + "y": -0.4205322265625 + }, + { + "x": 0.273956298828125, + "y": 0.263946533203125 + }, + { + "x": -0.1322021484375, + "y": 0.889678955078125 + }, + { + "x": -1.0457763671875, + "y": -0.1480712890625 + }, + { + "x": -0.907012939453125, + "y": 0.045562744140625 + }, + { + "x": 0.3526611328125, + "y": -0.552520751953125 + }, + { + "x": 2.179473876953125, + "y": -1.1297607421875 + }, + { + "x": 1.70013427734375, + "y": 0.7052001953125 + }, + { + "x": 0.014129638671875, + "y": 1.6826171875 + }, + { + "x": -0.270904541015625, + "y": -0.064666748046875 + }, + { + "x": -0.09710693359375, + "y": -0.133026123046875 + }, + { + "x": -0.091796875, + "y": -0.94549560546875 + }, + { + "x": 0.60174560546875, + "y": -0.1231689453125 + }, + { + "x": 1.734283447265625, + "y": 0.769317626953125 + }, + { + "x": 0.230438232421875, + "y": 0.578155517578125 + }, + { + "x": 1.41278076171875, + "y": -0.512298583984375 + }, + { + "x": -0.307373046875, + "y": -0.092926025390625 + }, + { + "x": -0.4693603515625, + "y": -0.557037353515625 + }, + { + "x": -0.262298583984375, + "y": 0.087493896484375 + }, + { + "x": -0.173675537109375, + "y": -0.35125732421875 + }, + { + "x": 0.914581298828125, + "y": 0.082672119140625 + }, + { + "x": 0.42938232421875, + "y": -1.041015625 + }, + { + "x": 1.427642822265625, + "y": -0.58642578125 + }, + { + "x": -0.41912841796875, + "y": -0.9261474609375 + }, + { + "x": -0.5887451171875, + "y": -0.07586669921875 + }, + { + "x": -1.385009765625, + "y": -0.89715576171875 + }, + { + "x": -0.188446044921875, + "y": 1.007293701171875 + }, + { + "x": 1.390350341796875, + "y": 0.350799560546875 + }, + { + "x": -0.25579833984375, + "y": 1.487701416015625 + }, + { + "x": 1.20330810546875, + "y": -0.1131591796875 + }, + { + "x": 1.3214111328125, + "y": -0.8626708984375 + }, + { + "x": -0.486572265625, + "y": -0.68280029296875 + }, + { + "x": 0.647857666015625, + "y": -0.15472412109375 + }, + { + "x": 0.4122314453125, + "y": 0.7928466796875 + }, + { + "x": 0.331268310546875, + "y": 0.170013427734375 + }, + { + "x": 0.627105712890625, + "y": -0.497894287109375 + }, + { + "x": -0.604949951171875, + "y": 1.763519287109375 + }, + { + "x": -0.17047119140625, + "y": -0.700927734375 + }, + { + "x": -1.318115234375, + "y": 0.087249755859375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.19169814738534408, + "y": -0.09338414387484871, + "z": 0.8339091294192325 + }, + "rotation": { + "quaternion": { + "W": 0.9932411778988564, + "X": 0.08980414883564969, + "Y": 0.07271766968860095, + "Z": -0.010923273001097385 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img1.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img1.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 724.33740234375, + "y": 302.30242919921875 + }, + { + "x": 759.3504638671875, + "y": 305.2104797363281 + }, + { + "x": 790.6839599609375, + "y": 309.3272399902344 + }, + { + "x": 827.4080810546875, + "y": 310.6379699707031 + }, + { + "x": 861.912109375, + "y": 313.8838195800781 + }, + { + "x": 897.600341796875, + "y": 317.78851318359375 + }, + { + "x": 931.4989013671875, + "y": 321.4364013671875 + }, + { + "x": 724.4388427734375, + "y": 336.3638000488281 + }, + { + "x": 757.36083984375, + "y": 340.093505859375 + }, + { + "x": 792.0465087890625, + "y": 342.6795654296875 + }, + { + "x": 823.4581298828125, + "y": 347.2584533691406 + }, + { + "x": 860.6633911132812, + "y": 349.6784973144531 + }, + { + "x": 894.8713989257812, + "y": 353.2148132324219 + }, + { + "x": 929.9569091796875, + "y": 356.332275390625 + }, + { + "x": 723.092041015625, + "y": 371.92767333984375 + }, + { + "x": 755.7178955078125, + "y": 374.1385192871094 + }, + { + "x": 788.3846435546875, + "y": 379.07244873046875 + }, + { + "x": 822.39599609375, + "y": 380.20562744140625 + }, + { + "x": 858.6258544921875, + "y": 384.2584228515625 + }, + { + "x": 892.8635864257812, + "y": 388.59661865234375 + }, + { + "x": 926.8267822265625, + "y": 392.8719787597656 + }, + { + "x": 721.6903686523438, + "y": 405.1097717285156 + }, + { + "x": 754.2052001953125, + "y": 409.3780212402344 + }, + { + "x": 786.9174194335938, + "y": 410.648681640625 + }, + { + "x": 822.617919921875, + "y": 416.1620178222656 + }, + { + "x": 855.275146484375, + "y": 419.77850341796875 + }, + { + "x": 890.1236572265625, + "y": 425.2070007324219 + }, + { + "x": 924.7273559570312, + "y": 427.9163818359375 + }, + { + "x": 721.2958984375, + "y": 438.1363525390625 + }, + { + "x": 752.9432983398438, + "y": 441.6398620605469 + }, + { + "x": 786.2275390625, + "y": 446.008544921875 + }, + { + "x": 820.195556640625, + "y": 450.9080505371094 + }, + { + "x": 852.9901733398438, + "y": 455.37750244140625 + }, + { + "x": 887.9613647460938, + "y": 458.6522521972656 + }, + { + "x": 922.526611328125, + "y": 461.9317932128906 + }, + { + "x": 719.6592407226562, + "y": 472.1673583984375 + }, + { + "x": 752.47900390625, + "y": 475.1912841796875 + }, + { + "x": 783.6768798828125, + "y": 478.65252685546875 + }, + { + "x": 817.5588989257812, + "y": 484.113037109375 + }, + { + "x": 850.228515625, + "y": 487.5429992675781 + }, + { + "x": 882.9489135742188, + "y": 493.5604248046875 + }, + { + "x": 918.6246948242188, + "y": 496.7059020996094 + }, + { + "x": 715.6216430664062, + "y": 504.5133361816406 + }, + { + "x": 749.1492309570312, + "y": 508.2268981933594 + }, + { + "x": 782.3070068359375, + "y": 513.286865234375 + }, + { + "x": 814.8165283203125, + "y": 517.1531982421875 + }, + { + "x": 848.7494506835938, + "y": 520.7509155273438 + }, + { + "x": 881.9307861328125, + "y": 525.9287719726562 + }, + { + "x": 915.55419921875, + "y": 530.6686401367188 + } + ], + "reprojectionErrors": [ + { + "x": 2.445068359375, + "y": 2.859649658203125 + }, + { + "x": -0.33795166015625, + "y": 2.11279296875 + }, + { + "x": 1.4697265625, + "y": 0.21820068359375 + }, + { + "x": -1.16302490234375, + "y": 1.193206787109375 + }, + { + "x": -0.58416748046875, + "y": 0.2994384765625 + }, + { + "x": -0.15423583984375, + "y": -1.18389892578125 + }, + { + "x": 3.14703369140625, + "y": -2.338104248046875 + }, + { + "x": 0.9896240234375, + "y": 2.453704833984375 + }, + { + "x": 0.09173583984375, + "y": 1.33880615234375 + }, + { + "x": -1.66986083984375, + "y": 1.440826416015625 + }, + { + "x": 0.78094482421875, + "y": -0.37353515625 + }, + { + "x": -1.5830078125, + "y": 0.050689697265625 + }, + { + "x": 0.0721435546875, + "y": -0.558135986328125 + }, + { + "x": 1.91705322265625, + "y": -0.66119384765625 + }, + { + "x": 0.95709228515625, + "y": 0.17596435546875 + }, + { + "x": 0.154296875, + "y": 1.0234375 + }, + { + "x": 0.19976806640625, + "y": -0.76690673828125 + }, + { + "x": -0.1724853515625, + "y": 1.33233642578125 + }, + { + "x": -1.79656982421875, + "y": 0.6046142578125 + }, + { + "x": -0.419677734375, + "y": -0.31182861328125 + }, + { + "x": 2.28515625, + "y": -1.064453125 + }, + { + "x": 0.95404052734375, + "y": -0.074249267578125 + }, + { + "x": 0.06597900390625, + "y": -0.85015869140625 + }, + { + "x": -0.14068603515625, + "y": 1.46826171875 + }, + { + "x": -2.419921875, + "y": -0.355133056640625 + }, + { + "x": -0.7010498046875, + "y": -0.176513671875 + }, + { + "x": -0.17718505859375, + "y": -1.700225830078125 + }, + { + "x": 1.6314697265625, + "y": -0.390289306640625 + }, + { + "x": -0.08148193359375, + "y": -0.5086669921875 + }, + { + "x": -0.293701171875, + "y": -0.094940185546875 + }, + { + "x": -1.274169921875, + "y": -0.43841552734375 + }, + { + "x": -2.033447265625, + "y": -1.200286865234375 + }, + { + "x": -0.6759033203125, + "y": -1.414886474609375 + }, + { + "x": -0.51092529296875, + "y": -0.3125 + }, + { + "x": 1.08709716796875, + "y": 0.912689208984375 + }, + { + "x": 0.099853515625, + "y": -2.273162841796875 + }, + { + "x": -1.4718017578125, + "y": -0.963531494140625 + }, + { + "x": -0.56280517578125, + "y": 0.02752685546875 + }, + { + "x": -1.44342041015625, + "y": -0.857025146484375 + }, + { + "x": -0.1793212890625, + "y": 0.417938232421875 + }, + { + "x": 2.0062255859375, + "y": -0.760162353515625 + }, + { + "x": 2.25091552734375, + "y": 1.073974609375 + }, + { + "x": 2.656982421875, + "y": -2.664703369140625 + }, + { + "x": 0.19476318359375, + "y": -1.636627197265625 + }, + { + "x": -1.04840087890625, + "y": -1.825714111328125 + }, + { + "x": -0.75885009765625, + "y": -0.68658447265625 + }, + { + "x": -0.97113037109375, + "y": 0.86138916015625 + }, + { + "x": 0.529052734375, + "y": 0.9754638671875 + }, + { + "x": 2.58941650390625, + "y": 1.6800537109375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.09754677960913198, + "y": -0.07389608725685344, + "z": 0.8318668127087413 + }, + "rotation": { + "quaternion": { + "W": 0.967648952497398, + "X": 0.08501734913106875, + "Y": 0.2353158066930809, + "Z": 0.03246576963201106 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img2.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img2.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 764.0146484375, + "y": 115.57064056396484 + }, + { + "x": 797.7438354492188, + "y": 116.76216125488281 + }, + { + "x": 829.558837890625, + "y": 120.48848724365234 + }, + { + "x": 866.55517578125, + "y": 121.06852722167969 + }, + { + "x": 900.5191040039062, + "y": 123.40448760986328 + }, + { + "x": 936.5945434570312, + "y": 127.25949096679688 + }, + { + "x": 969.7861938476562, + "y": 130.6584014892578 + }, + { + "x": 763.8350830078125, + "y": 149.35487365722656 + }, + { + "x": 796.3692016601562, + "y": 152.25921630859375 + }, + { + "x": 831.093994140625, + "y": 153.59034729003906 + }, + { + "x": 863.5181274414062, + "y": 157.2333221435547 + }, + { + "x": 899.8999633789062, + "y": 159.2813262939453 + }, + { + "x": 934.413818359375, + "y": 162.47010803222656 + }, + { + "x": 969.7954711914062, + "y": 165.2098846435547 + }, + { + "x": 761.5237426757812, + "y": 185.5125732421875 + }, + { + "x": 795.3045043945312, + "y": 186.11895751953125 + }, + { + "x": 828.0206298828125, + "y": 190.4281005859375 + }, + { + "x": 862.8292846679688, + "y": 190.85118103027344 + }, + { + "x": 898.3701782226562, + "y": 194.40283203125 + }, + { + "x": 933.3028564453125, + "y": 198.25408935546875 + }, + { + "x": 967.0409545898438, + "y": 203.06654357910156 + }, + { + "x": 761.5562744140625, + "y": 219.54269409179688 + }, + { + "x": 793.4904174804688, + "y": 222.76663208007812 + }, + { + "x": 827.4315185546875, + "y": 223.404296875 + }, + { + "x": 862.36962890625, + "y": 227.80419921875 + }, + { + "x": 896.4959716796875, + "y": 231.10147094726562 + }, + { + "x": 930.6791381835938, + "y": 236.49362182617188 + }, + { + "x": 967.005615234375, + "y": 238.8135528564453 + }, + { + "x": 758.8035888671875, + "y": 254.24896240234375 + }, + { + "x": 793.1947021484375, + "y": 256.4457092285156 + }, + { + "x": 825.3037719726562, + "y": 260.4512023925781 + }, + { + "x": 860.8785400390625, + "y": 264.0054931640625 + }, + { + "x": 893.406005859375, + "y": 268.0197448730469 + }, + { + "x": 930.1063842773438, + "y": 271.53240966796875 + }, + { + "x": 962.925048828125, + "y": 276.0758972167969 + }, + { + "x": 759.0077514648438, + "y": 288.5876770019531 + }, + { + "x": 790.9979248046875, + "y": 291.2249755859375 + }, + { + "x": 824.33203125, + "y": 294.2854919433594 + }, + { + "x": 857.3009033203125, + "y": 300.161376953125 + }, + { + "x": 892.2925415039062, + "y": 302.2056884765625 + }, + { + "x": 925.643798828125, + "y": 308.2068176269531 + }, + { + "x": 961.91357421875, + "y": 310.81982421875 + }, + { + "x": 754.276123046875, + "y": 323.61956787109375 + }, + { + "x": 788.6796264648438, + "y": 325.50006103515625 + }, + { + "x": 821.8855590820312, + "y": 330.6407470703125 + }, + { + "x": 855.8350219726562, + "y": 334.2801208496094 + }, + { + "x": 889.6886596679688, + "y": 338.2821350097656 + }, + { + "x": 925.3927612304688, + "y": 343.7742919921875 + }, + { + "x": 959.5393676757812, + "y": 347.6345520019531 + } + ], + "reprojectionErrors": [ + { + "x": 0.2596435546875, + "y": -3.4948959350585938 + }, + { + "x": 1.353271484375, + "y": -1.099945068359375 + }, + { + "x": 4.10052490234375, + "y": -1.2661285400390625 + }, + { + "x": 1.40875244140625, + "y": 1.6879043579101562 + }, + { + "x": 1.494384765625, + "y": 2.8602371215820312 + }, + { + "x": -0.7838134765625, + "y": 2.4880218505859375 + }, + { + "x": -0.4278564453125, + "y": 2.5466461181640625 + }, + { + "x": -1.64886474609375, + "y": -1.766815185546875 + }, + { + "x": 0.69769287109375, + "y": -1.212799072265625 + }, + { + "x": 0.59228515625, + "y": 0.8889617919921875 + }, + { + "x": 2.52899169921875, + "y": 0.6536712646484375 + }, + { + "x": 0.252197265625, + "y": 1.9884490966796875 + }, + { + "x": -0.40966796875, + "y": 2.15777587890625 + }, + { + "x": -2.18975830078125, + "y": 2.7516937255859375 + }, + { + "x": -1.39923095703125, + "y": -2.3394012451171875 + }, + { + "x": -0.237548828125, + "y": 0.3841705322265625 + }, + { + "x": 1.7265625, + "y": -0.6196136474609375 + }, + { + "x": 1.3387451171875, + "y": 2.2383575439453125 + }, + { + "x": -0.03790283203125, + "y": 1.94366455078125 + }, + { + "x": -1.0601806640625, + "y": 1.3255767822265625 + }, + { + "x": -1.13916015625, + "y": -0.27728271484375 + }, + { + "x": -3.4676513671875, + "y": -0.6995849609375 + }, + { + "x": -0.3936767578125, + "y": -0.7223358154296875 + }, + { + "x": 0.41015625, + "y": 1.817474365234375 + }, + { + "x": -0.04327392578125, + "y": 0.57159423828125 + }, + { + "x": 0.05755615234375, + "y": 0.4051361083984375 + }, + { + "x": -0.1531982421875, + "y": -1.8791656494140625 + }, + { + "x": -2.75933837890625, + "y": -1.1139678955078125 + }, + { + "x": -2.72552490234375, + "y": 0.361053466796875 + }, + { + "x": -2.03900146484375, + "y": 1.23626708984375 + }, + { + "x": 0.66552734375, + "y": 0.2799072265625 + }, + { + "x": -0.35687255859375, + "y": -0.247833251953125 + }, + { + "x": 1.40948486328125, + "y": -1.25787353515625 + }, + { + "x": -1.252685546875, + "y": -1.7884521484375 + }, + { + "x": -0.28619384765625, + "y": -3.3717041015625 + }, + { + "x": -4.91552734375, + "y": 1.898529052734375 + }, + { + "x": -1.75445556640625, + "y": 2.203399658203125 + }, + { + "x": -0.20245361328125, + "y": 2.063140869140625 + }, + { + "x": 1.45257568359375, + "y": -0.914215087890625 + }, + { + "x": 0.8253173828125, + "y": -0.081451416015625 + }, + { + "x": 1.58172607421875, + "y": -3.226776123046875 + }, + { + "x": -0.8343505859375, + "y": -3.004974365234375 + }, + { + "x": -2.14556884765625, + "y": 2.864532470703125 + }, + { + "x": -1.32012939453125, + "y": 3.795806884765625 + }, + { + "x": 0.43658447265625, + "y": 1.445831298828125 + }, + { + "x": 1.18646240234375, + "y": 0.57635498046875 + }, + { + "x": 1.77154541015625, + "y": -0.676361083984375 + }, + { + "x": 0.2484130859375, + "y": -3.439605712890625 + }, + { + "x": 0.02777099609375, + "y": -4.591094970703125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.11838062101817878, + "y": -0.20586013688821372, + "z": 0.7834075238347548 + }, + "rotation": { + "quaternion": { + "W": 0.9973741941888243, + "X": -0.02534358200835139, + "Y": -0.05907072705885718, + "Z": 0.033362686071678575 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img3.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img3.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 848.8619384765625, + "y": 54.617103576660156 + }, + { + "x": 852.2245483398438, + "y": 86.5873794555664 + }, + { + "x": 852.9122924804688, + "y": 121.53862762451172 + }, + { + "x": 855.9153442382812, + "y": 156.0608673095703 + }, + { + "x": 855.7520751953125, + "y": 191.36476135253906 + }, + { + "x": 857.9418334960938, + "y": 225.173583984375 + }, + { + "x": 859.1160278320312, + "y": 260.8408203125 + }, + { + "x": 816.897216796875, + "y": 55.257530212402344 + }, + { + "x": 817.0579223632812, + "y": 88.26519012451172 + }, + { + "x": 820.4281616210938, + "y": 121.69529724121094 + }, + { + "x": 820.5255737304688, + "y": 158.48947143554688 + }, + { + "x": 823.43603515625, + "y": 191.34457397460938 + }, + { + "x": 821.8046875, + "y": 226.526611328125 + }, + { + "x": 825.2178955078125, + "y": 260.9989318847656 + }, + { + "x": 782.06640625, + "y": 55.93898010253906 + }, + { + "x": 784.5707397460938, + "y": 89.23030090332031 + }, + { + "x": 786.2589721679688, + "y": 121.56167602539062 + }, + { + "x": 786.65673828125, + "y": 157.1374969482422 + }, + { + "x": 786.7992553710938, + "y": 192.76388549804688 + }, + { + "x": 789.3950805664062, + "y": 225.4316864013672 + }, + { + "x": 790.3435668945312, + "y": 259.96087646484375 + }, + { + "x": 749.302490234375, + "y": 57.76593017578125 + }, + { + "x": 748.6221923828125, + "y": 91.66790008544922 + }, + { + "x": 750.63330078125, + "y": 122.94548797607422 + }, + { + "x": 754.1077270507812, + "y": 157.58787536621094 + }, + { + "x": 755.4843139648438, + "y": 192.34097290039062 + }, + { + "x": 755.1737670898438, + "y": 227.22540283203125 + }, + { + "x": 757.1940307617188, + "y": 260.6513977050781 + }, + { + "x": 714.4850463867188, + "y": 61.066490173339844 + }, + { + "x": 720.1570434570312, + "y": 93.0250015258789 + }, + { + "x": 717.5465698242188, + "y": 127.2664794921875 + }, + { + "x": 719.7283325195312, + "y": 157.676513671875 + }, + { + "x": 721.2752685546875, + "y": 193.19349670410156 + }, + { + "x": 722.5595703125, + "y": 225.6143798828125 + }, + { + "x": 723.2509155273438, + "y": 261.4845275878906 + }, + { + "x": 683.8679809570312, + "y": 61.42197799682617 + }, + { + "x": 684.8025512695312, + "y": 94.38531494140625 + }, + { + "x": 686.6144409179688, + "y": 126.8140869140625 + }, + { + "x": 686.8826904296875, + "y": 161.54942321777344 + }, + { + "x": 690.0036010742188, + "y": 193.6192169189453 + }, + { + "x": 689.9174194335938, + "y": 227.41970825195312 + }, + { + "x": 691.6798095703125, + "y": 261.3805847167969 + }, + { + "x": 652.165771484375, + "y": 63.531654357910156 + }, + { + "x": 654.50439453125, + "y": 96.5363540649414 + }, + { + "x": 654.5001220703125, + "y": 130.03306579589844 + }, + { + "x": 656.3977661132812, + "y": 162.23658752441406 + }, + { + "x": 656.4140625, + "y": 195.90359497070312 + }, + { + "x": 659.4828491210938, + "y": 229.34402465820312 + }, + { + "x": 657.06396484375, + "y": 263.1923522949219 + } + ], + "reprojectionErrors": [ + { + "x": 1.789306640625, + "y": 0.3269920349121094 + }, + { + "x": -0.4091796875, + "y": 1.9900436401367188 + }, + { + "x": 0.066162109375, + "y": 0.6503753662109375 + }, + { + "x": -1.77496337890625, + "y": -0.282135009765625 + }, + { + "x": -0.45086669921875, + "y": -2.01824951171875 + }, + { + "x": -1.48095703125, + "y": -2.281341552734375 + }, + { + "x": -1.49658203125, + "y": -4.425018310546875 + }, + { + "x": 0.33624267578125, + "y": 0.8716011047363281 + }, + { + "x": 1.35089111328125, + "y": 1.5034561157226562 + }, + { + "x": -0.8450927734375, + "y": 1.69110107421875 + }, + { + "x": 0.230712890625, + "y": -1.507171630859375 + }, + { + "x": -1.50762939453125, + "y": -0.7883453369140625 + }, + { + "x": 1.29473876953125, + "y": -2.4185028076171875 + }, + { + "x": -0.948486328125, + "y": -3.361114501953125 + }, + { + "x": 1.75726318359375, + "y": 1.3413543701171875 + }, + { + "x": 0.43963623046875, + "y": 1.699188232421875 + }, + { + "x": -0.06298828125, + "y": 2.9951934814453125 + }, + { + "x": 0.72381591796875, + "y": 1.0248870849609375 + }, + { + "x": 1.764892578125, + "y": -1.017974853515625 + }, + { + "x": 0.3515625, + "y": -0.1243133544921875 + }, + { + "x": 0.58453369140625, + "y": -1.114227294921875 + }, + { + "x": 1.109130859375, + "y": 0.6321029663085938 + }, + { + "x": 2.987548828125, + "y": 0.39238739013671875 + }, + { + "x": 2.173583984375, + "y": 2.7552719116210938 + }, + { + "x": -0.104736328125, + "y": 1.7314605712890625 + }, + { + "x": -0.28619384765625, + "y": 0.5749359130859375 + }, + { + "x": 1.21844482421875, + "y": -0.7350006103515625 + }, + { + "x": 0.3912353515625, + "y": -0.60870361328125 + }, + { + "x": 2.50201416015625, + "y": -1.5839691162109375 + }, + { + "x": -1.96026611328125, + "y": 0.1363525390625 + }, + { + "x": 1.85894775390625, + "y": -0.4481048583984375 + }, + { + "x": 0.885009765625, + "y": 2.7769775390625 + }, + { + "x": 0.54486083984375, + "y": 0.873077392578125 + }, + { + "x": 0.46636962890625, + "y": 2.0431671142578125 + }, + { + "x": 0.9798583984375, + "y": -0.25823974609375 + }, + { + "x": -0.328369140625, + "y": -0.8878898620605469 + }, + { + "x": -0.04144287109375, + "y": -0.15233612060546875 + }, + { + "x": -0.6328125, + "y": 1.095947265625 + }, + { + "x": 0.31854248046875, + "y": 0.015716552734375 + }, + { + "x": -1.583740234375, + "y": 1.5789794921875 + }, + { + "x": -0.2799072265625, + "y": 1.389404296875 + }, + { + "x": -0.8255615234375, + "y": 1.017181396484375 + }, + { + "x": -2.10675048828125, + "y": -1.9786567687988281 + }, + { + "x": -3.21197509765625, + "y": -1.2609100341796875 + }, + { + "x": -1.97528076171875, + "y": -1.0570526123046875 + }, + { + "x": -2.641357421875, + "y": 0.41802978515625 + }, + { + "x": -1.42706298828125, + "y": 0.40753173828125 + }, + { + "x": -3.26611328125, + "y": 0.6014404296875 + }, + { + "x": 0.38153076171875, + "y": 0.365142822265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.19249761830630127, + "y": -0.26404849866184327, + "z": 0.8402688480757026 + }, + "rotation": { + "quaternion": { + "W": 0.7201587884122012, + "X": -0.002173848716817247, + "Y": -0.009724051241315326, + "Z": 0.6937377290315723 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img4.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img4.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 896.1363525390625, + "y": 284.39385986328125 + }, + { + "x": 930.2803955078125, + "y": 287.3790588378906 + }, + { + "x": 962.7525024414062, + "y": 292.6500549316406 + }, + { + "x": 998.14111328125, + "y": 294.9725036621094 + }, + { + "x": 1030.9112548828125, + "y": 299.54534912109375 + }, + { + "x": 1064.7677001953125, + "y": 303.3085632324219 + }, + { + "x": 1096.5235595703125, + "y": 308.0357971191406 + }, + { + "x": 895.583251953125, + "y": 317.1852111816406 + }, + { + "x": 928.4375, + "y": 321.32000732421875 + }, + { + "x": 962.9363403320312, + "y": 324.30841064453125 + }, + { + "x": 993.7559814453125, + "y": 329.5995788574219 + }, + { + "x": 1028.97900390625, + "y": 332.2579650878906 + }, + { + "x": 1061.47900390625, + "y": 336.7302551269531 + }, + { + "x": 1094.2869873046875, + "y": 340.2738952636719 + }, + { + "x": 893.4613037109375, + "y": 350.5658264160156 + }, + { + "x": 927.3432006835938, + "y": 354.1191101074219 + }, + { + "x": 959.1569213867188, + "y": 358.1707763671875 + }, + { + "x": 991.8953247070312, + "y": 360.5767822265625 + }, + { + "x": 1025.5916748046875, + "y": 365.6880187988281 + }, + { + "x": 1058.546875, + "y": 369.4623107910156 + }, + { + "x": 1089.705078125, + "y": 373.75323486328125 + }, + { + "x": 891.938720703125, + "y": 382.65936279296875 + }, + { + "x": 924.29150390625, + "y": 386.3162841796875 + }, + { + "x": 956.7420654296875, + "y": 388.3687744140625 + }, + { + "x": 990.9618530273438, + "y": 394.0201721191406 + }, + { + "x": 1022.103759765625, + "y": 397.5724792480469 + }, + { + "x": 1054.9410400390625, + "y": 402.14556884765625 + }, + { + "x": 1086.44677734375, + "y": 405.46380615234375 + }, + { + "x": 890.44580078125, + "y": 413.3073425292969 + }, + { + "x": 921.8582153320312, + "y": 416.4059143066406 + }, + { + "x": 954.5829467773438, + "y": 421.3308410644531 + }, + { + "x": 987.5009155273438, + "y": 425.45538330078125 + }, + { + "x": 1018.755859375, + "y": 429.9866027832031 + }, + { + "x": 1050.9605712890625, + "y": 432.8916931152344 + }, + { + "x": 1083.7108154296875, + "y": 435.6615295410156 + }, + { + "x": 888.3208618164062, + "y": 445.3302001953125 + }, + { + "x": 919.83203125, + "y": 448.6103820800781 + }, + { + "x": 952.2267456054688, + "y": 451.6220397949219 + }, + { + "x": 984.1466064453125, + "y": 455.6399841308594 + }, + { + "x": 1015.3260498046875, + "y": 459.6031188964844 + }, + { + "x": 1046.5423583984375, + "y": 464.02081298828125 + }, + { + "x": 1077.9599609375, + "y": 467.62725830078125 + }, + { + "x": 884.1975708007812, + "y": 474.5758361816406 + }, + { + "x": 916.2097778320312, + "y": 477.8363037109375 + }, + { + "x": 949.1312866210938, + "y": 482.4183349609375 + }, + { + "x": 980.4594116210938, + "y": 486.2781677246094 + }, + { + "x": 1011.7952270507812, + "y": 489.577880859375 + }, + { + "x": 1042.869140625, + "y": 493.74493408203125 + }, + { + "x": 1072.8389892578125, + "y": 498.5435485839844 + } + ], + "reprojectionErrors": [ + { + "x": 5.868408203125, + "y": 2.347900390625 + }, + { + "x": 3.7247314453125, + "y": 2.83758544921875 + }, + { + "x": 3.3441162109375, + "y": 1.051666259765625 + }, + { + "x": 0.1383056640625, + "y": 2.22442626953125 + }, + { + "x": -0.357421875, + "y": 1.157012939453125 + }, + { + "x": -1.847412109375, + "y": 0.90948486328125 + }, + { + "x": -1.144775390625, + "y": -0.29180908203125 + }, + { + "x": 3.11553955078125, + "y": 1.031341552734375 + }, + { + "x": 2.2989501953125, + "y": 0.420989990234375 + }, + { + "x": -0.07086181640625, + "y": 0.967315673828125 + }, + { + "x": 1.330078125, + "y": -0.778839111328125 + }, + { + "x": -1.5804443359375, + "y": 0.11810302734375 + }, + { + "x": -1.67578125, + "y": -0.78851318359375 + }, + { + "x": -1.9866943359375, + "y": -0.756072998046875 + }, + { + "x": 1.9471435546875, + "y": -0.8035888671875 + }, + { + "x": 0.14349365234375, + "y": -0.782318115234375 + }, + { + "x": 0.4996337890625, + "y": -1.2490234375 + }, + { + "x": 0.02288818359375, + "y": -0.059661865234375 + }, + { + "x": -1.319580078125, + "y": -1.5650634765625 + }, + { + "x": -1.82861328125, + "y": -1.723052978515625 + }, + { + "x": -0.4478759765625, + "y": -2.387176513671875 + }, + { + "x": 0.19415283203125, + "y": -1.271087646484375 + }, + { + "x": -0.0364990234375, + "y": -1.302703857421875 + }, + { + "x": -0.27313232421875, + "y": 0.2806396484375 + }, + { + "x": -2.18682861328125, + "y": -1.72442626953125 + }, + { + "x": -0.9302978515625, + "y": -1.61981201171875 + }, + { + "x": -1.2764892578125, + "y": -2.525360107421875 + }, + { + "x": -0.1981201171875, + "y": -2.165435791015625 + }, + { + "x": -1.57452392578125, + "y": -0.203033447265625 + }, + { + "x": -0.8177490234375, + "y": 0.37506103515625 + }, + { + "x": -1.28106689453125, + "y": -0.862548828125 + }, + { + "x": -1.84527587890625, + "y": -1.289093017578125 + }, + { + "x": -0.65380859375, + "y": -2.11163330078125 + }, + { + "x": -0.319091796875, + "y": -1.297332763671875 + }, + { + "x": -0.4366455078125, + "y": -0.33697509765625 + }, + { + "x": -2.6982421875, + "y": -0.41015625 + }, + { + "x": -1.98974609375, + "y": 0.03839111328125 + }, + { + "x": -2.07232666015625, + "y": 0.7662353515625 + }, + { + "x": -1.58734130859375, + "y": 0.498565673828125 + }, + { + "x": -0.26898193359375, + "y": 0.29656982421875 + }, + { + "x": 1.1058349609375, + "y": -0.349151611328125 + }, + { + "x": 2.3729248046875, + "y": -0.1727294921875 + }, + { + "x": -1.81146240234375, + "y": 2.26947021484375 + }, + { + "x": -1.5501708984375, + "y": 2.790496826171875 + }, + { + "x": -2.10546875, + "y": 2.0008544921875 + }, + { + "x": -0.97430419921875, + "y": 1.9443359375 + }, + { + "x": 0.24249267578125, + "y": 2.458892822265625 + }, + { + "x": 1.8148193359375, + "y": 2.117095947265625 + }, + { + "x": 4.5850830078125, + "y": 1.15478515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.24395475056233204, + "y": -0.09337051949216067, + "z": 0.8856518441759141 + }, + "rotation": { + "quaternion": { + "W": 0.9976210480396744, + "X": -0.02932712228564314, + "Y": 0.02313898579871496, + "Z": 0.05793748133006289 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img5.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img5.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 900.099609375, + "y": 33.814327239990234 + }, + { + "x": 939.6631469726562, + "y": 35.84147262573242 + }, + { + "x": 976.6190185546875, + "y": 41.36417770385742 + }, + { + "x": 1018.8023071289062, + "y": 43.36277770996094 + }, + { + "x": 1057.25390625, + "y": 46.34238052368164 + }, + { + "x": 1094.9144287109375, + "y": 52.94905090332031 + }, + { + "x": 1130.0006103515625, + "y": 58.37883758544922 + }, + { + "x": 900.7282104492188, + "y": 71.4463119506836 + }, + { + "x": 939.9140014648438, + "y": 75.18523406982422 + }, + { + "x": 980.4354248046875, + "y": 77.99832916259766 + }, + { + "x": 1015.9597778320312, + "y": 82.90532684326172 + }, + { + "x": 1057.3935546875, + "y": 86.20201110839844 + }, + { + "x": 1093.33642578125, + "y": 90.86012268066406 + }, + { + "x": 1132.0797119140625, + "y": 95.47643280029297 + }, + { + "x": 899.6399536132812, + "y": 112.86189270019531 + }, + { + "x": 940.0872192382812, + "y": 113.68977355957031 + }, + { + "x": 976.8189086914062, + "y": 119.70219421386719 + }, + { + "x": 1016.6519775390625, + "y": 119.5152359008789 + }, + { + "x": 1057.7340087890625, + "y": 123.53240966796875 + }, + { + "x": 1095.04443359375, + "y": 129.80694580078125 + }, + { + "x": 1130.59521484375, + "y": 134.50120544433594 + }, + { + "x": 900.6021118164062, + "y": 150.96995544433594 + }, + { + "x": 938.4061279296875, + "y": 155.285888671875 + }, + { + "x": 978.4359741210938, + "y": 155.53280639648438 + }, + { + "x": 1018.2286376953125, + "y": 160.6393280029297 + }, + { + "x": 1056.0137939453125, + "y": 165.0964813232422 + }, + { + "x": 1092.923583984375, + "y": 171.1220245361328 + }, + { + "x": 1131.86474609375, + "y": 174.50833129882812 + }, + { + "x": 898.276123046875, + "y": 191.21421813964844 + }, + { + "x": 939.735595703125, + "y": 193.19229125976562 + }, + { + "x": 976.813232421875, + "y": 196.99868774414062 + }, + { + "x": 1017.6658325195312, + "y": 201.01885986328125 + }, + { + "x": 1053.57421875, + "y": 205.53561401367188 + }, + { + "x": 1093.2474365234375, + "y": 208.57725524902344 + }, + { + "x": 1128.8184814453125, + "y": 213.0941619873047 + }, + { + "x": 899.1004638671875, + "y": 230.55874633789062 + }, + { + "x": 937.6292724609375, + "y": 232.28623962402344 + }, + { + "x": 975.5310668945312, + "y": 234.50399780273438 + }, + { + "x": 1013.5969848632812, + "y": 242.01498413085938 + }, + { + "x": 1053.477294921875, + "y": 243.5669708251953 + }, + { + "x": 1088.7012939453125, + "y": 248.8374786376953 + }, + { + "x": 1127.6124267578125, + "y": 251.86813354492188 + }, + { + "x": 893.759033203125, + "y": 270.5724792480469 + }, + { + "x": 935.3480224609375, + "y": 271.7902526855469 + }, + { + "x": 973.9943237304688, + "y": 276.5561828613281 + }, + { + "x": 1013.0814819335938, + "y": 279.61578369140625 + }, + { + "x": 1051.0960693359375, + "y": 282.0571594238281 + }, + { + "x": 1089.3802490234375, + "y": 287.49737548828125 + }, + { + "x": 1126.9171142578125, + "y": 290.9644470214844 + } + ], + "reprojectionErrors": [ + { + "x": 3.03070068359375, + "y": -1.7716598510742188 + }, + { + "x": 2.25103759765625, + "y": 0.43849945068359375 + }, + { + "x": 3.7841796875, + "y": -0.8783416748046875 + }, + { + "x": -0.20166015625, + "y": 1.297821044921875 + }, + { + "x": -0.744384765625, + "y": 2.46221923828125 + }, + { + "x": -0.781494140625, + "y": -0.03089141845703125 + }, + { + "x": 1.473388671875, + "y": -1.3772354125976562 + }, + { + "x": 0.968994140625, + "y": -0.23796844482421875 + }, + { + "x": 0.70123291015625, + "y": 0.12493896484375 + }, + { + "x": -1.198974609375, + "y": 1.3830947875976562 + }, + { + "x": 1.60430908203125, + "y": 0.517120361328125 + }, + { + "x": -1.792236328125, + "y": 1.231536865234375 + }, + { + "x": 0.0147705078125, + "y": 0.5549392700195312 + }, + { + "x": -1.262939453125, + "y": -0.1091461181640625 + }, + { + "x": 0.667236328125, + "y": -2.275115966796875 + }, + { + "x": -0.7222900390625, + "y": 0.86212158203125 + }, + { + "x": 1.30487060546875, + "y": -1.2148666381835938 + }, + { + "x": -0.06500244140625, + "y": 2.8781509399414062 + }, + { + "x": -2.976318359375, + "y": 2.7379837036132812 + }, + { + "x": -2.4052734375, + "y": 0.3117218017578125 + }, + { + "x": -0.36083984375, + "y": -0.5626983642578125 + }, + { + "x": -1.6419677734375, + "y": -0.7751617431640625 + }, + { + "x": -0.242919921875, + "y": -1.2640533447265625 + }, + { + "x": -1.3707275390625, + "y": 2.28729248046875 + }, + { + "x": -2.5592041015625, + "y": 0.950531005859375 + }, + { + "x": -2.0347900390625, + "y": 0.2349853515625 + }, + { + "x": -0.92626953125, + "y": -2.0768280029296875 + }, + { + "x": -2.137451171875, + "y": -1.7769775390625 + }, + { + "x": -0.6199951171875, + "y": -1.1646270751953125 + }, + { + "x": -2.725341796875, + "y": 0.5447845458984375 + }, + { + "x": -0.752197265625, + "y": 0.3979949951171875 + }, + { + "x": -2.85406494140625, + "y": 0.0098419189453125 + }, + { + "x": -0.3084716796875, + "y": -0.9021759033203125 + }, + { + "x": -1.8212890625, + "y": -0.3660736083984375 + }, + { + "x": 0.477783203125, + "y": -1.331939697265625 + }, + { + "x": -2.70538330078125, + "y": -0.3898773193359375 + }, + { + "x": -1.72314453125, + "y": 1.428924560546875 + }, + { + "x": -0.41961669921875, + "y": 2.730499267578125 + }, + { + "x": 0.41741943359375, + "y": -1.287811279296875 + }, + { + "x": -0.8590087890625, + "y": 0.6264801025390625 + }, + { + "x": 2.22509765625, + "y": -1.203826904296875 + }, + { + "x": 1.3294677734375, + "y": -0.820098876953125 + }, + { + "x": 1.41796875, + "y": -0.00177001953125 + }, + { + "x": -0.4970703125, + "y": 2.183807373046875 + }, + { + "x": 0.222412109375, + "y": 0.795196533203125 + }, + { + "x": 0.19622802734375, + "y": 1.087158203125 + }, + { + "x": 0.941162109375, + "y": 1.971923828125 + }, + { + "x": 1.1182861328125, + "y": -0.1673583984375 + }, + { + "x": 1.747802734375, + "y": -0.3583984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.19242286513861268, + "y": -0.23307330502052534, + "z": 0.6960033134549244 + }, + "rotation": { + "quaternion": { + "W": 0.9968060104030542, + "X": -0.04891619423666011, + "Y": -0.054158274158018126, + "Z": 0.03243246684994042 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img6.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img6.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 955.7174682617188, + "y": 58.5792236328125 + }, + { + "x": 997.338134765625, + "y": 61.653045654296875 + }, + { + "x": 1036.55126953125, + "y": 68.1181640625 + }, + { + "x": 1081.55859375, + "y": 70.71340942382812 + }, + { + "x": 1122.667236328125, + "y": 74.09757995605469 + }, + { + "x": 1162.690185546875, + "y": 82.65878295898438 + }, + { + "x": 1199.7220458984375, + "y": 88.2918472290039 + }, + { + "x": 955.7166748046875, + "y": 99.55453491210938 + }, + { + "x": 996.9956665039062, + "y": 104.36286163330078 + }, + { + "x": 1040.290771484375, + "y": 107.81918334960938 + }, + { + "x": 1078.5213623046875, + "y": 113.39006805419922 + }, + { + "x": 1122.504638671875, + "y": 118.30453491210938 + }, + { + "x": 1160.849365234375, + "y": 123.37618255615234 + }, + { + "x": 1201.584716796875, + "y": 129.2610321044922 + }, + { + "x": 953.9013061523438, + "y": 144.5343780517578 + }, + { + "x": 996.8384399414062, + "y": 145.8819122314453 + }, + { + "x": 1036.248046875, + "y": 153.22093200683594 + }, + { + "x": 1078.8607177734375, + "y": 153.77313232421875 + }, + { + "x": 1122.5428466796875, + "y": 158.46554565429688 + }, + { + "x": 1161.8929443359375, + "y": 166.108642578125 + }, + { + "x": 1199.489990234375, + "y": 172.00523376464844 + }, + { + "x": 954.6905517578125, + "y": 185.63314819335938 + }, + { + "x": 994.6799926757812, + "y": 191.10140991210938 + }, + { + "x": 1037.4095458984375, + "y": 192.2638702392578 + }, + { + "x": 1079.47802734375, + "y": 198.34478759765625 + }, + { + "x": 1120.1431884765625, + "y": 204.28506469726562 + }, + { + "x": 1159.0791015625, + "y": 211.16275024414062 + }, + { + "x": 1200.4110107421875, + "y": 215.78932189941406 + }, + { + "x": 951.3569946289062, + "y": 229.1820068359375 + }, + { + "x": 995.7218017578125, + "y": 232.32432556152344 + }, + { + "x": 1034.9747314453125, + "y": 236.89227294921875 + }, + { + "x": 1078.261474609375, + "y": 242.5963592529297 + }, + { + "x": 1116.872802734375, + "y": 247.30332946777344 + }, + { + "x": 1159.5028076171875, + "y": 253.19088745117188 + }, + { + "x": 1196.2513427734375, + "y": 257.8414611816406 + }, + { + "x": 951.5982055664062, + "y": 271.22607421875 + }, + { + "x": 992.661376953125, + "y": 274.1749267578125 + }, + { + "x": 1032.643798828125, + "y": 277.6372375488281 + }, + { + "x": 1073.349365234375, + "y": 286.4797058105469 + }, + { + "x": 1115.666015625, + "y": 289.573974609375 + }, + { + "x": 1153.3511962890625, + "y": 295.67059326171875 + }, + { + "x": 1193.898193359375, + "y": 299.8063049316406 + }, + { + "x": 945.8329467773438, + "y": 314.2961120605469 + }, + { + "x": 989.354248046875, + "y": 316.90802001953125 + }, + { + "x": 1030.24072265625, + "y": 323.1259765625 + }, + { + "x": 1071.682861328125, + "y": 327.71044921875 + }, + { + "x": 1112.3082275390625, + "y": 331.1728820800781 + }, + { + "x": 1152.7099609375, + "y": 338.41571044921875 + }, + { + "x": 1192.2244873046875, + "y": 342.5931701660156 + } + ], + "reprojectionErrors": [ + { + "x": 3.10650634765625, + "y": -2.485595703125 + }, + { + "x": 2.90484619140625, + "y": -0.071746826171875 + }, + { + "x": 4.719970703125, + "y": -1.1001739501953125 + }, + { + "x": 0.355224609375, + "y": 1.6909942626953125 + }, + { + "x": -0.4910888671875, + "y": 3.6436309814453125 + }, + { + "x": -0.6270751953125, + "y": 0.37030029296875 + }, + { + "x": 1.85791015625, + "y": -0.0231781005859375 + }, + { + "x": 0.89862060546875, + "y": -0.8599853515625 + }, + { + "x": 1.18829345703125, + "y": -0.36435699462890625 + }, + { + "x": -0.9317626953125, + "y": 1.4337921142578125 + }, + { + "x": 1.62451171875, + "y": 1.0685806274414062 + }, + { + "x": -1.954833984375, + "y": 1.3116378784179688 + }, + { + "x": -0.2735595703125, + "y": 1.3500289916992188 + }, + { + "x": -1.35546875, + "y": 0.528350830078125 + }, + { + "x": 0.55706787109375, + "y": -2.998046875 + }, + { + "x": -0.655517578125, + "y": 0.77294921875 + }, + { + "x": 1.2630615234375, + "y": -1.4954986572265625 + }, + { + "x": -0.41259765625, + "y": 2.975555419921875 + }, + { + "x": -3.543212890625, + "y": 3.2597503662109375 + }, + { + "x": -2.722412109375, + "y": 0.547210693359375 + }, + { + "x": -0.52392578125, + "y": -0.4642181396484375 + }, + { + "x": -2.33758544921875, + "y": -0.994415283203125 + }, + { + "x": -0.440185546875, + "y": -1.531463623046875 + }, + { + "x": -1.6822509765625, + "y": 2.19085693359375 + }, + { + "x": -2.6572265625, + "y": 0.948944091796875 + }, + { + "x": -2.617431640625, + "y": -0.197479248046875 + }, + { + "x": -1.2315673828125, + "y": -2.32586669921875 + }, + { + "x": -2.619873046875, + "y": -2.2470855712890625 + }, + { + "x": -1.05828857421875, + "y": -1.1600189208984375 + }, + { + "x": -3.36737060546875, + "y": 0.4394683837890625 + }, + { + "x": -0.967041015625, + "y": 0.5684661865234375 + }, + { + "x": -2.99755859375, + "y": -0.48291015625 + }, + { + "x": -0.7442626953125, + "y": -0.580810546875 + }, + { + "x": -2.895751953125, + "y": -1.9023284912109375 + }, + { + "x": 0.4532470703125, + "y": -2.0293121337890625 + }, + { + "x": -3.30279541015625, + "y": 0.480804443359375 + }, + { + "x": -2.1346435546875, + "y": 2.082061767578125 + }, + { + "x": -0.29150390625, + "y": 3.126617431640625 + }, + { + "x": 0.4283447265625, + "y": -1.251678466796875 + }, + { + "x": -0.857666015625, + "y": 0.076171875 + }, + { + "x": 2.0986328125, + "y": -1.639862060546875 + }, + { + "x": 1.80908203125, + "y": -1.4359130859375 + }, + { + "x": 0.5098876953125, + "y": 1.418609619140625 + }, + { + "x": -0.59765625, + "y": 3.16265869140625 + }, + { + "x": 0.5205078125, + "y": 1.25897216796875 + }, + { + "x": 0.679443359375, + "y": 0.947723388671875 + }, + { + "x": 1.2572021484375, + "y": 1.718017578125 + }, + { + "x": 1.6661376953125, + "y": -1.332000732421875 + }, + { + "x": 2.5751953125, + "y": -1.3560791015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.2097718303834992, + "y": -0.20107858549267102, + "z": 0.641998381735825 + }, + "rotation": { + "quaternion": { + "W": 0.9961855327230691, + "X": -0.045126204306972825, + "Y": -0.062214856143560156, + "Z": 0.04131975015820613 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img7.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img7.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 734.1229248046875, + "y": 81.1329574584961 + }, + { + "x": 735.767578125, + "y": 115.6413803100586 + }, + { + "x": 735.6283569335938, + "y": 152.78753662109375 + }, + { + "x": 737.9168701171875, + "y": 188.87086486816406 + }, + { + "x": 736.851806640625, + "y": 226.00454711914062 + }, + { + "x": 738.4852294921875, + "y": 261.23193359375 + }, + { + "x": 739.3045043945312, + "y": 297.5801696777344 + }, + { + "x": 699.0589599609375, + "y": 81.7138671875 + }, + { + "x": 698.6856079101562, + "y": 115.90530395507812 + }, + { + "x": 700.0895385742188, + "y": 152.19000244140625 + }, + { + "x": 699.8417358398438, + "y": 190.3045654296875 + }, + { + "x": 701.7327880859375, + "y": 225.4599151611328 + }, + { + "x": 700.54736328125, + "y": 261.9298095703125 + }, + { + "x": 702.5743408203125, + "y": 298.2556457519531 + }, + { + "x": 661.4517211914062, + "y": 80.34207916259766 + }, + { + "x": 662.5369873046875, + "y": 117.04409790039062 + }, + { + "x": 663.1953125, + "y": 151.5143585205078 + }, + { + "x": 663.7293701171875, + "y": 189.65660095214844 + }, + { + "x": 663.4259643554688, + "y": 225.91415405273438 + }, + { + "x": 664.7391967773438, + "y": 261.1180725097656 + }, + { + "x": 665.6566162109375, + "y": 297.06878662109375 + }, + { + "x": 625.0361938476562, + "y": 82.18461608886719 + }, + { + "x": 624.4547729492188, + "y": 118.04597473144531 + }, + { + "x": 625.5315551757812, + "y": 152.3851776123047 + }, + { + "x": 627.5228271484375, + "y": 189.2765350341797 + }, + { + "x": 628.7865600585938, + "y": 226.64788818359375 + }, + { + "x": 628.4566650390625, + "y": 261.72772216796875 + }, + { + "x": 629.5272216796875, + "y": 298.4681396484375 + }, + { + "x": 586.8201904296875, + "y": 84.57234954833984 + }, + { + "x": 590.07958984375, + "y": 119.08100128173828 + }, + { + "x": 588.8094482421875, + "y": 155.49713134765625 + }, + { + "x": 590.299560546875, + "y": 189.4384002685547 + }, + { + "x": 591.1842041015625, + "y": 226.33505249023438 + }, + { + "x": 592.2518310546875, + "y": 261.62060546875 + }, + { + "x": 592.8985595703125, + "y": 298.91644287109375 + }, + { + "x": 552.0294799804688, + "y": 84.6219253540039 + }, + { + "x": 552.8970947265625, + "y": 120.05532836914062 + }, + { + "x": 553.8616943359375, + "y": 155.4178466796875 + }, + { + "x": 554.4336547851562, + "y": 192.03872680664062 + }, + { + "x": 557.2511596679688, + "y": 227.61752319335938 + }, + { + "x": 556.855224609375, + "y": 262.2943420410156 + }, + { + "x": 557.7298583984375, + "y": 298.8019104003906 + }, + { + "x": 516.5172729492188, + "y": 86.55731964111328 + }, + { + "x": 517.77099609375, + "y": 121.6034927368164 + }, + { + "x": 518.1213989257812, + "y": 157.4914093017578 + }, + { + "x": 519.750244140625, + "y": 193.49131774902344 + }, + { + "x": 519.6656494140625, + "y": 228.41983032226562 + }, + { + "x": 522.47509765625, + "y": 265.4100341796875 + }, + { + "x": 520.492919921875, + "y": 300.0774230957031 + } + ], + "reprojectionErrors": [ + { + "x": -0.28240966796875, + "y": -1.0022430419921875 + }, + { + "x": -1.0897216796875, + "y": 0.3071441650390625 + }, + { + "x": -0.111083984375, + "y": -0.9242401123046875 + }, + { + "x": -1.55810546875, + "y": -0.9955902099609375 + }, + { + "x": 0.35064697265625, + "y": -2.0198516845703125 + }, + { + "x": -0.43707275390625, + "y": -1.040130615234375 + }, + { + "x": -0.408447265625, + "y": -1.083282470703125 + }, + { + "x": -1.44696044921875, + "y": -0.6355972290039062 + }, + { + "x": -0.28564453125, + "y": 0.9634857177734375 + }, + { + "x": -0.899658203125, + "y": 0.5661163330078125 + }, + { + "x": 0.14013671875, + "y": -1.5640716552734375 + }, + { + "x": -0.95697021484375, + "y": -0.63775634765625 + }, + { + "x": 1.02447509765625, + "y": -0.928436279296875 + }, + { + "x": -0.2044677734375, + "y": -0.977264404296875 + }, + { + "x": -0.0052490234375, + "y": 1.641754150390625 + }, + { + "x": -0.35174560546875, + "y": 0.7069015502929688 + }, + { + "x": -0.26934814453125, + "y": 2.1004791259765625 + }, + { + "x": -0.06072998046875, + "y": -0.0810089111328125 + }, + { + "x": 0.98724365234375, + "y": -0.2806396484375 + }, + { + "x": 0.4205322265625, + "y": 0.6707763671875 + }, + { + "x": 0.25152587890625, + "y": 0.973052978515625 + }, + { + "x": 0.29559326171875, + "y": 0.663177490234375 + }, + { + "x": 1.56689453125, + "y": 0.5495452880859375 + }, + { + "x": 1.1817626953125, + "y": 2.0546417236328125 + }, + { + "x": -0.115966796875, + "y": 1.1043853759765625 + }, + { + "x": -0.684326171875, + "y": -0.2288055419921875 + }, + { + "x": 0.34283447265625, + "y": 0.826812744140625 + }, + { + "x": -0.02862548828125, + "y": 0.31939697265625 + }, + { + "x": 2.43572998046875, + "y": -0.9018402099609375 + }, + { + "x": -0.18255615234375, + "y": 0.32170867919921875 + }, + { + "x": 1.73046875, + "y": -0.2657470703125 + }, + { + "x": 0.88494873046875, + "y": 1.7183990478515625 + }, + { + "x": 0.64666748046875, + "y": 0.8441009521484375 + }, + { + "x": 0.2271728515625, + "y": 1.678131103515625 + }, + { + "x": 0.23040771484375, + "y": 0.599334716796875 + }, + { + "x": 1.177490234375, + "y": -0.16961669921875 + }, + { + "x": 0.90234375, + "y": 0.1175537109375 + }, + { + "x": 0.53192138671875, + "y": 0.572021484375 + }, + { + "x": 0.5557861328125, + "y": -0.135223388671875 + }, + { + "x": -1.6641845703125, + "y": 0.2965240478515625 + }, + { + "x": -0.6690673828125, + "y": 1.727386474609375 + }, + { + "x": -0.94281005859375, + "y": 1.424896240234375 + }, + { + "x": 0.6556396484375, + "y": -1.36383056640625 + }, + { + "x": -0.0540771484375, + "y": -0.6971664428710938 + }, + { + "x": 0.14105224609375, + "y": -0.77587890625 + }, + { + "x": -0.94061279296875, + "y": -0.8699798583984375 + }, + { + "x": -0.3072509765625, + "y": 0.2041778564453125 + }, + { + "x": -2.56634521484375, + "y": -0.686248779296875 + }, + { + "x": -0.03216552734375, + "y": 0.84344482421875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.09618597129402479, + "y": -0.22682463237324546, + "z": 0.7779869229354011 + }, + "rotation": { + "quaternion": { + "W": 0.7133938838154388, + "X": -0.009292045105707492, + "Y": 0.019648291183842065, + "Z": 0.7004261339256501 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img8.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img8.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 509.321044921875, + "y": 43.304893493652344 + }, + { + "x": 544.294189453125, + "y": 41.264827728271484 + }, + { + "x": 578.2429809570312, + "y": 40.94587326049805 + }, + { + "x": 615.9863891601562, + "y": 38.4100456237793 + }, + { + "x": 652.5533447265625, + "y": 36.07316589355469 + }, + { + "x": 689.5361328125, + "y": 37.556396484375 + }, + { + "x": 725.117431640625, + "y": 36.365379333496094 + }, + { + "x": 510.3777770996094, + "y": 78.06461334228516 + }, + { + "x": 544.7802124023438, + "y": 75.84480285644531 + }, + { + "x": 581.3417358398438, + "y": 74.46057891845703 + }, + { + "x": 615.0684814453125, + "y": 73.85616302490234 + }, + { + "x": 653.2589111328125, + "y": 72.55279541015625 + }, + { + "x": 689.3155517578125, + "y": 71.42694091796875 + }, + { + "x": 726.2818603515625, + "y": 71.00863647460938 + }, + { + "x": 510.35333251953125, + "y": 112.78944396972656 + }, + { + "x": 545.9026489257812, + "y": 111.19131469726562 + }, + { + "x": 579.5986328125, + "y": 111.07312774658203 + }, + { + "x": 616.295166015625, + "y": 107.4365005493164 + }, + { + "x": 653.9558715820312, + "y": 106.32127380371094 + }, + { + "x": 690.6979370117188, + "y": 107.36902618408203 + }, + { + "x": 725.94482421875, + "y": 107.71903228759766 + }, + { + "x": 511.7674865722656, + "y": 148.51116943359375 + }, + { + "x": 545.5443115234375, + "y": 147.0145263671875 + }, + { + "x": 581.3491821289062, + "y": 144.22023010253906 + }, + { + "x": 617.8611450195312, + "y": 144.00762939453125 + }, + { + "x": 654.2969360351562, + "y": 144.449951171875 + }, + { + "x": 690.1898193359375, + "y": 145.02330017089844 + }, + { + "x": 728.0927734375, + "y": 143.53970336914062 + }, + { + "x": 511.2986755371094, + "y": 183.09706115722656 + }, + { + "x": 548.428466796875, + "y": 182.15838623046875 + }, + { + "x": 581.9103393554688, + "y": 180.83523559570312 + }, + { + "x": 619.5634765625, + "y": 181.08773803710938 + }, + { + "x": 653.6270141601562, + "y": 180.37460327148438 + }, + { + "x": 692.2368774414062, + "y": 179.8930206298828 + }, + { + "x": 727.1672973632812, + "y": 180.1794891357422 + }, + { + "x": 514.1547241210938, + "y": 219.615234375 + }, + { + "x": 547.9563598632812, + "y": 216.21852111816406 + }, + { + "x": 582.6764526367188, + "y": 215.55780029296875 + }, + { + "x": 618.7408447265625, + "y": 216.2435760498047 + }, + { + "x": 654.9596557617188, + "y": 215.31817626953125 + }, + { + "x": 690.6740112304688, + "y": 216.21339416503906 + }, + { + "x": 728.6235961914062, + "y": 215.47653198242188 + }, + { + "x": 511.58331298828125, + "y": 254.3970489501953 + }, + { + "x": 548.4359741210938, + "y": 252.36280822753906 + }, + { + "x": 583.5556640625, + "y": 252.61964416503906 + }, + { + "x": 619.6041870117188, + "y": 252.38287353515625 + }, + { + "x": 655.732666015625, + "y": 251.2504119873047 + }, + { + "x": 692.6751708984375, + "y": 252.35733032226562 + }, + { + "x": 729.3436279296875, + "y": 252.18927001953125 + } + ], + "reprojectionErrors": [ + { + "x": 0.157196044921875, + "y": -1.7330856323242188 + }, + { + "x": 0.8231201171875, + "y": -0.6541023254394531 + }, + { + "x": 2.59442138671875, + "y": -1.2978591918945312 + }, + { + "x": 0.65228271484375, + "y": 0.27362060546875 + }, + { + "x": -0.03204345703125, + "y": 1.6445159912109375 + }, + { + "x": -1.05072021484375, + "y": -0.8063316345214844 + }, + { + "x": -0.58636474609375, + "y": -0.5845718383789062 + }, + { + "x": -0.50421142578125, + "y": -1.1156005859375 + }, + { + "x": 0.77618408203125, + "y": 0.182159423828125 + }, + { + "x": -0.021240234375, + "y": 0.6427383422851562 + }, + { + "x": 2.09747314453125, + "y": 0.3219146728515625 + }, + { + "x": -0.16595458984375, + "y": 0.6984481811523438 + }, + { + "x": -0.21392822265625, + "y": 0.8958663940429688 + }, + { + "x": -1.0897216796875, + "y": 0.3841400146484375 + }, + { + "x": -0.0972900390625, + "y": -0.41475677490234375 + }, + { + "x": 0.08404541015625, + "y": 0.3003997802734375 + }, + { + "x": 2.20013427734375, + "y": -0.46593475341796875 + }, + { + "x": 1.3973388671875, + "y": 2.2846145629882812 + }, + { + "x": -0.2879638671875, + "y": 2.51220703125 + }, + { + "x": -0.97265625, + "y": 0.5752639770507812 + }, + { + "x": -0.0802001953125, + "y": -0.6654891967773438 + }, + { + "x": -1.1417236328125, + "y": -0.6505126953125 + }, + { + "x": 0.8638916015625, + "y": 0.0023193359375 + }, + { + "x": 0.9232177734375, + "y": 1.9512939453125 + }, + { + "x": 0.35723876953125, + "y": 1.3170623779296875 + }, + { + "x": -0.050537109375, + "y": 0.0263824462890625 + }, + { + "x": 0.16668701171875, + "y": -1.3968353271484375 + }, + { + "x": -1.5439453125, + "y": -0.764617919921875 + }, + { + "x": -0.315887451171875, + "y": 0.32177734375 + }, + { + "x": -1.6072998046875, + "y": 0.4559173583984375 + }, + { + "x": 0.83111572265625, + "y": 0.973052978515625 + }, + { + "x": -0.81964111328125, + "y": -0.0869293212890625 + }, + { + "x": 1.20147705078125, + "y": -0.182769775390625 + }, + { + "x": -1.2413330078125, + "y": -0.511627197265625 + }, + { + "x": 0.0777587890625, + "y": -1.6100006103515625 + }, + { + "x": -2.827545166015625, + "y": -0.553924560546875 + }, + { + "x": -0.7308349609375, + "y": 2.0776519775390625 + }, + { + "x": 0.5296630859375, + "y": 1.9718017578125 + }, + { + "x": 0.5281982421875, + "y": 0.518035888671875 + }, + { + "x": 0.45489501953125, + "y": 0.6739959716796875 + }, + { + "x": 0.9686279296875, + "y": -0.992095947265625 + }, + { + "x": -0.6700439453125, + "y": -1.027557373046875 + }, + { + "x": 0.07568359375, + "y": 0.4031829833984375 + }, + { + "x": -0.81451416015625, + "y": 1.71185302734375 + }, + { + "x": 0.11083984375, + "y": 0.728057861328125 + }, + { + "x": 0.19000244140625, + "y": 0.2364654541015625 + }, + { + "x": 0.27197265625, + "y": 0.6391754150390625 + }, + { + "x": -0.3770751953125, + "y": -1.1988983154296875 + }, + { + "x": -0.66900634765625, + "y": -1.7633819580078125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.062153214695411636, + "y": -0.2569730203704681, + "z": 0.7875615927586195 + }, + "rotation": { + "quaternion": { + "W": 0.9995347191451404, + "X": -0.02376307818166526, + "Y": 0.01769329832689133, + "Z": -0.007253174001297686 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img9.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img9.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 574.453857421875, + "y": 24.123228073120117 + }, + { + "x": 576.1558227539062, + "y": 57.72178268432617 + }, + { + "x": 576.0316162109375, + "y": 91.60924530029297 + }, + { + "x": 578.896484375, + "y": 126.43762969970703 + }, + { + "x": 578.1764526367188, + "y": 160.77345275878906 + }, + { + "x": 580.7833862304688, + "y": 195.0189971923828 + }, + { + "x": 582.231201171875, + "y": 229.27130126953125 + }, + { + "x": 541.1578369140625, + "y": 27.587230682373047 + }, + { + "x": 540.6930541992188, + "y": 59.217689514160156 + }, + { + "x": 542.3084716796875, + "y": 93.13788604736328 + }, + { + "x": 542.7273559570312, + "y": 128.162109375 + }, + { + "x": 545.0889282226562, + "y": 162.3292694091797 + }, + { + "x": 544.7456665039062, + "y": 196.48550415039062 + }, + { + "x": 547.2926025390625, + "y": 231.70872497558594 + }, + { + "x": 505.6151428222656, + "y": 27.650297164916992 + }, + { + "x": 506.6812438964844, + "y": 62.2242317199707 + }, + { + "x": 507.51385498046875, + "y": 94.10008239746094 + }, + { + "x": 508.3994140625, + "y": 130.3241424560547 + }, + { + "x": 508.2760925292969, + "y": 164.0740966796875 + }, + { + "x": 510.3011169433594, + "y": 197.62559509277344 + }, + { + "x": 512.0604858398438, + "y": 231.67987060546875 + }, + { + "x": 472.0663757324219, + "y": 32.34698486328125 + }, + { + "x": 471.0067138671875, + "y": 65.02680969238281 + }, + { + "x": 472.2550354003906, + "y": 96.92225646972656 + }, + { + "x": 474.3107604980469, + "y": 131.17576599121094 + }, + { + "x": 476.0535888671875, + "y": 166.55783081054688 + }, + { + "x": 476.3907165527344, + "y": 199.32894897460938 + }, + { + "x": 477.7230529785156, + "y": 234.68954467773438 + }, + { + "x": 436.4061279296875, + "y": 35.496944427490234 + }, + { + "x": 440.3618469238281, + "y": 67.82270050048828 + }, + { + "x": 438.37298583984375, + "y": 101.04842376708984 + }, + { + "x": 440.1180725097656, + "y": 133.38417053222656 + }, + { + "x": 441.07342529296875, + "y": 167.7873992919922 + }, + { + "x": 442.7699279785156, + "y": 201.56643676757812 + }, + { + "x": 443.6345520019531, + "y": 236.4877471923828 + }, + { + "x": 404.6509094238281, + "y": 37.64883041381836 + }, + { + "x": 405.02545166015625, + "y": 70.21658325195312 + }, + { + "x": 406.39227294921875, + "y": 103.61831665039062 + }, + { + "x": 406.9307861328125, + "y": 136.639404296875 + }, + { + "x": 409.7007751464844, + "y": 170.70396423339844 + }, + { + "x": 409.63031005859375, + "y": 203.05287170410156 + }, + { + "x": 411.0107727050781, + "y": 238.17178344726562 + }, + { + "x": 372.1539611816406, + "y": 40.866233825683594 + }, + { + "x": 373.71661376953125, + "y": 74.15058135986328 + }, + { + "x": 373.2752380371094, + "y": 106.58601379394531 + }, + { + "x": 375.08551025390625, + "y": 140.64431762695312 + }, + { + "x": 375.2410583496094, + "y": 172.8332977294922 + }, + { + "x": 378.362548828125, + "y": 208.12893676757812 + }, + { + "x": 376.90179443359375, + "y": 240.6035919189453 + } + ], + "reprojectionErrors": [ + { + "x": -0.79132080078125, + "y": -0.44628143310546875 + }, + { + "x": -1.25164794921875, + "y": -0.320404052734375 + }, + { + "x": 0.11993408203125, + "y": -0.33269500732421875 + }, + { + "x": -1.49188232421875, + "y": -1.1342849731445312 + }, + { + "x": 0.48699951171875, + "y": -1.290802001953125 + }, + { + "x": -0.85528564453125, + "y": -1.203643798828125 + }, + { + "x": -1.0325927734375, + "y": -0.9689483642578125 + }, + { + "x": -1.5888671875, + "y": -1.06396484375 + }, + { + "x": 0.03778076171875, + "y": 0.9213409423828125 + }, + { + "x": -0.41033935546875, + "y": 0.7666473388671875 + }, + { + "x": 0.34344482421875, + "y": -0.34145355224609375 + }, + { + "x": -0.84002685546875, + "y": -0.441009521484375 + }, + { + "x": 0.686767578125, + "y": -0.3772735595703125 + }, + { + "x": -0.67108154296875, + "y": -1.227264404296875 + }, + { + "x": 0.07000732421875, + "y": 1.653238296508789 + }, + { + "x": 0.087158203125, + "y": 0.5904884338378906 + }, + { + "x": 0.342864990234375, + "y": 2.374603271484375 + }, + { + "x": 0.550689697265625, + "y": -0.03985595703125 + }, + { + "x": 1.77252197265625, + "y": 0.1703033447265625 + }, + { + "x": 0.85113525390625, + "y": 0.730316162109375 + }, + { + "x": 0.2005615234375, + "y": 0.9398040771484375 + }, + { + "x": -0.06781005859375, + "y": -0.3277130126953125 + }, + { + "x": 1.997528076171875, + "y": 0.40308380126953125 + }, + { + "x": 1.759613037109375, + "y": 2.0661163330078125 + }, + { + "x": 0.71905517578125, + "y": 1.519805908203125 + }, + { + "x": -0.003814697265625, + "y": -0.0054931640625 + }, + { + "x": 0.683868408203125, + "y": 1.2305908203125 + }, + { + "x": 0.38116455078125, + "y": 0.02850341796875 + }, + { + "x": 2.0906982421875, + "y": -0.8250160217285156 + }, + { + "x": -0.9359130859375, + "y": 0.163238525390625 + }, + { + "x": 1.9864501953125, + "y": 0.39850616455078125 + }, + { + "x": 1.1793212890625, + "y": 1.67156982421875 + }, + { + "x": 1.16644287109375, + "y": 1.02581787109375 + }, + { + "x": 0.4168701171875, + "y": 1.15380859375 + }, + { + "x": 0.503753662109375, + "y": 0.2899017333984375 + }, + { + "x": 0.516998291015625, + "y": -0.3859291076660156 + }, + { + "x": 0.995880126953125, + "y": 0.267608642578125 + }, + { + "x": 0.48663330078125, + "y": 0.23329925537109375 + }, + { + "x": 0.809814453125, + "y": 0.7266082763671875 + }, + { + "x": -1.094268798828125, + "y": 0.324249267578125 + }, + { + "x": -0.15374755859375, + "y": 1.7862091064453125 + }, + { + "x": -0.659881591796875, + "y": 0.627685546875 + }, + { + "x": -0.15399169921875, + "y": -1.0726966857910156 + }, + { + "x": -0.937957763671875, + "y": -1.2246475219726562 + }, + { + "x": 0.285888671875, + "y": -0.38236236572265625 + }, + { + "x": -0.738037109375, + "y": -1.01678466796875 + }, + { + "x": -0.103363037109375, + "y": 0.3650970458984375 + }, + { + "x": -2.430755615234375, + "y": -1.2118377685546875 + }, + { + "x": -0.171966552734375, + "y": 0.1808929443359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.017088797882438327, + "y": -0.27899152166133767, + "z": 0.8147874540418555 + }, + "rotation": { + "quaternion": { + "W": 0.7201138231830684, + "X": 0.011292933782656344, + "Y": 0.06014865117689429, + "Z": 0.6911517134962809 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img10.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img10.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 430.1921691894531, + "y": 35.447296142578125 + }, + { + "x": 430.4935607910156, + "y": 69.22908020019531 + }, + { + "x": 429.1251220703125, + "y": 101.52460479736328 + }, + { + "x": 430.4031066894531, + "y": 136.08982849121094 + }, + { + "x": 429.06121826171875, + "y": 169.10401916503906 + }, + { + "x": 430.3691711425781, + "y": 202.77223205566406 + }, + { + "x": 431.3011474609375, + "y": 236.0308380126953 + }, + { + "x": 398.18475341796875, + "y": 39.476661682128906 + }, + { + "x": 396.1363525390625, + "y": 69.50562286376953 + }, + { + "x": 396.6717834472656, + "y": 103.73168182373047 + }, + { + "x": 395.4676208496094, + "y": 137.1818389892578 + }, + { + "x": 397.072265625, + "y": 171.1663818359375 + }, + { + "x": 395.63629150390625, + "y": 204.0272216796875 + }, + { + "x": 397.65118408203125, + "y": 238.6890411376953 + }, + { + "x": 363.1348876953125, + "y": 38.50257873535156 + }, + { + "x": 362.7855529785156, + "y": 72.51343536376953 + }, + { + "x": 362.6537170410156, + "y": 103.64463806152344 + }, + { + "x": 362.540771484375, + "y": 140.16246032714844 + }, + { + "x": 361.3282165527344, + "y": 172.4076385498047 + }, + { + "x": 362.49774169921875, + "y": 205.446044921875 + }, + { + "x": 363.29754638671875, + "y": 238.5585174560547 + }, + { + "x": 330.19146728515625, + "y": 42.450069427490234 + }, + { + "x": 328.2658996582031, + "y": 74.61004638671875 + }, + { + "x": 328.1866149902344, + "y": 106.43225860595703 + }, + { + "x": 329.5632019042969, + "y": 139.66006469726562 + }, + { + "x": 330.5508728027344, + "y": 175.3031463623047 + }, + { + "x": 329.646484375, + "y": 206.52560424804688 + }, + { + "x": 330.6710205078125, + "y": 242.00721740722656 + }, + { + "x": 295.67413330078125, + "y": 45.50308609008789 + }, + { + "x": 298.4352722167969, + "y": 77.46179962158203 + }, + { + "x": 295.4150390625, + "y": 110.04460144042969 + }, + { + "x": 295.5835266113281, + "y": 141.7835235595703 + }, + { + "x": 295.9829406738281, + "y": 175.9756622314453 + }, + { + "x": 296.5986633300781, + "y": 209.07102966308594 + }, + { + "x": 297.14398193359375, + "y": 243.4178466796875 + }, + { + "x": 264.69805908203125, + "y": 47.415157318115234 + }, + { + "x": 264.0626525878906, + "y": 79.37519836425781 + }, + { + "x": 264.0277404785156, + "y": 112.5154800415039 + }, + { + "x": 263.3482666015625, + "y": 145.407958984375 + }, + { + "x": 265.4210510253906, + "y": 178.6660919189453 + }, + { + "x": 264.7652587890625, + "y": 210.78134155273438 + }, + { + "x": 265.5320739746094, + "y": 245.15818786621094 + }, + { + "x": 233.28981018066406, + "y": 49.899330139160156 + }, + { + "x": 233.40283203125, + "y": 83.18131256103516 + }, + { + "x": 231.6782684326172, + "y": 115.47818756103516 + }, + { + "x": 232.80381774902344, + "y": 149.2584991455078 + }, + { + "x": 231.69407653808594, + "y": 181.14622497558594 + }, + { + "x": 234.20384216308594, + "y": 215.710205078125 + }, + { + "x": 232.30955505371094, + "y": 247.85765075683594 + } + ], + "reprojectionErrors": [ + { + "x": -1.533294677734375, + "y": -0.4662055969238281 + }, + { + "x": -1.4808349609375, + "y": -1.1946945190429688 + }, + { + "x": 0.24395751953125, + "y": -0.23952484130859375 + }, + { + "x": -0.675201416015625, + "y": -1.355010986328125 + }, + { + "x": 1.028076171875, + "y": -0.718780517578125 + }, + { + "x": 0.084014892578125, + "y": -0.5341644287109375 + }, + { + "x": -0.481475830078125, + "y": 0.2641143798828125 + }, + { + "x": -2.62310791015625, + "y": -1.8490409851074219 + }, + { + "x": -0.320098876953125, + "y": 1.0577545166015625 + }, + { + "x": -0.5989990234375, + "y": -0.0366058349609375 + }, + { + "x": 0.8636474609375, + "y": -0.1574859619140625 + }, + { + "x": -0.480560302734375, + "y": -0.613555908203125 + }, + { + "x": 1.21783447265625, + "y": 0.2549591064453125 + }, + { + "x": -0.53265380859375, + "y": -0.4749603271484375 + }, + { + "x": -0.4583740234375, + "y": 1.7037544250488281 + }, + { + "x": 0.047698974609375, + "y": 0.5151748657226562 + }, + { + "x": 0.337677001953125, + "y": 2.4007949829101562 + }, + { + "x": 0.610137939453125, + "y": -0.9040374755859375 + }, + { + "x": 1.983642578125, + "y": 0.26153564453125 + }, + { + "x": 0.9764404296875, + "y": 0.83331298828125 + }, + { + "x": 0.340423583984375, + "y": 1.5320892333984375 + }, + { + "x": -0.200408935546875, + "y": 0.2686920166015625 + }, + { + "x": 1.785369873046875, + "y": 0.8214950561523438 + }, + { + "x": 1.925689697265625, + "y": 1.9052734375 + }, + { + "x": 0.61102294921875, + "y": 1.77825927734375 + }, + { + "x": -0.313873291015625, + "y": -0.5676422119140625 + }, + { + "x": 0.654144287109375, + "y": 1.705108642578125 + }, + { + "x": -0.305877685546875, + "y": -0.0816192626953125 + }, + { + "x": 1.819091796875, + "y": -0.3367042541503906 + }, + { + "x": -0.9771728515625, + "y": 0.3117828369140625 + }, + { + "x": 2.008270263671875, + "y": 0.5280990600585938 + }, + { + "x": 1.805328369140625, + "y": 1.7817840576171875 + }, + { + "x": 1.37176513671875, + "y": 0.7773284912109375 + }, + { + "x": 0.722259521484375, + "y": 1.06634521484375 + }, + { + "x": 0.14349365234375, + "y": 0.3022003173828125 + }, + { + "x": 0.47308349609375, + "y": 0.13544082641601562 + }, + { + "x": 0.979217529296875, + "y": 0.6808700561523438 + }, + { + "x": 0.8846435546875, + "y": 0.23673248291015625 + }, + { + "x": 1.434478759765625, + "y": 0.232635498046875 + }, + { + "x": -0.768157958984375, + "y": 0.0566864013671875 + }, + { + "x": -0.242401123046875, + "y": 1.219024658203125 + }, + { + "x": -1.139434814453125, + "y": 0.3167572021484375 + }, + { + "x": -0.2765045166015625, + "y": -0.026561737060546875 + }, + { + "x": -0.6118927001953125, + "y": -0.901031494140625 + }, + { + "x": 0.889617919921875, + "y": -0.6009063720703125 + }, + { + "x": -0.459686279296875, + "y": -1.5931854248046875 + }, + { + "x": 0.4256134033203125, + "y": -0.5002899169921875 + }, + { + "x": -2.309295654296875, + "y": -1.889495849609375 + }, + { + "x": -0.640869140625, + "y": -0.666412353515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.12515579110855307, + "y": -0.2737661513891187, + "z": 0.82403407156984 + }, + "rotation": { + "quaternion": { + "W": 0.7158323338554283, + "X": 0.007221336299356101, + "Y": 0.07400949537510446, + "Z": 0.6943014595285427 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img11.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img11.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 252.27859497070312, + "y": 175.4433135986328 + }, + { + "x": 253.0857391357422, + "y": 210.0086212158203 + }, + { + "x": 252.7401580810547, + "y": 243.4938507080078 + }, + { + "x": 255.23837280273438, + "y": 277.5414733886719 + }, + { + "x": 255.32681274414062, + "y": 310.51214599609375 + }, + { + "x": 257.5080871582031, + "y": 343.71014404296875 + }, + { + "x": 260.2443542480469, + "y": 375.7462158203125 + }, + { + "x": 220.4373016357422, + "y": 179.24777221679688 + }, + { + "x": 220.03997802734375, + "y": 211.34649658203125 + }, + { + "x": 221.0399169921875, + "y": 245.44969177246094 + }, + { + "x": 221.62818908691406, + "y": 279.994384765625 + }, + { + "x": 223.98875427246094, + "y": 312.94573974609375 + }, + { + "x": 224.54391479492188, + "y": 345.9974060058594 + }, + { + "x": 228.14935302734375, + "y": 379.21044921875 + }, + { + "x": 187.75296020507812, + "y": 179.73095703125 + }, + { + "x": 188.10113525390625, + "y": 214.55606079101562 + }, + { + "x": 189.39820861816406, + "y": 246.80458068847656 + }, + { + "x": 189.58026123046875, + "y": 282.08795166015625 + }, + { + "x": 191.36094665527344, + "y": 315.054443359375 + }, + { + "x": 193.2810821533203, + "y": 347.5648193359375 + }, + { + "x": 196.00949096679688, + "y": 379.5391540527344 + }, + { + "x": 156.24537658691406, + "y": 184.07260131835938 + }, + { + "x": 155.3000030517578, + "y": 217.8015899658203 + }, + { + "x": 156.26602172851562, + "y": 249.9938507080078 + }, + { + "x": 159.10275268554688, + "y": 283.66436767578125 + }, + { + "x": 161.20709228515625, + "y": 318.16845703125 + }, + { + "x": 162.9641876220703, + "y": 349.12396240234375 + }, + { + "x": 164.91783142089844, + "y": 383.1289978027344 + }, + { + "x": 123.13915252685547, + "y": 187.85028076171875 + }, + { + "x": 126.5797119140625, + "y": 220.45669555664062 + }, + { + "x": 125.61149597167969, + "y": 254.10777282714844 + }, + { + "x": 127.26010131835938, + "y": 285.8473815917969 + }, + { + "x": 129.48056030273438, + "y": 319.9115295410156 + }, + { + "x": 131.20700073242188, + "y": 351.6546630859375 + }, + { + "x": 134.3976287841797, + "y": 385.0033264160156 + }, + { + "x": 94.21305084228516, + "y": 190.4794158935547 + }, + { + "x": 94.5308837890625, + "y": 223.26278686523438 + }, + { + "x": 95.5772705078125, + "y": 256.27410888671875 + }, + { + "x": 97.36691284179688, + "y": 289.478759765625 + }, + { + "x": 100.47284698486328, + "y": 322.30413818359375 + }, + { + "x": 101.79428100585938, + "y": 354.6460876464844 + }, + { + "x": 104.25617980957031, + "y": 386.6478576660156 + }, + { + "x": 63.793521881103516, + "y": 193.20143127441406 + }, + { + "x": 64.91450500488281, + "y": 226.29550170898438 + }, + { + "x": 66.49691772460938, + "y": 259.4710388183594 + }, + { + "x": 68.09019470214844, + "y": 292.5694580078125 + }, + { + "x": 70.00846862792969, + "y": 325.1156311035156 + }, + { + "x": 74.02560424804688, + "y": 358.6123046875 + }, + { + "x": 75.03817749023438, + "y": 389.775634765625 + } + ], + "reprojectionErrors": [ + { + "x": -3.0066680908203125, + "y": 0.3773956298828125 + }, + { + "x": -2.12982177734375, + "y": -0.7592926025390625 + }, + { + "x": -0.0970611572265625, + "y": -0.764923095703125 + }, + { + "x": -0.9049224853515625, + "y": -1.281982421875 + }, + { + "x": 0.700164794921875, + "y": -0.671142578125 + }, + { + "x": 0.215576171875, + "y": -0.236663818359375 + }, + { + "x": -0.82080078125, + "y": 1.410675048828125 + }, + { + "x": -2.613250732421875, + "y": -0.3681182861328125 + }, + { + "x": -0.56317138671875, + "y": 0.8152008056640625 + }, + { + "x": 0.0927886962890625, + "y": 0.0445709228515625 + }, + { + "x": 1.16357421875, + "y": -1.117034912109375 + }, + { + "x": 0.4652099609375, + "y": -0.634796142578125 + }, + { + "x": 1.5754241943359375, + "y": -0.202362060546875 + }, + { + "x": -0.3614959716796875, + "y": 0.119171142578125 + }, + { + "x": -1.1550750732421875, + "y": 2.1562957763671875 + }, + { + "x": 0.118865966796875, + "y": 0.4712677001953125 + }, + { + "x": 0.447021484375, + "y": 1.4129180908203125 + }, + { + "x": 1.893341064453125, + "y": -0.63018798828125 + }, + { + "x": 1.744171142578125, + "y": -0.306365966796875 + }, + { + "x": 1.4586639404296875, + "y": 0.52362060546875 + }, + { + "x": 0.3680267333984375, + "y": 1.939697265625 + }, + { + "x": -0.664215087890625, + "y": 0.772491455078125 + }, + { + "x": 1.8732147216796875, + "y": 0.046112060546875 + }, + { + "x": 2.502349853515625, + "y": 0.9061431884765625 + }, + { + "x": 1.2639007568359375, + "y": 0.337554931640625 + }, + { + "x": 0.7609405517578125, + "y": -1.01495361328125 + }, + { + "x": 0.60833740234375, + "y": 1.23077392578125 + }, + { + "x": 0.2623138427734375, + "y": 0.476593017578125 + }, + { + "x": 1.6228179931640625, + "y": -0.095611572265625 + }, + { + "x": -0.25519561767578125, + "y": 0.1675262451171875 + }, + { + "x": 2.278656005859375, + "y": -0.564727783203125 + }, + { + "x": 2.1987762451171875, + "y": 0.663726806640625 + }, + { + "x": 1.550140380859375, + "y": -0.38311767578125 + }, + { + "x": 1.39862060546875, + "y": 0.9403076171875 + }, + { + "x": -0.2140045166015625, + "y": 0.707366943359375 + }, + { + "x": -0.08438873291015625, + "y": 0.1380615234375 + }, + { + "x": 1.1313552856445312, + "y": 0.095489501953125 + }, + { + "x": 1.621612548828125, + "y": -0.12615966796875 + }, + { + "x": 1.3716888427734375, + "y": -0.492279052734375 + }, + { + "x": -0.1914520263671875, + "y": -0.430267333984375 + }, + { + "x": 0.03298187255859375, + "y": 0.16400146484375 + }, + { + "x": -0.8799667358398438, + "y": 1.14727783203125 + }, + { + "x": -0.12357711791992188, + "y": 0.23345947265625 + }, + { + "x": 0.26055145263671875, + "y": -0.2443389892578125 + }, + { + "x": 0.18630218505859375, + "y": -0.755126953125 + }, + { + "x": 0.104248046875, + "y": -1.140289306640625 + }, + { + "x": -0.29975128173828125, + "y": -0.92474365234375 + }, + { + "x": -2.7995452880859375, + "y": -1.611236572265625 + }, + { + "x": -2.2917251586914062, + "y": 0.084075927734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.26301219196311426, + "y": -0.1720974161037602, + "z": 0.8380686333968436 + }, + "rotation": { + "quaternion": { + "W": 0.7261303534565879, + "X": 0.04158979688776278, + "Y": 0.05631258661485346, + "Z": 0.6839838383855205 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img12.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img12.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 255.57330322265625, + "y": 177.46560668945312 + }, + { + "x": 256.0027770996094, + "y": 211.27516174316406 + }, + { + "x": 255.26022338867188, + "y": 244.86363220214844 + }, + { + "x": 256.4800720214844, + "y": 278.0124206542969 + }, + { + "x": 256.4046325683594, + "y": 310.7939758300781 + }, + { + "x": 258.32659912109375, + "y": 343.22015380859375 + }, + { + "x": 260.13885498046875, + "y": 374.52557373046875 + }, + { + "x": 224.0738067626953, + "y": 180.39881896972656 + }, + { + "x": 223.03443908691406, + "y": 212.4873809814453 + }, + { + "x": 223.50552368164062, + "y": 246.21420288085938 + }, + { + "x": 223.8204345703125, + "y": 280.0176696777344 + }, + { + "x": 225.42604064941406, + "y": 312.55963134765625 + }, + { + "x": 225.5513153076172, + "y": 344.5777893066406 + }, + { + "x": 228.291748046875, + "y": 377.0917053222656 + }, + { + "x": 191.2908172607422, + "y": 180.47645568847656 + }, + { + "x": 191.15077209472656, + "y": 214.96934509277344 + }, + { + "x": 191.83348083496094, + "y": 247.0184783935547 + }, + { + "x": 192.10057067871094, + "y": 281.84429931640625 + }, + { + "x": 192.55459594726562, + "y": 314.40570068359375 + }, + { + "x": 194.4073028564453, + "y": 346.0648193359375 + }, + { + "x": 196.62469482421875, + "y": 377.26910400390625 + }, + { + "x": 159.77130126953125, + "y": 184.005859375 + }, + { + "x": 158.37652587890625, + "y": 217.5577392578125 + }, + { + "x": 158.97799682617188, + "y": 249.3269805908203 + }, + { + "x": 161.2684326171875, + "y": 282.75421142578125 + }, + { + "x": 162.82736206054688, + "y": 316.5218505859375 + }, + { + "x": 164.4602508544922, + "y": 346.6758117675781 + }, + { + "x": 165.71949768066406, + "y": 380.2176513671875 + }, + { + "x": 126.5400390625, + "y": 186.96401977539062 + }, + { + "x": 129.80625915527344, + "y": 219.63356018066406 + }, + { + "x": 128.36898803710938, + "y": 252.72560119628906 + }, + { + "x": 129.2239532470703, + "y": 283.83441162109375 + }, + { + "x": 131.29061889648438, + "y": 317.73822021484375 + }, + { + "x": 132.5553436279297, + "y": 349.0280456542969 + }, + { + "x": 135.3730010986328, + "y": 381.3511657714844 + }, + { + "x": 97.10868072509766, + "y": 188.80686950683594 + }, + { + "x": 97.24104309082031, + "y": 221.6831817626953 + }, + { + "x": 98.18584442138672, + "y": 254.47195434570312 + }, + { + "x": 99.24713134765625, + "y": 287.7181091308594 + }, + { + "x": 102.3593978881836, + "y": 319.5907897949219 + }, + { + "x": 103.5990219116211, + "y": 351.3985900878906 + }, + { + "x": 105.26045989990234, + "y": 382.70355224609375 + }, + { + "x": 66.01610565185547, + "y": 191.67759704589844 + }, + { + "x": 67.40603637695312, + "y": 224.1358184814453 + }, + { + "x": 68.58386993408203, + "y": 257.2947082519531 + }, + { + "x": 70.24250793457031, + "y": 289.9278259277344 + }, + { + "x": 71.92667388916016, + "y": 321.85772705078125 + }, + { + "x": 75.04434967041016, + "y": 354.5141296386719 + }, + { + "x": 75.52654266357422, + "y": 385.8562927246094 + } + ], + "reprojectionErrors": [ + { + "x": -3.1910247802734375, + "y": 0.595550537109375 + }, + { + "x": -2.373626708984375, + "y": -0.3212890625 + }, + { + "x": -0.3820343017578125, + "y": -0.97509765625 + }, + { + "x": -0.3507080078125, + "y": -1.1473388671875 + }, + { + "x": 0.978057861328125, + "y": -0.91046142578125 + }, + { + "x": 0.31158447265625, + "y": -0.276397705078125 + }, + { + "x": -0.2430419921875, + "y": 1.52020263671875 + }, + { + "x": -3.017333984375, + "y": 0.02197265625 + }, + { + "x": -0.7554168701171875, + "y": 0.7077178955078125 + }, + { + "x": -0.001800537109375, + "y": -0.203155517578125 + }, + { + "x": 0.9101409912109375, + "y": -1.149078369140625 + }, + { + "x": 0.5335235595703125, + "y": -0.791961669921875 + }, + { + "x": 1.639404296875, + "y": 0.1304931640625 + }, + { + "x": 0.1322784423828125, + "y": 0.598663330078125 + }, + { + "x": -1.38580322265625, + "y": 2.263092041015625 + }, + { + "x": -0.0471343994140625, + "y": 0.43017578125 + }, + { + "x": 0.4709320068359375, + "y": 1.082366943359375 + }, + { + "x": 1.406768798828125, + "y": -1.000823974609375 + }, + { + "x": 2.1578216552734375, + "y": -0.778350830078125 + }, + { + "x": 1.5123443603515625, + "y": 0.38763427734375 + }, + { + "x": 0.50433349609375, + "y": 2.04962158203125 + }, + { + "x": -0.8544921875, + "y": 1.0126800537109375 + }, + { + "x": 1.7153778076171875, + "y": 0.0104522705078125 + }, + { + "x": 2.2911376953125, + "y": 0.8319244384765625 + }, + { + "x": 1.1800994873046875, + "y": 0.03643798828125 + }, + { + "x": 0.8027191162109375, + "y": -1.058502197265625 + }, + { + "x": 0.353515625, + "y": 1.501190185546875 + }, + { + "x": 0.280120849609375, + "y": 0.713897705078125 + }, + { + "x": 1.5409698486328125, + "y": 0.294830322265625 + }, + { + "x": -0.573333740234375, + "y": 0.0685577392578125 + }, + { + "x": 2.0180206298828125, + "y": -0.5394287109375 + }, + { + "x": 2.31927490234375, + "y": 0.876556396484375 + }, + { + "x": 1.4109954833984375, + "y": -0.46173095703125 + }, + { + "x": 1.306793212890625, + "y": 0.8546142578125 + }, + { + "x": -0.348175048828125, + "y": 1.17828369140625 + }, + { + "x": 0.278289794921875, + "y": 0.6546478271484375 + }, + { + "x": 1.2750320434570312, + "y": 0.11907958984375 + }, + { + "x": 1.4614944458007812, + "y": -0.288421630859375 + }, + { + "x": 1.5336227416992188, + "y": -1.112823486328125 + }, + { + "x": -0.44307708740234375, + "y": -0.523284912109375 + }, + { + "x": -0.5449752807617188, + "y": 0.1715087890625 + }, + { + "x": -1.0665359497070312, + "y": 1.409515380859375 + }, + { + "x": 0.8082199096679688, + "y": -0.0500335693359375 + }, + { + "x": 0.5249176025390625, + "y": -0.2662353515625 + }, + { + "x": 0.45586395263671875, + "y": -1.142822265625 + }, + { + "x": -0.091827392578125, + "y": -1.45343017578125 + }, + { + "x": -0.66290283203125, + "y": -1.020599365234375 + }, + { + "x": -2.6653213500976562, + "y": -1.27410888671875 + }, + { + "x": -2.0301055908203125, + "y": -0.17327880859375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.26529756122256454, + "y": -0.17343845878045747, + "z": 0.8529828685570515 + }, + "rotation": { + "quaternion": { + "W": 0.7218606001354256, + "X": 0.03349230629102036, + "Y": 0.046648124852260275, + "Z": 0.6896517177816637 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img13.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img13.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 260.15228271484375, + "y": 60.28125762939453 + }, + { + "x": 259.31597900390625, + "y": 92.4928970336914 + }, + { + "x": 257.6820068359375, + "y": 124.71942138671875 + }, + { + "x": 258.0328063964844, + "y": 157.43138122558594 + }, + { + "x": 257.2275390625, + "y": 189.3994140625 + }, + { + "x": 257.75531005859375, + "y": 222.15695190429688 + }, + { + "x": 258.3855895996094, + "y": 253.8405303955078 + }, + { + "x": 229.51637268066406, + "y": 63.26238250732422 + }, + { + "x": 227.4277801513672, + "y": 93.87896728515625 + }, + { + "x": 227.20742797851562, + "y": 127.0553970336914 + }, + { + "x": 226.19546508789062, + "y": 159.2371368408203 + }, + { + "x": 226.4557647705078, + "y": 191.86618041992188 + }, + { + "x": 225.42332458496094, + "y": 224.29237365722656 + }, + { + "x": 227.43992614746094, + "y": 257.0652770996094 + }, + { + "x": 197.57752990722656, + "y": 63.57548141479492 + }, + { + "x": 197.07635498046875, + "y": 97.30538940429688 + }, + { + "x": 195.61595153808594, + "y": 127.95561218261719 + }, + { + "x": 194.79299926757812, + "y": 162.47244262695312 + }, + { + "x": 193.77935791015625, + "y": 194.22434997558594 + }, + { + "x": 194.507568359375, + "y": 226.052001953125 + }, + { + "x": 194.65065002441406, + "y": 258.31549072265625 + }, + { + "x": 166.41160583496094, + "y": 66.87427520751953 + }, + { + "x": 164.21299743652344, + "y": 99.75961303710938 + }, + { + "x": 163.0054168701172, + "y": 131.11497497558594 + }, + { + "x": 163.951171875, + "y": 163.88687133789062 + }, + { + "x": 164.71070861816406, + "y": 197.6316680908203 + }, + { + "x": 164.0822296142578, + "y": 228.0390167236328 + }, + { + "x": 164.7144012451172, + "y": 261.94097900390625 + }, + { + "x": 134.18966674804688, + "y": 70.58609008789062 + }, + { + "x": 136.08993530273438, + "y": 102.30915832519531 + }, + { + "x": 132.92678833007812, + "y": 134.64002990722656 + }, + { + "x": 132.76431274414062, + "y": 166.13217163085938 + }, + { + "x": 132.61183166503906, + "y": 199.6038055419922 + }, + { + "x": 132.58059692382812, + "y": 230.62661743164062 + }, + { + "x": 133.65133666992188, + "y": 264.2164001464844 + }, + { + "x": 104.56503295898438, + "y": 73.05322265625 + }, + { + "x": 103.38634490966797, + "y": 105.04537200927734 + }, + { + "x": 103.44259643554688, + "y": 138.24710083007812 + }, + { + "x": 102.3429183959961, + "y": 170.3199462890625 + }, + { + "x": 104.2278060913086, + "y": 202.37234497070312 + }, + { + "x": 103.6985092163086, + "y": 233.4284210205078 + }, + { + "x": 104.18633270263672, + "y": 266.4646301269531 + }, + { + "x": 74.91856384277344, + "y": 75.7573013305664 + }, + { + "x": 73.47998809814453, + "y": 108.06668853759766 + }, + { + "x": 72.41656494140625, + "y": 141.30616760253906 + }, + { + "x": 73.5928955078125, + "y": 174.4109649658203 + }, + { + "x": 72.48336791992188, + "y": 205.5814971923828 + }, + { + "x": 74.6620101928711, + "y": 238.66883850097656 + }, + { + "x": 73.56929016113281, + "y": 270.2408752441406 + } + ], + "reprojectionErrors": [ + { + "x": -2.03564453125, + "y": -1.3838577270507812 + }, + { + "x": -1.136077880859375, + "y": -1.3220443725585938 + }, + { + "x": 0.562164306640625, + "y": -1.0813827514648438 + }, + { + "x": 0.27667236328125, + "y": -1.1308135986328125 + }, + { + "x": 1.148223876953125, + "y": -0.2393035888671875 + }, + { + "x": 0.68780517578125, + "y": 0.0613555908203125 + }, + { + "x": 0.12591552734375, + "y": 1.6363067626953125 + }, + { + "x": -2.4720916748046875, + "y": -1.1288337707519531 + }, + { + "x": -0.4128570556640625, + "y": 0.38289642333984375 + }, + { + "x": -0.2213592529296875, + "y": -0.47328948974609375 + }, + { + "x": 0.762237548828125, + "y": -0.1412506103515625 + }, + { + "x": 0.47406005859375, + "y": -0.061370849609375 + }, + { + "x": 1.4791259765625, + "y": 0.4181671142578125 + }, + { + "x": -0.5643463134765625, + "y": 0.749420166015625 + }, + { + "x": -1.366851806640625, + "y": 1.7194404602050781 + }, + { + "x": -0.986053466796875, + "y": -0.02294158935546875 + }, + { + "x": 0.35394287109375, + "y": 1.504547119140625 + }, + { + "x": 1.056488037109375, + "y": -0.642791748046875 + }, + { + "x": 1.9496917724609375, + "y": 0.1681671142578125 + }, + { + "x": 1.10101318359375, + "y": 1.098358154296875 + }, + { + "x": 0.83746337890625, + "y": 1.789306640625 + }, + { + "x": -0.8082122802734375, + "y": 1.50921630859375 + }, + { + "x": 1.1804656982421875, + "y": 0.4748687744140625 + }, + { + "x": 2.1776123046875, + "y": 1.1590118408203125 + }, + { + "x": 1.020904541015625, + "y": 0.6166839599609375 + }, + { + "x": 0.049896240234375, + "y": -0.7068939208984375 + }, + { + "x": 0.466400146484375, + "y": 1.5002288818359375 + }, + { + "x": -0.3782958984375, + "y": 0.407562255859375 + }, + { + "x": 1.0206451416015625, + "y": 0.8150787353515625 + }, + { + "x": -1.1776885986328125, + "y": 0.8106231689453125 + }, + { + "x": 1.6864166259765625, + "y": 0.38525390625 + }, + { + "x": 1.5488433837890625, + "y": 0.9870452880859375 + }, + { + "x": 1.4002685546875, + "y": -0.2006683349609375 + }, + { + "x": 1.1294403076171875, + "y": 1.2519989013671875 + }, + { + "x": -0.244384765625, + "y": 0.330841064453125 + }, + { + "x": 0.4546356201171875, + "y": 1.2965469360351562 + }, + { + "x": 1.2484664916992188, + "y": 0.8946990966796875 + }, + { + "x": 0.8058929443359375, + "y": -0.531402587890625 + }, + { + "x": 1.5177841186523438, + "y": -0.6417694091796875 + }, + { + "x": -0.7563705444335938, + "y": -0.543304443359375 + }, + { + "x": -0.6178359985351562, + "y": 0.7414093017578125 + }, + { + "x": -1.4979171752929688, + "y": 0.23748779296875 + }, + { + "x": 0.10149383544921875, + "y": 1.4737396240234375 + }, + { + "x": 1.0696563720703125, + "y": 0.6303329467773438 + }, + { + "x": 1.6607589721679688, + "y": -0.9593505859375 + }, + { + "x": 0.01016998291015625, + "y": -2.229034423828125 + }, + { + "x": 0.6435012817382812, + "y": -1.3776092529296875 + }, + { + "x": -2.0132904052734375, + "y": -2.2546234130859375 + }, + { + "x": -1.4007034301757812, + "y": -1.42645263671875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2583020500298015, + "y": -0.26238555524579305, + "z": 0.8445483638487437 + }, + "rotation": { + "quaternion": { + "W": 0.7181202931876234, + "X": 0.01982019350736344, + "Y": 0.08786387214957185, + "Z": 0.6900654638600139 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img14.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img14.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 76.38969421386719, + "y": 57.28903579711914 + }, + { + "x": 105.62854766845703, + "y": 54.532135009765625 + }, + { + "x": 134.74766540527344, + "y": 52.84401321411133 + }, + { + "x": 166.3509521484375, + "y": 49.29829406738281 + }, + { + "x": 197.32598876953125, + "y": 46.633609771728516 + }, + { + "x": 229.26202392578125, + "y": 47.03324508666992 + }, + { + "x": 258.6974182128906, + "y": 44.27473831176758 + }, + { + "x": 74.69783020019531, + "y": 89.2688980102539 + }, + { + "x": 104.00908660888672, + "y": 86.35029602050781 + }, + { + "x": 136.46987915039062, + "y": 84.24769592285156 + }, + { + "x": 163.691162109375, + "y": 81.91798400878906 + }, + { + "x": 195.88682556152344, + "y": 79.19924926757812 + }, + { + "x": 226.26217651367188, + "y": 76.68206787109375 + }, + { + "x": 257.6339416503906, + "y": 75.59291076660156 + }, + { + "x": 72.93314361572266, + "y": 121.7668685913086 + }, + { + "x": 103.21765899658203, + "y": 118.73412322998047 + }, + { + "x": 132.60899353027344, + "y": 115.86824035644531 + }, + { + "x": 162.16456604003906, + "y": 112.67951965332031 + }, + { + "x": 194.32769775390625, + "y": 110.25994110107422 + }, + { + "x": 225.87576293945312, + "y": 109.4676742553711 + }, + { + "x": 255.6565399169922, + "y": 107.5693130493164 + }, + { + "x": 73.15721893310547, + "y": 154.246826171875 + }, + { + "x": 101.79410552978516, + "y": 150.57737731933594 + }, + { + "x": 131.34593200683594, + "y": 146.4805908203125 + }, + { + "x": 162.70135498046875, + "y": 144.87289428710938 + }, + { + "x": 193.10557556152344, + "y": 144.1999969482422 + }, + { + "x": 223.69224548339844, + "y": 141.46926879882812 + }, + { + "x": 255.6953125, + "y": 140.06588745117188 + }, + { + "x": 71.84244537353516, + "y": 185.43199157714844 + }, + { + "x": 102.70198059082031, + "y": 182.34510803222656 + }, + { + "x": 131.2189178466797, + "y": 179.7911834716797 + }, + { + "x": 162.98435974121094, + "y": 178.571044921875 + }, + { + "x": 191.73541259765625, + "y": 175.3131866455078 + }, + { + "x": 224.16436767578125, + "y": 173.8011016845703 + }, + { + "x": 253.9828338623047, + "y": 171.49575805664062 + }, + { + "x": 73.53382873535156, + "y": 218.43031311035156 + }, + { + "x": 101.3834228515625, + "y": 214.1704864501953 + }, + { + "x": 130.8558807373047, + "y": 210.91990661621094 + }, + { + "x": 161.58767700195312, + "y": 208.56967163085938 + }, + { + "x": 192.28004455566406, + "y": 207.12637329101562 + }, + { + "x": 222.01463317871094, + "y": 205.42527770996094 + }, + { + "x": 254.50526428222656, + "y": 203.86622619628906 + }, + { + "x": 71.61225128173828, + "y": 249.35874938964844 + }, + { + "x": 102.18250274658203, + "y": 246.23362731933594 + }, + { + "x": 131.15603637695312, + "y": 243.94606018066406 + }, + { + "x": 161.69424438476562, + "y": 241.89112854003906 + }, + { + "x": 191.79525756835938, + "y": 238.5449981689453 + }, + { + "x": 224.2322998046875, + "y": 238.13160705566406 + }, + { + "x": 254.2428741455078, + "y": 235.25645446777344 + } + ], + "reprojectionErrors": [ + { + "x": -0.304595947265625, + "y": 1.1794013977050781 + }, + { + "x": -0.03856658935546875, + "y": 1.3366661071777344 + }, + { + "x": 0.6133880615234375, + "y": 0.40230560302734375 + }, + { + "x": -0.94915771484375, + "y": 1.3024024963378906 + }, + { + "x": -1.6102142333984375, + "y": 1.2980117797851562 + }, + { + "x": -2.9553985595703125, + "y": -1.7944602966308594 + }, + { + "x": -1.519378662109375, + "y": -1.75286865234375 + }, + { + "x": 0.6318817138671875, + "y": 0.4089813232421875 + }, + { + "x": 0.8996353149414062, + "y": 0.861236572265625 + }, + { + "x": -1.7146148681640625, + "y": 0.47574615478515625 + }, + { + "x": 1.1817474365234375, + "y": 0.29534912109375 + }, + { + "x": -0.6216278076171875, + "y": 0.48165130615234375 + }, + { + "x": -0.3263397216796875, + "y": 0.44378662109375 + }, + { + "x": -0.745452880859375, + "y": -1.0450210571289062 + }, + { + "x": 1.56951904296875, + "y": -0.753814697265625 + }, + { + "x": 0.9410781860351562, + "y": -0.05309295654296875 + }, + { + "x": 1.4748077392578125, + "y": 0.46015167236328125 + }, + { + "x": 2.1168365478515625, + "y": 1.2753372192382812 + }, + { + "x": 0.4274444580078125, + "y": 1.3002090454101562 + }, + { + "x": -0.36700439453125, + "y": -0.3236846923828125 + }, + { + "x": 0.8894195556640625, + "y": -0.86322021484375 + }, + { + "x": 0.44588470458984375, + "y": -1.7626953125 + }, + { + "x": 1.5451431274414062, + "y": -0.2898101806640625 + }, + { + "x": 1.99993896484375, + "y": 1.5909423828125 + }, + { + "x": 0.9252166748046875, + "y": 0.9628448486328125 + }, + { + "x": 1.0793914794921875, + "y": -0.62005615234375 + }, + { + "x": 1.3325653076171875, + "y": -0.1654205322265625 + }, + { + "x": 0.45452880859375, + "y": -1.0586700439453125 + }, + { + "x": 0.7877197265625, + "y": -1.330535888671875 + }, + { + "x": -0.2525482177734375, + "y": -0.3035125732421875 + }, + { + "x": 1.321807861328125, + "y": 0.172210693359375 + }, + { + "x": -0.0766754150390625, + "y": -0.704437255859375 + }, + { + "x": 1.81854248046875, + "y": 0.43780517578125 + }, + { + "x": 0.3189697265625, + "y": -0.184814453125 + }, + { + "x": 1.7167816162109375, + "y": -0.0335235595703125 + }, + { + "x": -1.9509201049804688, + "y": -2.5546875 + }, + { + "x": 0.1049652099609375, + "y": -0.2166900634765625 + }, + { + "x": 0.8116302490234375, + "y": 1.094879150390625 + }, + { + "x": 0.5362701416015625, + "y": 1.4886932373046875 + }, + { + "x": 0.58135986328125, + "y": 0.95794677734375 + }, + { + "x": 1.869049072265625, + "y": 0.6671142578125 + }, + { + "x": 0.6893310546875, + "y": 0.2161102294921875 + }, + { + "x": -1.1518936157226562, + "y": -1.541351318359375 + }, + { + "x": -1.727325439453125, + "y": -0.1985931396484375 + }, + { + "x": -0.430694580078125, + "y": 0.2906036376953125 + }, + { + "x": -0.419708251953125, + "y": 0.5309600830078125 + }, + { + "x": 0.311248779296875, + "y": 2.0460968017578125 + }, + { + "x": -1.0072021484375, + "y": 0.6118316650390625 + }, + { + "x": 0.3912811279296875, + "y": 1.622467041015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.41217545734701017, + "y": -0.2726905421184254, + "z": 0.8766269633801934 + }, + "rotation": { + "quaternion": { + "W": 0.995671828143073, + "X": -0.049243922257917065, + "Y": 0.07781973480514397, + "Z": -0.012519410439164899 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img15.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img15.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 180.4730224609375, + "y": 251.62673950195312 + }, + { + "x": 182.7234344482422, + "y": 220.24391174316406 + }, + { + "x": 181.15536499023438, + "y": 186.52272033691406 + }, + { + "x": 182.79913330078125, + "y": 155.8206329345703 + }, + { + "x": 182.3369140625, + "y": 122.1585693359375 + }, + { + "x": 184.5735321044922, + "y": 90.27394104003906 + }, + { + "x": 185.84815979003906, + "y": 56.29596710205078 + }, + { + "x": 213.07630920410156, + "y": 249.43576049804688 + }, + { + "x": 212.74827575683594, + "y": 215.89207458496094 + }, + { + "x": 213.61231994628906, + "y": 184.45504760742188 + }, + { + "x": 212.41915893554688, + "y": 152.2057342529297 + }, + { + "x": 214.0792694091797, + "y": 120.50111389160156 + }, + { + "x": 214.32957458496094, + "y": 87.28260040283203 + }, + { + "x": 215.8439178466797, + "y": 55.3620491027832 + }, + { + "x": 243.32777404785156, + "y": 247.92868041992188 + }, + { + "x": 243.11135864257812, + "y": 214.46511840820312 + }, + { + "x": 243.08596801757812, + "y": 183.0521240234375 + }, + { + "x": 243.5887451171875, + "y": 149.2346954345703 + }, + { + "x": 244.2298126220703, + "y": 118.22262573242188 + }, + { + "x": 248.1866912841797, + "y": 86.25077819824219 + }, + { + "x": 246.2174835205078, + "y": 54.223106384277344 + }, + { + "x": 275.9627685546875, + "y": 247.2633514404297 + }, + { + "x": 275.783935546875, + "y": 212.47674560546875 + }, + { + "x": 276.5482482910156, + "y": 182.20103454589844 + }, + { + "x": 276.52728271484375, + "y": 148.3129119873047 + }, + { + "x": 275.4069519042969, + "y": 115.32096099853516 + }, + { + "x": 276.4722900390625, + "y": 84.53572845458984 + }, + { + "x": 279.3629150390625, + "y": 52.02833938598633 + }, + { + "x": 307.1941223144531, + "y": 244.05992126464844 + }, + { + "x": 307.50543212890625, + "y": 212.4864501953125 + }, + { + "x": 306.6430969238281, + "y": 180.45872497558594 + }, + { + "x": 308.1813049316406, + "y": 148.2957000732422 + }, + { + "x": 309.78155517578125, + "y": 113.557373046875 + }, + { + "x": 311.2873229980469, + "y": 82.93585205078125 + }, + { + "x": 311.61700439453125, + "y": 49.565914154052734 + }, + { + "x": 341.0146484375, + "y": 244.97708129882812 + }, + { + "x": 338.850341796875, + "y": 211.4197998046875 + }, + { + "x": 341.0065002441406, + "y": 179.58460998535156 + }, + { + "x": 341.1255187988281, + "y": 146.44264221191406 + }, + { + "x": 342.7801208496094, + "y": 114.35628509521484 + }, + { + "x": 343.1853942871094, + "y": 80.70484161376953 + }, + { + "x": 346.0572509765625, + "y": 51.18837356567383 + }, + { + "x": 372.2951965332031, + "y": 242.6704864501953 + }, + { + "x": 372.70611572265625, + "y": 211.2195587158203 + }, + { + "x": 372.55438232421875, + "y": 177.58950805664062 + }, + { + "x": 374.041259765625, + "y": 146.46026611328125 + }, + { + "x": 373.61541748046875, + "y": 113.19380950927734 + }, + { + "x": 376.06134033203125, + "y": 81.23294830322266 + }, + { + "x": 376.2635498046875, + "y": 49.05017852783203 + } + ], + "reprojectionErrors": [ + { + "x": -0.902679443359375, + "y": -1.26080322265625 + }, + { + "x": -2.246124267578125, + "y": -2.4115753173828125 + }, + { + "x": 0.2246551513671875, + "y": -1.0470428466796875 + }, + { + "x": -0.5206451416015625, + "y": -2.526031494140625 + }, + { + "x": 0.8358306884765625, + "y": -0.8707427978515625 + }, + { + "x": -0.510711669921875, + "y": -0.8198928833007812 + }, + { + "x": -0.8993988037109375, + "y": 1.4960365295410156 + }, + { + "x": -1.70556640625, + "y": -0.058319091796875 + }, + { + "x": -0.5546417236328125, + "y": 0.8580169677734375 + }, + { + "x": -0.5996551513671875, + "y": -0.15435791015625 + }, + { + "x": 1.4087066650390625, + "y": -0.177825927734375 + }, + { + "x": 0.5599822998046875, + "y": -0.5706710815429688 + }, + { + "x": 1.117279052734375, + "y": 0.724365234375 + }, + { + "x": 0.40679931640625, + "y": 0.8941574096679688 + }, + { + "x": -0.0150604248046875, + "y": 0.4285430908203125 + }, + { + "x": 0.939361572265625, + "y": 1.1672210693359375 + }, + { + "x": 1.6992950439453125, + "y": 0.03436279296875 + }, + { + "x": 1.927642822265625, + "y": 1.483642578125 + }, + { + "x": 2.014312744140625, + "y": 0.30391693115234375 + }, + { + "x": -1.2182159423828125, + "y": 0.25901031494140625 + }, + { + "x": 1.47198486328125, + "y": 0.4436683654785156 + }, + { + "x": -0.55548095703125, + "y": 0.0413055419921875 + }, + { + "x": 0.27557373046875, + "y": 2.001678466796875 + }, + { + "x": 0.16046142578125, + "y": -0.368682861328125 + }, + { + "x": 0.82763671875, + "y": 1.0521697998046875 + }, + { + "x": 2.591156005859375, + "y": 1.7543182373046875 + }, + { + "x": 2.166046142578125, + "y": 0.425872802734375 + }, + { + "x": -0.0872802734375, + "y": 0.9944000244140625 + }, + { + "x": 0.4715576171875, + "y": 2.1591949462890625 + }, + { + "x": 0.725738525390625, + "y": 0.8011932373046875 + }, + { + "x": 2.1510009765625, + "y": 0.0787811279296875 + }, + { + "x": 1.173126220703125, + "y": -0.3283538818359375 + }, + { + "x": 0.130645751953125, + "y": 2.018402099609375 + }, + { + "x": -0.819915771484375, + "y": 0.4256134033203125 + }, + { + "x": -0.596893310546875, + "y": 1.7571792602539062 + }, + { + "x": -0.915283203125, + "y": 0.1228485107421875 + }, + { + "x": 1.726806640625, + "y": 0.6394805908203125 + }, + { + "x": 0.0462646484375, + "y": -0.3834381103515625 + }, + { + "x": 0.400726318359375, + "y": 0.0815887451171875 + }, + { + "x": -0.78253173828125, + "y": -0.329193115234375 + }, + { + "x": -0.718597412109375, + "y": 1.0035400390625 + }, + { + "x": -3.123321533203125, + "y": -1.6215934753417969 + }, + { + "x": 0.424896240234375, + "y": 1.2759552001953125 + }, + { + "x": 0.4029541015625, + "y": -0.427001953125 + }, + { + "x": 0.94195556640625, + "y": 0.2329864501953125 + }, + { + "x": -0.15936279296875, + "y": -1.4253997802734375 + }, + { + "x": 0.65032958984375, + "y": -0.7655410766601562 + }, + { + "x": -1.413421630859375, + "y": -1.23162841796875 + }, + { + "x": -1.235137939453125, + "y": -1.2974815368652344 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.32015562037441564, + "y": -0.11743359242555954, + "z": 0.8497657077083035 + }, + "rotation": { + "quaternion": { + "W": 0.7010690934847333, + "X": -0.07106978282689767, + "Y": 0.006749458764466567, + "Z": -0.709510857517923 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img16.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img16.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 469.7506103515625, + "y": 44.25443649291992 + }, + { + "x": 470.00726318359375, + "y": 77.36872100830078 + }, + { + "x": 469.1713562011719, + "y": 110.51791381835938 + }, + { + "x": 470.578857421875, + "y": 144.22352600097656 + }, + { + "x": 469.44097900390625, + "y": 177.37709045410156 + }, + { + "x": 471.06121826171875, + "y": 210.4102783203125 + }, + { + "x": 471.4709167480469, + "y": 243.02122497558594 + }, + { + "x": 437.2975769042969, + "y": 47.36101531982422 + }, + { + "x": 436.09515380859375, + "y": 77.84868621826172 + }, + { + "x": 436.2796630859375, + "y": 111.66615295410156 + }, + { + "x": 435.799072265625, + "y": 145.2369384765625 + }, + { + "x": 437.4505310058594, + "y": 179.14376831054688 + }, + { + "x": 436.316162109375, + "y": 211.58494567871094 + }, + { + "x": 438.2461853027344, + "y": 245.69554138183594 + }, + { + "x": 402.4974670410156, + "y": 46.09979248046875 + }, + { + "x": 402.4416198730469, + "y": 80.31847381591797 + }, + { + "x": 402.50830078125, + "y": 111.96097564697266 + }, + { + "x": 402.5426025390625, + "y": 147.734375 + }, + { + "x": 402.09808349609375, + "y": 180.1498260498047 + }, + { + "x": 403.2023010253906, + "y": 213.22006225585938 + }, + { + "x": 404.0560607910156, + "y": 245.82948303222656 + }, + { + "x": 368.83740234375, + "y": 49.407466888427734 + }, + { + "x": 367.2343444824219, + "y": 82.48724365234375 + }, + { + "x": 367.5115966796875, + "y": 114.20154571533203 + }, + { + "x": 368.953857421875, + "y": 148.09335327148438 + }, + { + "x": 370.5589294433594, + "y": 183.0180206298828 + }, + { + "x": 369.62091064453125, + "y": 214.49990844726562 + }, + { + "x": 371.30853271484375, + "y": 249.21051025390625 + }, + { + "x": 333.8658142089844, + "y": 52.165367126464844 + }, + { + "x": 336.0666198730469, + "y": 84.49992370605469 + }, + { + "x": 334.2198181152344, + "y": 117.50016784667969 + }, + { + "x": 335.1584167480469, + "y": 149.7449951171875 + }, + { + "x": 335.546875, + "y": 183.63705444335938 + }, + { + "x": 336.7053527832031, + "y": 216.888916015625 + }, + { + "x": 337.3829650878906, + "y": 250.51512145996094 + }, + { + "x": 301.4778747558594, + "y": 53.732154846191406 + }, + { + "x": 301.37353515625, + "y": 86.42376708984375 + }, + { + "x": 301.59906005859375, + "y": 119.51300048828125 + }, + { + "x": 302.06903076171875, + "y": 152.5874481201172 + }, + { + "x": 304.4116516113281, + "y": 186.47264099121094 + }, + { + "x": 304.112060546875, + "y": 218.3131103515625 + }, + { + "x": 304.6792907714844, + "y": 252.10093688964844 + }, + { + "x": 268.7384948730469, + "y": 56.28265380859375 + }, + { + "x": 269.01873779296875, + "y": 89.20008087158203 + }, + { + "x": 268.48443603515625, + "y": 122.50348663330078 + }, + { + "x": 269.9947204589844, + "y": 156.39230346679688 + }, + { + "x": 269.7466125488281, + "y": 188.5417938232422 + }, + { + "x": 272.482177734375, + "y": 223.16845703125 + }, + { + "x": 271.5104675292969, + "y": 254.69549560546875 + } + ], + "reprojectionErrors": [ + { + "x": -1.828582763671875, + "y": -0.7205657958984375 + }, + { + "x": -1.356201171875, + "y": -0.85638427734375 + }, + { + "x": 0.213104248046875, + "y": -0.8431167602539062 + }, + { + "x": -0.4566650390625, + "y": -1.2008514404296875 + }, + { + "x": 1.423370361328125, + "y": -0.8197174072265625 + }, + { + "x": 0.5496826171875, + "y": -0.129913330078125 + }, + { + "x": 0.891021728515625, + "y": 1.171844482421875 + }, + { + "x": -2.77606201171875, + "y": -1.5532646179199219 + }, + { + "x": -0.93890380859375, + "y": 0.8584136962890625 + }, + { + "x": -0.484832763671875, + "y": 0.12337493896484375 + }, + { + "x": 0.638214111328125, + "y": -0.1804962158203125 + }, + { + "x": -0.366912841796875, + "y": -0.6345367431640625 + }, + { + "x": 1.417694091796875, + "y": 0.5644073486328125 + }, + { + "x": 0.14190673828125, + "y": 0.28271484375 + }, + { + "x": -1.233306884765625, + "y": 1.9236030578613281 + }, + { + "x": -0.636077880859375, + "y": 0.5287857055664062 + }, + { + "x": -0.158050537109375, + "y": 1.8923416137695312 + }, + { + "x": 0.355743408203125, + "y": -0.69140625 + }, + { + "x": 1.35174560546875, + "y": 0.267791748046875 + }, + { + "x": 0.802459716796875, + "y": 0.7586212158203125 + }, + { + "x": 0.507049560546875, + "y": 1.8981170654296875 + }, + { + "x": -0.69873046875, + "y": 0.7744483947753906 + }, + { + "x": 1.353179931640625, + "y": 0.446624755859375 + }, + { + "x": 1.527679443359375, + "y": 1.6656341552734375 + }, + { + "x": 0.5400390625, + "y": 0.889892578125 + }, + { + "x": -0.60748291015625, + "y": -0.7345733642578125 + }, + { + "x": 0.791015625, + "y": 1.2693023681640625 + }, + { + "x": -0.43316650390625, + "y": 0.2314300537109375 + }, + { + "x": 1.268157958984375, + "y": 0.11900711059570312 + }, + { + "x": -0.57550048828125, + "y": 0.468017578125 + }, + { + "x": 1.630889892578125, + "y": 0.33191680908203125 + }, + { + "x": 1.05426025390625, + "y": 1.1331787109375 + }, + { + "x": 1.03021240234375, + "y": 0.470550537109375 + }, + { + "x": 0.238616943359375, + "y": 0.6328582763671875 + }, + { + "x": -0.06964111328125, + "y": 0.6069488525390625 + }, + { + "x": 0.761260986328125, + "y": 0.5996437072753906 + }, + { + "x": 1.131805419921875, + "y": 0.5267105102539062 + }, + { + "x": 1.1744384765625, + "y": 0.23598480224609375 + }, + { + "x": 0.97454833984375, + "y": 0.1412353515625 + }, + { + "x": -1.09600830078125, + "y": -0.5817108154296875 + }, + { + "x": -0.522369384765625, + "y": 0.924041748046875 + }, + { + "x": -0.813568115234375, + "y": 0.6678009033203125 + }, + { + "x": 0.7049560546875, + "y": 0.042507171630859375 + }, + { + "x": 0.60064697265625, + "y": -0.31768035888671875 + }, + { + "x": 1.312347412109375, + "y": -0.8847274780273438 + }, + { + "x": -0.01904296875, + "y": -1.8567047119140625 + }, + { + "x": 0.40948486328125, + "y": -0.90753173828125 + }, + { + "x": -2.144195556640625, + "y": -2.2523040771484375 + }, + { + "x": -0.989044189453125, + "y": -0.3128204345703125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.09644281098457422, + "y": -0.268800041054746, + "z": 0.8282955720954356 + }, + "rotation": { + "quaternion": { + "W": 0.7182888189424261, + "X": -0.004545921634730333, + "Y": 0.05833155306993595, + "Z": 0.6932805616020361 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img17.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img17.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 248.54080200195312, + "y": 182.02125549316406 + }, + { + "x": 279.3315124511719, + "y": 179.38131713867188 + }, + { + "x": 309.7097473144531, + "y": 177.3743133544922 + }, + { + "x": 342.3736572265625, + "y": 173.56044006347656 + }, + { + "x": 374.30487060546875, + "y": 171.6099090576172 + }, + { + "x": 406.9601745605469, + "y": 169.08131408691406 + }, + { + "x": 438.9636535644531, + "y": 166.84519958496094 + }, + { + "x": 250.5090789794922, + "y": 214.2789764404297 + }, + { + "x": 280.6670227050781, + "y": 211.511962890625 + }, + { + "x": 312.58392333984375, + "y": 208.54940795898438 + }, + { + "x": 342.4901123046875, + "y": 207.28456115722656 + }, + { + "x": 375.7696228027344, + "y": 203.78794860839844 + }, + { + "x": 407.65753173828125, + "y": 201.4007110595703 + }, + { + "x": 440.3545227050781, + "y": 199.15643310546875 + }, + { + "x": 252.21835327148438, + "y": 245.88461303710938 + }, + { + "x": 282.6610412597656, + "y": 243.75155639648438 + }, + { + "x": 313.6558837890625, + "y": 240.1964111328125 + }, + { + "x": 344.69805908203125, + "y": 238.32931518554688 + }, + { + "x": 377.21844482421875, + "y": 235.69454956054688 + }, + { + "x": 409.31494140625, + "y": 233.7616424560547 + }, + { + "x": 441.3551330566406, + "y": 231.5254364013672 + }, + { + "x": 254.1947784423828, + "y": 278.23236083984375 + }, + { + "x": 284.50543212890625, + "y": 274.68890380859375 + }, + { + "x": 315.0089111328125, + "y": 271.79583740234375 + }, + { + "x": 347.41851806640625, + "y": 270.2673645019531 + }, + { + "x": 378.2962341308594, + "y": 268.3362731933594 + }, + { + "x": 411.14520263671875, + "y": 265.1190185546875 + }, + { + "x": 443.0118713378906, + "y": 264.30963134765625 + }, + { + "x": 256.3033752441406, + "y": 309.206787109375 + }, + { + "x": 287.4613037109375, + "y": 306.86920166015625 + }, + { + "x": 317.2619323730469, + "y": 304.95025634765625 + }, + { + "x": 349.5043029785156, + "y": 303.1808166503906 + }, + { + "x": 379.3376159667969, + "y": 300.8798828125 + }, + { + "x": 412.51239013671875, + "y": 298.49786376953125 + }, + { + "x": 444.50946044921875, + "y": 295.448974609375 + }, + { + "x": 259.45489501953125, + "y": 341.5294189453125 + }, + { + "x": 288.7265625, + "y": 338.6867370605469 + }, + { + "x": 319.7004089355469, + "y": 336.1669616699219 + }, + { + "x": 351.6328125, + "y": 331.7879638671875 + }, + { + "x": 381.959228515625, + "y": 331.7070007324219 + }, + { + "x": 413.3782653808594, + "y": 330.6244812011719 + }, + { + "x": 445.96734619140625, + "y": 328.6186218261719 + }, + { + "x": 260.3075256347656, + "y": 371.9699401855469 + }, + { + "x": 291.086669921875, + "y": 369.1256408691406 + }, + { + "x": 322.26556396484375, + "y": 367.30267333984375 + }, + { + "x": 353.4591369628906, + "y": 366.8072204589844 + }, + { + "x": 384.3910827636719, + "y": 362.92608642578125 + }, + { + "x": 416.60614013671875, + "y": 362.7569580078125 + }, + { + "x": 447.8787536621094, + "y": 360.4884338378906 + } + ], + "reprojectionErrors": [ + { + "x": 0.088165283203125, + "y": -0.3498077392578125 + }, + { + "x": 0.341400146484375, + "y": -0.12139892578125 + }, + { + "x": 1.1331787109375, + "y": -0.535400390625 + }, + { + "x": -0.233978271484375, + "y": 0.847930908203125 + }, + { + "x": -0.74102783203125, + "y": 0.3583526611328125 + }, + { + "x": -1.8441162109375, + "y": 0.4372100830078125 + }, + { + "x": -2.166656494140625, + "y": 0.213897705078125 + }, + { + "x": 0.038848876953125, + "y": -0.7940826416015625 + }, + { + "x": 0.93170166015625, + "y": -0.37457275390625 + }, + { + "x": 0.191741943359375, + "y": 0.231231689453125 + }, + { + "x": 1.5892333984375, + "y": -0.8699951171875 + }, + { + "x": -0.2591552734375, + "y": 0.251190185546875 + }, + { + "x": -0.58782958984375, + "y": 0.25360107421875 + }, + { + "x": -1.5968017578125, + "y": 0.1035919189453125 + }, + { + "x": 0.2078399658203125, + "y": -0.596527099609375 + }, + { + "x": 0.825775146484375, + "y": -0.7471771240234375 + }, + { + "x": 1.0177001953125, + "y": 0.515228271484375 + }, + { + "x": 1.289154052734375, + "y": 0.0804901123046875 + }, + { + "x": 0.20989990234375, + "y": 0.4042816162109375 + }, + { + "x": -0.31732177734375, + "y": 0.01702880859375 + }, + { + "x": -0.659393310546875, + "y": -0.076141357421875 + }, + { + "x": 0.06951904296875, + "y": -1.14208984375 + }, + { + "x": 0.832244873046875, + "y": 0.1812744140625 + }, + { + "x": 1.52838134765625, + "y": 0.84539794921875 + }, + { + "x": 0.4453125, + "y": 0.136077880859375 + }, + { + "x": 1.021728515625, + "y": -0.179534912109375 + }, + { + "x": -0.244842529296875, + "y": 0.78204345703125 + }, + { + "x": -0.40020751953125, + "y": -0.673248291015625 + }, + { + "x": -0.240631103515625, + "y": -0.306060791015625 + }, + { + "x": -0.309478759765625, + "y": -0.1251220703125 + }, + { + "x": 1.105316162109375, + "y": -0.3714599609375 + }, + { + "x": 0.205413818359375, + "y": -0.77593994140625 + }, + { + "x": 1.84228515625, + "y": -0.657623291015625 + }, + { + "x": 0.26605224609375, + "y": -0.466949462890625 + }, + { + "x": -0.00347900390625, + "y": 0.38177490234375 + }, + { + "x": -1.63287353515625, + "y": -0.800689697265625 + }, + { + "x": 0.20318603515625, + "y": -0.05133056640625 + }, + { + "x": 0.46356201171875, + "y": 0.366729736328125 + }, + { + "x": -0.107421875, + "y": 2.63555908203125 + }, + { + "x": 1.055389404296875, + "y": 0.597869873046875 + }, + { + "x": 1.254119873046875, + "y": -0.44677734375 + }, + { + "x": 0.41192626953125, + "y": -0.57666015625 + }, + { + "x": -0.764984130859375, + "y": 0.6136474609375 + }, + { + "x": -0.414764404296875, + "y": 1.4278564453125 + }, + { + "x": -0.337615966796875, + "y": 1.212554931640625 + }, + { + "x": -0.1478271484375, + "y": -0.338470458984375 + }, + { + "x": 0.43157958984375, + "y": 1.4879150390625 + }, + { + "x": -0.1434326171875, + "y": -0.406036376953125 + }, + { + "x": 0.353302001953125, + "y": -0.20892333984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.27798189335000356, + "y": -0.1768967815077536, + "z": 0.884133191000121 + }, + "rotation": { + "quaternion": { + "W": 0.9988961602167602, + "X": -0.0056682603493690914, + "Y": 0.03522967936151521, + "Z": -0.030548348906430794 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img18.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img18.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 375.4850769042969, + "y": 437.84332275390625 + }, + { + "x": 403.1291198730469, + "y": 439.4002990722656 + }, + { + "x": 430.6349182128906, + "y": 440.6763916015625 + }, + { + "x": 460.2619934082031, + "y": 440.2796325683594 + }, + { + "x": 490.05902099609375, + "y": 440.6315002441406 + }, + { + "x": 519.5609741210938, + "y": 441.4966125488281 + }, + { + "x": 549.66455078125, + "y": 442.1548156738281 + }, + { + "x": 377.09478759765625, + "y": 467.46844482421875 + }, + { + "x": 405.4533996582031, + "y": 467.9727783203125 + }, + { + "x": 433.0722351074219, + "y": 469.05169677734375 + }, + { + "x": 460.1947021484375, + "y": 470.7796936035156 + }, + { + "x": 490.9345397949219, + "y": 470.829833984375 + }, + { + "x": 520.9605102539062, + "y": 470.92779541015625 + }, + { + "x": 550.3055419921875, + "y": 471.6634521484375 + }, + { + "x": 380.119384765625, + "y": 495.33392333984375 + }, + { + "x": 406.2095947265625, + "y": 497.220458984375 + }, + { + "x": 435.2120666503906, + "y": 497.69915771484375 + }, + { + "x": 462.4267578125, + "y": 498.71929931640625 + }, + { + "x": 492.9607849121094, + "y": 498.693115234375 + }, + { + "x": 521.2076416015625, + "y": 500.715087890625 + }, + { + "x": 551.0225830078125, + "y": 501.6482238769531 + }, + { + "x": 380.07989501953125, + "y": 524.5655517578125 + }, + { + "x": 408.8775329589844, + "y": 525.046630859375 + }, + { + "x": 435.19403076171875, + "y": 526.04052734375 + }, + { + "x": 465.4764709472656, + "y": 526.86181640625 + }, + { + "x": 491.904296875, + "y": 528.7036743164062 + }, + { + "x": 523.8088989257812, + "y": 529.440673828125 + }, + { + "x": 551.3333129882812, + "y": 530.8289184570312 + }, + { + "x": 383.96234130859375, + "y": 551.1136474609375 + }, + { + "x": 409.3583679199219, + "y": 553.2221069335938 + }, + { + "x": 438.1549377441406, + "y": 553.98974609375 + }, + { + "x": 465.5909118652344, + "y": 556.4669799804688 + }, + { + "x": 494.0450134277344, + "y": 557.4530639648438 + }, + { + "x": 523.4971923828125, + "y": 558.6749267578125 + }, + { + "x": 553.9481811523438, + "y": 558.2077026367188 + }, + { + "x": 385.01080322265625, + "y": 580.1697387695312 + }, + { + "x": 412.33905029296875, + "y": 580.2815551757812 + }, + { + "x": 439.3847961425781, + "y": 582.6163330078125 + }, + { + "x": 468.0190124511719, + "y": 582.59033203125 + }, + { + "x": 494.578125, + "y": 584.6685180664062 + }, + { + "x": 524.7022705078125, + "y": 585.9898071289062 + }, + { + "x": 553.1618041992188, + "y": 587.471923828125 + }, + { + "x": 387.49566650390625, + "y": 604.6561889648438 + }, + { + "x": 412.82867431640625, + "y": 607.6876220703125 + }, + { + "x": 441.5910949707031, + "y": 608.84521484375 + }, + { + "x": 468.3874816894531, + "y": 611.3685913085938 + }, + { + "x": 497.806396484375, + "y": 610.725341796875 + }, + { + "x": 525.0565185546875, + "y": 613.9532470703125 + }, + { + "x": 554.5150756835938, + "y": 614.811767578125 + } + ], + "reprojectionErrors": [ + { + "x": -0.53472900390625, + "y": 0.696014404296875 + }, + { + "x": 0.0557861328125, + "y": -0.1865234375 + }, + { + "x": 1.06927490234375, + "y": -0.78167724609375 + }, + { + "x": 0.25048828125, + "y": 0.3026123046875 + }, + { + "x": -0.444976806640625, + "y": 0.644989013671875 + }, + { + "x": -0.547607421875, + "y": 0.480865478515625 + }, + { + "x": -0.94976806640625, + "y": 0.53057861328125 + }, + { + "x": -0.09478759765625, + "y": -0.26153564453125 + }, + { + "x": -0.375701904296875, + "y": 0.04736328125 + }, + { + "x": 0.36468505859375, + "y": -0.21051025390625 + }, + { + "x": 1.887054443359375, + "y": -1.1094970703125 + }, + { + "x": 0.081939697265625, + "y": -0.3226318359375 + }, + { + "x": -0.715087890625, + "y": 0.42462158203125 + }, + { + "x": -0.5325927734375, + "y": 0.542449951171875 + }, + { + "x": -1.130889892578125, + "y": 0.2340087890625 + }, + { + "x": 0.7037353515625, + "y": -0.703582763671875 + }, + { + "x": -0.0955810546875, + "y": -0.224212646484375 + }, + { + "x": 1.17529296875, + "y": -0.277069091796875 + }, + { + "x": -0.58660888671875, + "y": 0.725738525390625 + }, + { + "x": 0.2294921875, + "y": -0.31011962890625 + }, + { + "x": -0.227294921875, + "y": -0.24749755859375 + }, + { + "x": 0.83746337890625, + "y": -0.93060302734375 + }, + { + "x": -0.184356689453125, + "y": -0.32989501953125 + }, + { + "x": 1.55023193359375, + "y": -0.231689453125 + }, + { + "x": -0.40185546875, + "y": 0.049560546875 + }, + { + "x": 1.7840576171875, + "y": -0.67913818359375 + }, + { + "x": -1.21929931640625, + "y": -0.29217529296875 + }, + { + "x": 0.44940185546875, + "y": -0.54547119140625 + }, + { + "x": -1.1741943359375, + "y": 0.30645751953125 + }, + { + "x": 1.060333251953125, + "y": -0.5902099609375 + }, + { + "x": 0.1666259765625, + "y": -0.134521484375 + }, + { + "x": 0.909759521484375, + "y": -1.37677001953125 + }, + { + "x": 0.915008544921875, + "y": -1.11602783203125 + }, + { + "x": 0.20660400390625, + "y": -1.0789794921875 + }, + { + "x": -1.21209716796875, + "y": 0.6593017578125 + }, + { + "x": -0.4085693359375, + "y": -1.234619140625 + }, + { + "x": -0.247833251953125, + "y": -0.0072021484375 + }, + { + "x": 0.46484375, + "y": -0.99017333984375 + }, + { + "x": -0.1376953125, + "y": 0.40057373046875 + }, + { + "x": 1.612152099609375, + "y": -0.29986572265625 + }, + { + "x": 0.07830810546875, + "y": -0.230224609375 + }, + { + "x": 0.49444580078125, + "y": -0.30792236328125 + }, + { + "x": -1.134613037109375, + "y": 1.53515625 + }, + { + "x": 0.88336181640625, + "y": -0.0322265625 + }, + { + "x": -0.261444091796875, + "y": 0.28802490234375 + }, + { + "x": 0.830230712890625, + "y": -0.74346923828125 + }, + { + "x": -0.42626953125, + "y": 1.40582275390625 + }, + { + "x": 0.76434326171875, + "y": -0.30169677734375 + }, + { + "x": 0.0289306640625, + "y": 0.37481689453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.18967042062671516, + "y": 0.029649997717845857, + "z": 0.9466029708127894 + }, + "rotation": { + "quaternion": { + "W": 0.9898728049426195, + "X": 0.10670977358075072, + "Y": 0.09360602969386973, + "Z": -0.0016629679269596811 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img19.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img19.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 495.6777648925781, + "y": 525.7161865234375 + }, + { + "x": 522.7909545898438, + "y": 529.3761596679688 + }, + { + "x": 550.1844482421875, + "y": 534.10107421875 + }, + { + "x": 578.2518310546875, + "y": 535.9420776367188 + }, + { + "x": 608.2147827148438, + "y": 539.8012084960938 + }, + { + "x": 635.7678833007812, + "y": 543.066650390625 + }, + { + "x": 664.6806640625, + "y": 547.8018188476562 + }, + { + "x": 495.6390686035156, + "y": 551.8912353515625 + }, + { + "x": 523.7929077148438, + "y": 555.4365234375 + }, + { + "x": 550.0676879882812, + "y": 558.91943359375 + }, + { + "x": 577.8069458007812, + "y": 563.45556640625 + }, + { + "x": 606.3335571289062, + "y": 566.4552001953125 + }, + { + "x": 635.55615234375, + "y": 569.8425903320312 + }, + { + "x": 662.989501953125, + "y": 573.3363647460938 + }, + { + "x": 495.4128723144531, + "y": 577.82763671875 + }, + { + "x": 522.3681030273438, + "y": 581.621826171875 + }, + { + "x": 549.6304931640625, + "y": 585.2272338867188 + }, + { + "x": 576.8241577148438, + "y": 588.45947265625 + }, + { + "x": 605.3934326171875, + "y": 591.8861083984375 + }, + { + "x": 632.9203491210938, + "y": 595.8125 + }, + { + "x": 661.0374145507812, + "y": 599.7210693359375 + }, + { + "x": 494.61053466796875, + "y": 602.4556274414062 + }, + { + "x": 522.5050659179688, + "y": 606.2192993164062 + }, + { + "x": 548.05224609375, + "y": 609.3467407226562 + }, + { + "x": 577.5988159179688, + "y": 613.528076171875 + }, + { + "x": 602.4376220703125, + "y": 617.20703125 + }, + { + "x": 632.9423217773438, + "y": 621.1278686523438 + }, + { + "x": 658.0942993164062, + "y": 624.0467529296875 + }, + { + "x": 496.4039306640625, + "y": 626.2431640625 + }, + { + "x": 520.1519165039062, + "y": 629.7233276367188 + }, + { + "x": 548.9781494140625, + "y": 633.7794799804688 + }, + { + "x": 574.9014892578125, + "y": 638.2891235351562 + }, + { + "x": 602.0215454101562, + "y": 642.6275634765625 + }, + { + "x": 629.8419189453125, + "y": 645.777099609375 + }, + { + "x": 658.7545776367188, + "y": 648.3316040039062 + }, + { + "x": 495.18560791015625, + "y": 650.5991821289062 + }, + { + "x": 522.1533203125, + "y": 653.7399291992188 + }, + { + "x": 547.5115356445312, + "y": 657.9190063476562 + }, + { + "x": 574.8311157226562, + "y": 662.0182495117188 + }, + { + "x": 600.7388916015625, + "y": 665.600830078125 + }, + { + "x": 628.5379028320312, + "y": 669.5865478515625 + }, + { + "x": 655.2647094726562, + "y": 672.937255859375 + }, + { + "x": 494.86187744140625, + "y": 672.8397216796875 + }, + { + "x": 519.97509765625, + "y": 677.14501953125 + }, + { + "x": 547.3756103515625, + "y": 681.6549072265625 + }, + { + "x": 573.3704223632812, + "y": 685.5591430664062 + }, + { + "x": 600.30224609375, + "y": 688.5103759765625 + }, + { + "x": 626.9197387695312, + "y": 693.04345703125 + }, + { + "x": 653.26123046875, + "y": 696.6276245117188 + } + ], + "reprojectionErrors": [ + { + "x": 0.291778564453125, + "y": 0.98907470703125 + }, + { + "x": 0.64697265625, + "y": 0.7386474609375 + }, + { + "x": 0.962646484375, + "y": -0.54730224609375 + }, + { + "x": 0.8482666015625, + "y": 1.080322265625 + }, + { + "x": -0.91473388671875, + "y": 0.71990966796875 + }, + { + "x": -0.01763916015625, + "y": 0.98370361328125 + }, + { + "x": -0.226806640625, + "y": -0.19134521484375 + }, + { + "x": 0.14013671875, + "y": 0.21636962890625 + }, + { + "x": -0.7840576171875, + "y": 0.160888671875 + }, + { + "x": 0.40740966796875, + "y": 0.197509765625 + }, + { + "x": 0.37396240234375, + "y": -0.7889404296875 + }, + { + "x": -0.20416259765625, + "y": -0.2083740234375 + }, + { + "x": -1.23248291015625, + "y": 0.015380859375 + }, + { + "x": -0.22265625, + "y": 0.1640625 + }, + { + "x": 0.15301513671875, + "y": -0.7083740234375 + }, + { + "x": 0.19482421875, + "y": -0.93536376953125 + }, + { + "x": 0.16204833984375, + "y": -0.94342041015625 + }, + { + "x": 0.4334716796875, + "y": -0.5477294921875 + }, + { + "x": -0.43218994140625, + "y": -0.3155517578125 + }, + { + "x": -0.0140380859375, + "y": -0.55181884765625 + }, + { + "x": 0.05859375, + "y": -0.738525390625 + }, + { + "x": 0.7196044921875, + "y": -0.69976806640625 + }, + { + "x": -0.404541015625, + "y": -0.82135009765625 + }, + { + "x": 1.04730224609375, + "y": -0.2762451171875 + }, + { + "x": -1.2686767578125, + "y": -0.75408935546875 + }, + { + "x": 1.3575439453125, + "y": -0.69830322265625 + }, + { + "x": -1.4447021484375, + "y": -0.85272216796875 + }, + { + "x": 1.34613037109375, + "y": 0.02691650390625 + }, + { + "x": -1.33148193359375, + "y": -0.21063232421875 + }, + { + "x": 1.469970703125, + "y": 0.023681640625 + }, + { + "x": -0.5819091796875, + "y": -0.2872314453125 + }, + { + "x": 0.496826171875, + "y": -1.02032470703125 + }, + { + "x": 0.60943603515625, + "y": -1.5506591796875 + }, + { + "x": 0.25506591796875, + "y": -0.86004638671875 + }, + { + "x": -0.9552001953125, + "y": 0.4580078125 + }, + { + "x": -0.392333984375, + "y": -0.635498046875 + }, + { + "x": -1.02593994140625, + "y": 0.00823974609375 + }, + { + "x": 0.17120361328125, + "y": -0.355224609375 + }, + { + "x": -0.3690185546875, + "y": -0.6072998046875 + }, + { + "x": 0.72930908203125, + "y": -0.31072998046875 + }, + { + "x": 0.16607666015625, + "y": -0.385009765625 + }, + { + "x": 0.90740966796875, + "y": 0.20843505859375 + }, + { + "x": -0.3687744140625, + "y": 0.7232666015625 + }, + { + "x": 0.64208984375, + "y": 0.270263671875 + }, + { + "x": -0.4166259765625, + "y": -0.35589599609375 + }, + { + "x": 0.15081787109375, + "y": -0.344482421875 + }, + { + "x": 0.00445556640625, + "y": 0.652099609375 + }, + { + "x": 0.39825439453125, + "y": 0.0994873046875 + }, + { + "x": 1.29669189453125, + "y": 0.52880859375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.09044194004115838, + "y": 0.10993063469914355, + "z": 0.9926226090162147 + }, + "rotation": { + "quaternion": { + "W": 0.9812976400589012, + "X": 0.16505868629445605, + "Y": 0.09236362019412843, + "Z": 0.03577056552830068 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img20.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img20.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 770.777099609375, + "y": 296.6248779296875 + }, + { + "x": 808.4096069335938, + "y": 299.2838134765625 + }, + { + "x": 843.721435546875, + "y": 304.1452941894531 + }, + { + "x": 883.1990356445312, + "y": 305.760986328125 + }, + { + "x": 920.5162963867188, + "y": 309.4708251953125 + }, + { + "x": 957.7398681640625, + "y": 313.5527648925781 + }, + { + "x": 994.1080932617188, + "y": 317.6330871582031 + }, + { + "x": 770.2450561523438, + "y": 332.6678466796875 + }, + { + "x": 806.4242553710938, + "y": 337.064697265625 + }, + { + "x": 845.3469848632812, + "y": 339.8377380371094 + }, + { + "x": 879.2943725585938, + "y": 344.1190490722656 + }, + { + "x": 918.5330200195312, + "y": 347.1346130371094 + }, + { + "x": 954.6925048828125, + "y": 350.7447814941406 + }, + { + "x": 991.4963989257812, + "y": 353.9734802246094 + }, + { + "x": 768.4805908203125, + "y": 370.278076171875 + }, + { + "x": 804.7296142578125, + "y": 372.4387512207031 + }, + { + "x": 840.2900390625, + "y": 378.02130126953125 + }, + { + "x": 876.8892822265625, + "y": 378.7187194824219 + }, + { + "x": 915.8826904296875, + "y": 382.5246276855469 + }, + { + "x": 951.59326171875, + "y": 386.92938232421875 + }, + { + "x": 986.8483276367188, + "y": 391.8825378417969 + }, + { + "x": 767.3643798828125, + "y": 405.69720458984375 + }, + { + "x": 802.5009765625, + "y": 409.7185974121094 + }, + { + "x": 838.4827270507812, + "y": 410.57135009765625 + }, + { + "x": 877.0188598632812, + "y": 415.97198486328125 + }, + { + "x": 911.5736694335938, + "y": 419.6206359863281 + }, + { + "x": 948.5338745117188, + "y": 424.738037109375 + }, + { + "x": 984.1016845703125, + "y": 427.3129577636719 + }, + { + "x": 765.453857421875, + "y": 440.28314208984375 + }, + { + "x": 801.2928466796875, + "y": 443.3899841308594 + }, + { + "x": 836.8902587890625, + "y": 447.39739990234375 + }, + { + "x": 873.5230712890625, + "y": 451.6888427734375 + }, + { + "x": 908.70703125, + "y": 456.0113525390625 + }, + { + "x": 944.9756469726562, + "y": 458.9104309082031 + }, + { + "x": 980.8892822265625, + "y": 462.4851379394531 + }, + { + "x": 764.420654296875, + "y": 475.3992004394531 + }, + { + "x": 799.5811767578125, + "y": 478.4988098144531 + }, + { + "x": 833.5489501953125, + "y": 480.4303283691406 + }, + { + "x": 870.3773803710938, + "y": 486.3512268066406 + }, + { + "x": 905.5958251953125, + "y": 489.41656494140625 + }, + { + "x": 939.9436645507812, + "y": 494.5838928222656 + }, + { + "x": 976.7234497070312, + "y": 497.5474548339844 + }, + { + "x": 759.9755859375, + "y": 508.7082824707031 + }, + { + "x": 795.4049072265625, + "y": 510.9097900390625 + }, + { + "x": 832.5116577148438, + "y": 516.2369384765625 + }, + { + "x": 867.34326171875, + "y": 519.8853149414062 + }, + { + "x": 902.6492919921875, + "y": 523.1156005859375 + }, + { + "x": 938.3380126953125, + "y": 527.8552856445312 + }, + { + "x": 972.6259765625, + "y": 531.5162963867188 + } + ], + "reprojectionErrors": [ + { + "x": 3.38446044921875, + "y": 4.640106201171875 + }, + { + "x": 1.014892578125, + "y": 4.206329345703125 + }, + { + "x": 1.73455810546875, + "y": 1.618408203125 + }, + { + "x": -0.917724609375, + "y": 2.326263427734375 + }, + { + "x": -0.5894775390625, + "y": 0.991607666015625 + }, + { + "x": 0.68023681640625, + "y": -0.66180419921875 + }, + { + "x": 3.681884765625, + "y": -2.258392333984375 + }, + { + "x": 1.757568359375, + "y": 3.65301513671875 + }, + { + "x": 0.61212158203125, + "y": 1.843963623046875 + }, + { + "x": -2.51776123046875, + "y": 1.714599609375 + }, + { + "x": 0.11151123046875, + "y": 0.13470458984375 + }, + { + "x": -1.74066162109375, + "y": -0.119781494140625 + }, + { + "x": 0.32305908203125, + "y": -0.907257080078125 + }, + { + "x": 2.607421875, + "y": -1.249542236328125 + }, + { + "x": 1.36419677734375, + "y": 0.71026611328125 + }, + { + "x": -0.07415771484375, + "y": 1.491912841796875 + }, + { + "x": -0.073974609375, + "y": -1.08514404296875 + }, + { + "x": -0.33831787109375, + "y": 1.288177490234375 + }, + { + "x": -2.197265625, + "y": 0.620361328125 + }, + { + "x": 0.0528564453125, + "y": -0.576690673828125 + }, + { + "x": 3.6124267578125, + "y": -2.250213623046875 + }, + { + "x": 0.32293701171875, + "y": -0.4130859375 + }, + { + "x": -0.22003173828125, + "y": -1.145263671875 + }, + { + "x": -0.86712646484375, + "y": 1.361419677734375 + }, + { + "x": -3.30364990234375, + "y": -0.6072998046875 + }, + { + "x": -0.968994140625, + "y": -0.74920654296875 + }, + { + "x": -0.22369384765625, + "y": -2.282562255859375 + }, + { + "x": 2.75714111328125, + "y": -1.19354248046875 + }, + { + "x": 0.07574462890625, + "y": -1.058807373046875 + }, + { + "x": -1.38092041015625, + "y": -0.5367431640625 + }, + { + "x": -1.863525390625, + "y": -0.8382568359375 + }, + { + "x": -2.6256103515625, + "y": -1.344329833984375 + }, + { + "x": -1.1583251953125, + "y": -1.79937744140625 + }, + { + "x": 0.0303955078125, + "y": -0.746246337890625 + }, + { + "x": 2.40692138671875, + "y": -0.28118896484375 + }, + { + "x": -1.0496826171875, + "y": -2.5745849609375 + }, + { + "x": -2.033447265625, + "y": -1.712493896484375 + }, + { + "x": -1.10040283203125, + "y": 0.401275634765625 + }, + { + "x": -2.28070068359375, + "y": -1.388031005859375 + }, + { + "x": -1.07965087890625, + "y": -0.23272705078125 + }, + { + "x": 1.78851318359375, + "y": -1.08746337890625 + }, + { + "x": 3.047607421875, + "y": 0.356597900390625 + }, + { + "x": 1.2353515625, + "y": -2.608306884765625 + }, + { + "x": -0.2174072265625, + "y": -0.52178955078125 + }, + { + "x": -2.63153076171875, + "y": -1.470947265625 + }, + { + "x": -2.0316162109375, + "y": -0.6484375 + }, + { + "x": -1.1435546875, + "y": 0.68798828125 + }, + { + "x": 0.149169921875, + "y": 0.61395263671875 + }, + { + "x": 3.65576171875, + "y": 1.7208251953125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.12791226653465268, + "y": -0.07380663094168376, + "z": 0.799271518419106 + }, + "rotation": { + "quaternion": { + "W": 0.9807586723000038, + "X": 0.08264706045479263, + "Y": 0.1737690467306833, + "Z": 0.03295767747923422 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img21.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img21.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 939.7941284179688, + "y": 514.2869873046875 + }, + { + "x": 965.1603393554688, + "y": 514.5988159179688 + }, + { + "x": 991.3185424804688, + "y": 516.7738647460938 + }, + { + "x": 1016.4916381835938, + "y": 517.2698364257812 + }, + { + "x": 1042.1278076171875, + "y": 519.6737060546875 + }, + { + "x": 1067.2069091796875, + "y": 518.7705078125 + }, + { + "x": 1093.564453125, + "y": 521.7313232421875 + }, + { + "x": 941.9788818359375, + "y": 537.6989135742188 + }, + { + "x": 967.4055786132812, + "y": 539.1976928710938 + }, + { + "x": 991.9404907226562, + "y": 539.8878784179688 + }, + { + "x": 1017.2290649414062, + "y": 541.96728515625 + }, + { + "x": 1042.604736328125, + "y": 542.416748046875 + }, + { + "x": 1068.437744140625, + "y": 544.1216430664062 + }, + { + "x": 1093.146240234375, + "y": 544.976806640625 + }, + { + "x": 943.7966918945312, + "y": 560.262451171875 + }, + { + "x": 968.5853271484375, + "y": 563.0521850585938 + }, + { + "x": 993.673828125, + "y": 562.7059936523438 + }, + { + "x": 1017.7658081054688, + "y": 564.9835205078125 + }, + { + "x": 1041.695068359375, + "y": 567.7169189453125 + }, + { + "x": 1067.4095458984375, + "y": 567.1685791015625 + }, + { + "x": 1092.6702880859375, + "y": 568.6168212890625 + }, + { + "x": 943.7501831054688, + "y": 582.8976440429688 + }, + { + "x": 969.1890258789062, + "y": 584.0418701171875 + }, + { + "x": 991.959228515625, + "y": 584.9761962890625 + }, + { + "x": 1018.6331176757812, + "y": 587.7621459960938 + }, + { + "x": 1041.33203125, + "y": 588.188232421875 + }, + { + "x": 1068.9361572265625, + "y": 588.7951049804688 + }, + { + "x": 1090.31396484375, + "y": 590.732177734375 + }, + { + "x": 945.3384399414062, + "y": 604.4864501953125 + }, + { + "x": 967.7756958007812, + "y": 605.1895751953125 + }, + { + "x": 993.663330078125, + "y": 607.7884521484375 + }, + { + "x": 1017.310791015625, + "y": 608.9078369140625 + }, + { + "x": 1042.4705810546875, + "y": 611.4590454101562 + }, + { + "x": 1066.498046875, + "y": 612.0640258789062 + }, + { + "x": 1092.1669921875, + "y": 612.3103637695312 + }, + { + "x": 945.2680053710938, + "y": 625.3356323242188 + }, + { + "x": 969.4793701171875, + "y": 628.2802734375 + }, + { + "x": 994.3215942382812, + "y": 629.2930908203125 + }, + { + "x": 1017.60546875, + "y": 630.3685913085938 + }, + { + "x": 1041.5576171875, + "y": 632.654052734375 + }, + { + "x": 1065.923095703125, + "y": 633.8583984375 + }, + { + "x": 1089.981689453125, + "y": 635.645263671875 + }, + { + "x": 947.3124389648438, + "y": 644.8291015625 + }, + { + "x": 969.7925415039062, + "y": 648.8237915039062 + }, + { + "x": 993.7023315429688, + "y": 649.8981323242188 + }, + { + "x": 1017.4605102539062, + "y": 651.9823608398438 + }, + { + "x": 1040.926513671875, + "y": 653.2693481445312 + }, + { + "x": 1065.303466796875, + "y": 655.42578125 + }, + { + "x": 1087.504150390625, + "y": 657.1705322265625 + } + ], + "reprojectionErrors": [ + { + "x": 3.7230224609375, + "y": 2.06207275390625 + }, + { + "x": 2.34259033203125, + "y": 2.61041259765625 + }, + { + "x": 0.53936767578125, + "y": 1.30853271484375 + }, + { + "x": 0.09906005859375, + "y": 1.698974609375 + }, + { + "x": -0.417724609375, + "y": 0.1951904296875 + }, + { + "x": 0.0181884765625, + "y": 2.0123291015625 + }, + { + "x": -0.41943359375, + "y": -0.020263671875 + }, + { + "x": 1.85162353515625, + "y": 0.65789794921875 + }, + { + "x": 0.3311767578125, + "y": 0.183837890625 + }, + { + "x": 0.06915283203125, + "y": 0.53387451171875 + }, + { + "x": -0.5712890625, + "y": -0.48956298828125 + }, + { + "x": -0.9149169921875, + "y": 0.13311767578125 + }, + { + "x": -1.3231201171875, + "y": -0.4830322265625 + }, + { + "x": -0.20458984375, + "y": -0.2325439453125 + }, + { + "x": 0.33929443359375, + "y": -0.02386474609375 + }, + { + "x": -0.6207275390625, + "y": -1.62628173828125 + }, + { + "x": -1.51629638671875, + "y": -0.074951171875 + }, + { + "x": -1.04266357421875, + "y": -1.1290283203125 + }, + { + "x": -0.0250244140625, + "y": -2.62030029296875 + }, + { + "x": -0.40234375, + "y": -0.8106689453125 + }, + { + "x": 0.0732421875, + "y": -0.97802734375 + }, + { + "x": 0.6834716796875, + "y": -0.8978271484375 + }, + { + "x": -1.00238037109375, + "y": -0.694091796875 + }, + { + "x": 0.3424072265625, + "y": -0.26025390625 + }, + { + "x": -1.8463134765625, + "y": -1.65728759765625 + }, + { + "x": 0.3187255859375, + "y": -0.67327880859375 + }, + { + "x": -2.0338134765625, + "y": 0.15155029296875 + }, + { + "x": 2.236572265625, + "y": -0.33154296875 + }, + { + "x": -0.61480712890625, + "y": -0.84075927734375 + }, + { + "x": 0.62725830078125, + "y": -0.03704833984375 + }, + { + "x": -1.22137451171875, + "y": -1.1065673828125 + }, + { + "x": -0.4619140625, + "y": -0.67352294921875 + }, + { + "x": -0.8385009765625, + "y": -1.648681640625 + }, + { + "x": 0.30224609375, + "y": -0.6534423828125 + }, + { + "x": 0.1956787109375, + "y": 0.7252197265625 + }, + { + "x": -0.26190185546875, + "y": -0.15411376953125 + }, + { + "x": -0.86572265625, + "y": -1.43487548828125 + }, + { + "x": -1.742919921875, + "y": -0.7589111328125 + }, + { + "x": -0.6961669921875, + "y": -0.1202392578125 + }, + { + "x": 0.0562744140625, + "y": -0.66552734375 + }, + { + "x": 0.77783203125, + "y": -0.10302734375 + }, + { + "x": 2.1978759765625, + "y": -0.09588623046875 + }, + { + "x": -2.03131103515625, + "y": 1.78314208984375 + }, + { + "x": -0.9737548828125, + "y": -0.3922119140625 + }, + { + "x": -0.99053955078125, + "y": 0.37994384765625 + }, + { + "x": -0.492431640625, + "y": 0.169921875 + }, + { + "x": 0.6695556640625, + "y": 0.78546142578125 + }, + { + "x": 1.30078125, + "y": 0.56060791015625 + }, + { + "x": 4.497314453125, + "y": 0.77716064453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.3864844834242611, + "y": 0.1252568675894979, + "z": 1.2350536354630943 + }, + "rotation": { + "quaternion": { + "W": 0.9787599875585837, + "X": 0.08280110883152947, + "Y": 0.18687654279743285, + "Z": -0.015812048655047043 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img22.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img22.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 986.8102416992188, + "y": 324.4804382324219 + }, + { + "x": 1017.2598876953125, + "y": 326.7327880859375 + }, + { + "x": 1045.485595703125, + "y": 330.36517333984375 + }, + { + "x": 1076.2088623046875, + "y": 331.5750427246094 + }, + { + "x": 1105.5992431640625, + "y": 335.69915771484375 + }, + { + "x": 1136.1219482421875, + "y": 337.1550598144531 + }, + { + "x": 1165.6236572265625, + "y": 340.8100280761719 + }, + { + "x": 989.28125, + "y": 354.671630859375 + }, + { + "x": 1018.1664428710938, + "y": 357.6236267089844 + }, + { + "x": 1047.8804931640625, + "y": 359.72174072265625 + }, + { + "x": 1074.9248046875, + "y": 363.6280822753906 + }, + { + "x": 1106.304931640625, + "y": 365.58038330078125 + }, + { + "x": 1135.4349365234375, + "y": 368.6305236816406 + }, + { + "x": 1164.9459228515625, + "y": 371.5601806640625 + }, + { + "x": 990.3324584960938, + "y": 384.16473388671875 + }, + { + "x": 1018.9520263671875, + "y": 388.2009582519531 + }, + { + "x": 1048.5294189453125, + "y": 389.4506530761719 + }, + { + "x": 1075.512451171875, + "y": 392.8951721191406 + }, + { + "x": 1104.8914794921875, + "y": 397.3327331542969 + }, + { + "x": 1134.697021484375, + "y": 399.2850036621094 + }, + { + "x": 1163.9388427734375, + "y": 402.31072998046875 + }, + { + "x": 989.647705078125, + "y": 413.9872741699219 + }, + { + "x": 1019.2457275390625, + "y": 415.7361145019531 + }, + { + "x": 1045.616455078125, + "y": 418.4416198730469 + }, + { + "x": 1076.80126953125, + "y": 423.295166015625 + }, + { + "x": 1103.7293701171875, + "y": 426.05908203125 + }, + { + "x": 1136.597900390625, + "y": 427.25445556640625 + }, + { + "x": 1161.93701171875, + "y": 432.58514404296875 + }, + { + "x": 990.4154663085938, + "y": 442.0614929199219 + }, + { + "x": 1016.8133544921875, + "y": 444.1161804199219 + }, + { + "x": 1046.7830810546875, + "y": 448.4076843261719 + }, + { + "x": 1075.043212890625, + "y": 452.40936279296875 + }, + { + "x": 1103.3525390625, + "y": 456.09271240234375 + }, + { + "x": 1132.48681640625, + "y": 459.2793884277344 + }, + { + "x": 1162.605712890625, + "y": 459.8590393066406 + }, + { + "x": 989.8003540039062, + "y": 470.2652282714844 + }, + { + "x": 1016.550048828125, + "y": 474.8028869628906 + }, + { + "x": 1046.5860595703125, + "y": 477.5287170410156 + }, + { + "x": 1074.6180419921875, + "y": 479.41497802734375 + }, + { + "x": 1102.1612548828125, + "y": 484.603271484375 + }, + { + "x": 1129.6593017578125, + "y": 487.95953369140625 + }, + { + "x": 1158.84765625, + "y": 492.186279296875 + }, + { + "x": 990.1499633789062, + "y": 495.807373046875 + }, + { + "x": 1016.1334228515625, + "y": 501.5104064941406 + }, + { + "x": 1044.8995361328125, + "y": 504.70831298828125 + }, + { + "x": 1072.97265625, + "y": 509.5887145996094 + }, + { + "x": 1100.0552978515625, + "y": 512.0011596679688 + }, + { + "x": 1129.626220703125, + "y": 517.1290283203125 + }, + { + "x": 1154.744873046875, + "y": 520.5708618164062 + } + ], + "reprojectionErrors": [ + { + "x": 5.33489990234375, + "y": 0.3807373046875 + }, + { + "x": 3.53802490234375, + "y": 1.305633544921875 + }, + { + "x": 3.879638671875, + "y": 0.841339111328125 + }, + { + "x": 1.6383056640625, + "y": 2.790435791015625 + }, + { + "x": 0.64501953125, + "y": 1.816162109375 + }, + { + "x": -1.5653076171875, + "y": 3.501068115234375 + }, + { + "x": -2.8389892578125, + "y": 2.97784423828125 + }, + { + "x": 1.62786865234375, + "y": -0.91253662109375 + }, + { + "x": 1.51031494140625, + "y": -0.717803955078125 + }, + { + "x": 0.477783203125, + "y": 0.3216552734375 + }, + { + "x": 2.0289306640625, + "y": -0.456207275390625 + }, + { + "x": -0.8411865234375, + "y": 0.71087646484375 + }, + { + "x": -1.546630859375, + "y": 0.771087646484375 + }, + { + "x": -2.7181396484375, + "y": 0.942779541015625 + }, + { + "x": -0.6268310546875, + "y": -1.29559326171875 + }, + { + "x": -0.36041259765625, + "y": -2.215911865234375 + }, + { + "x": -1.138671875, + "y": -0.35882568359375 + }, + { + "x": 0.5906982421875, + "y": -0.70562744140625 + }, + { + "x": -0.162109375, + "y": -2.054534912109375 + }, + { + "x": -1.427490234375, + "y": -0.92718505859375 + }, + { + "x": -2.2149658203125, + "y": -0.88226318359375 + }, + { + "x": -1.1129150390625, + "y": -1.785491943359375 + }, + { + "x": -1.703125, + "y": -0.4495849609375 + }, + { + "x": 0.846435546875, + "y": -0.07940673828125 + }, + { + "x": -1.5054931640625, + "y": -1.8663330078125 + }, + { + "x": 0.312255859375, + "y": -1.5726318359375 + }, + { + "x": -3.897216796875, + "y": 0.28057861328125 + }, + { + "x": -0.6636962890625, + "y": -2.010467529296875 + }, + { + "x": -3.018798828125, + "y": -0.293792724609375 + }, + { + "x": -0.28338623046875, + "y": 0.704833984375 + }, + { + "x": -1.208251953125, + "y": -0.542449951171875 + }, + { + "x": -0.511474609375, + "y": -1.5089111328125 + }, + { + "x": 0.0482177734375, + "y": -2.166046142578125 + }, + { + "x": -0.304443359375, + "y": -2.335479736328125 + }, + { + "x": -1.7288818359375, + "y": 0.093170166015625 + }, + { + "x": -3.50897216796875, + "y": 1.312744140625 + }, + { + "x": -0.9962158203125, + "y": -0.20343017578125 + }, + { + "x": -1.8590087890625, + "y": 0.08319091796875 + }, + { + "x": -0.8065185546875, + "y": 1.200347900390625 + }, + { + "x": 0.6461181640625, + "y": -0.993499755859375 + }, + { + "x": 2.0556640625, + "y": -1.3642578125 + }, + { + "x": 1.68701171875, + "y": -2.614410400390625 + }, + { + "x": -4.93084716796875, + "y": 5.836639404296875 + }, + { + "x": -1.51898193359375, + "y": 3.12286376953125 + }, + { + "x": -0.979736328125, + "y": 2.905181884765625 + }, + { + "x": 0.162841796875, + "y": 0.99603271484375 + }, + { + "x": 2.20654296875, + "y": 1.5458984375 + }, + { + "x": 1.6729736328125, + "y": -0.62860107421875 + }, + { + "x": 5.5029296875, + "y": -1.1259765625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.3404525651861064, + "y": -0.06782283188592576, + "z": 0.9541018630143359 + }, + "rotation": { + "quaternion": { + "W": 0.9952267625161105, + "X": -0.07770898707223027, + "Y": -0.031994121849672943, + "Z": 0.049612303584670094 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img23.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img23.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1073.9251708984375, + "y": 315.8950500488281 + }, + { + "x": 1101.7921142578125, + "y": 318.23602294921875 + }, + { + "x": 1128.208251953125, + "y": 322.8118591308594 + }, + { + "x": 1156.3876953125, + "y": 325.0360412597656 + }, + { + "x": 1183.2159423828125, + "y": 329.79864501953125 + }, + { + "x": 1211.3868408203125, + "y": 332.2969665527344 + }, + { + "x": 1238.275390625, + "y": 336.2362365722656 + }, + { + "x": 1075.931396484375, + "y": 345.0826721191406 + }, + { + "x": 1102.2327880859375, + "y": 348.6734619140625 + }, + { + "x": 1129.28125, + "y": 351.5262145996094 + }, + { + "x": 1153.976806640625, + "y": 356.8070068359375 + }, + { + "x": 1183.209228515625, + "y": 359.0488586425781 + }, + { + "x": 1210.45068359375, + "y": 363.2465515136719 + }, + { + "x": 1237.4825439453125, + "y": 366.54095458984375 + }, + { + "x": 1075.3450927734375, + "y": 374.2523193359375 + }, + { + "x": 1102.6201171875, + "y": 378.46661376953125 + }, + { + "x": 1128.4920654296875, + "y": 381.25262451171875 + }, + { + "x": 1155.27392578125, + "y": 385.09576416015625 + }, + { + "x": 1181.620849609375, + "y": 390.1362609863281 + }, + { + "x": 1209.3443603515625, + "y": 393.36883544921875 + }, + { + "x": 1235.7430419921875, + "y": 397.44378662109375 + }, + { + "x": 1075.3592529296875, + "y": 403.0813903808594 + }, + { + "x": 1101.57861328125, + "y": 406.3291015625 + }, + { + "x": 1126.6624755859375, + "y": 409.275634765625 + }, + { + "x": 1155.467529296875, + "y": 414.7498779296875 + }, + { + "x": 1180.184814453125, + "y": 418.1503601074219 + }, + { + "x": 1209.6380615234375, + "y": 421.6273193359375 + }, + { + "x": 1233.8511962890625, + "y": 427.2018127441406 + }, + { + "x": 1075.205810546875, + "y": 430.3913879394531 + }, + { + "x": 1099.6124267578125, + "y": 433.95123291015625 + }, + { + "x": 1126.733642578125, + "y": 439.5080871582031 + }, + { + "x": 1153.1107177734375, + "y": 443.8290100097656 + }, + { + "x": 1178.9310302734375, + "y": 448.3411865234375 + }, + { + "x": 1205.884033203125, + "y": 452.3437194824219 + }, + { + "x": 1233.649658203125, + "y": 454.80743408203125 + }, + { + "x": 1073.943603515625, + "y": 459.046630859375 + }, + { + "x": 1098.2525634765625, + "y": 463.99853515625 + }, + { + "x": 1125.8592529296875, + "y": 467.85699462890625 + }, + { + "x": 1151.7196044921875, + "y": 470.4342041015625 + }, + { + "x": 1176.9351806640625, + "y": 476.2447814941406 + }, + { + "x": 1202.99169921875, + "y": 480.9602966308594 + }, + { + "x": 1229.91845703125, + "y": 486.119140625 + }, + { + "x": 1073.58935546875, + "y": 484.1717834472656 + }, + { + "x": 1097.156982421875, + "y": 490.33721923828125 + }, + { + "x": 1123.58349609375, + "y": 494.9186706542969 + }, + { + "x": 1149.7823486328125, + "y": 500.5120544433594 + }, + { + "x": 1175.1650390625, + "y": 503.7365417480469 + }, + { + "x": 1201.6102294921875, + "y": 509.7436828613281 + }, + { + "x": 1225.502685546875, + "y": 514.357177734375 + } + ], + "reprojectionErrors": [ + { + "x": 4.2366943359375, + "y": -1.18743896484375 + }, + { + "x": 3.1383056640625, + "y": 0.822784423828125 + }, + { + "x": 3.28369140625, + "y": 0.5648193359375 + }, + { + "x": 1.4608154296875, + "y": 2.62554931640625 + }, + { + "x": 0.7864990234375, + "y": 2.11529541015625 + }, + { + "x": -1.4307861328125, + "y": 3.83709716796875 + }, + { + "x": -2.5638427734375, + "y": 4.086090087890625 + }, + { + "x": 0.5355224609375, + "y": -1.669158935546875 + }, + { + "x": 1.106201171875, + "y": -1.0045166015625 + }, + { + "x": 0.7210693359375, + "y": 0.36541748046875 + }, + { + "x": 2.482421875, + "y": -0.72503662109375 + }, + { + "x": -0.4971923828125, + "y": 1.19146728515625 + }, + { + "x": -1.687744140625, + "y": 1.120452880859375 + }, + { + "x": -2.8681640625, + "y": 1.92144775390625 + }, + { + "x": -0.52685546875, + "y": -1.939117431640625 + }, + { + "x": -0.823486328125, + "y": -1.994842529296875 + }, + { + "x": 0.0726318359375, + "y": -0.6544189453125 + }, + { + "x": -0.1490478515625, + "y": -0.40289306640625 + }, + { + "x": -0.1414794921875, + "y": -1.380126953125 + }, + { + "x": -1.7138671875, + "y": -0.580474853515625 + }, + { + "x": -2.16259765625, + "y": -0.6539306640625 + }, + { + "x": -2.1431884765625, + "y": -1.664886474609375 + }, + { + "x": -1.2747802734375, + "y": -0.85205078125 + }, + { + "x": 0.51708984375, + "y": 0.230438232421875 + }, + { + "x": -1.6217041015625, + "y": -1.24591064453125 + }, + { + "x": 0.1199951171875, + "y": -0.6793212890625 + }, + { + "x": -3.0792236328125, + "y": -0.219696044921875 + }, + { + "x": -1.2410888671875, + "y": -1.8876953125 + }, + { + "x": -3.54541015625, + "y": 0.3421630859375 + }, + { + "x": -0.7518310546875, + "y": 0.743621826171875 + }, + { + "x": -0.8865966796875, + "y": -0.882843017578125 + }, + { + "x": -0.4884033203125, + "y": -1.30389404296875 + }, + { + "x": 0.257568359375, + "y": -1.9464111328125 + }, + { + "x": -0.3355712890625, + "y": -2.109130859375 + }, + { + "x": -1.9456787109375, + "y": -0.7625732421875 + }, + { + "x": -3.792236328125, + "y": 1.2281494140625 + }, + { + "x": -0.7855224609375, + "y": 0.136932373046875 + }, + { + "x": -1.2918701171875, + "y": 0.10894775390625 + }, + { + "x": -0.264892578125, + "y": 1.332275390625 + }, + { + "x": 1.1961669921875, + "y": -0.707305908203125 + }, + { + "x": 1.608154296875, + "y": -1.68109130859375 + }, + { + "x": 0.9439697265625, + "y": -3.12713623046875 + }, + { + "x": -4.9002685546875, + "y": 5.8790283203125 + }, + { + "x": -1.0333251953125, + "y": 3.472320556640625 + }, + { + "x": -0.24267578125, + "y": 2.6199951171875 + }, + { + "x": 0.5609130859375, + "y": 0.726470947265625 + }, + { + "x": 1.9683837890625, + "y": 1.172882080078125 + }, + { + "x": 2.103271484375, + "y": -1.19195556640625 + }, + { + "x": 4.5833740234375, + "y": -2.19140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.4166552730719031, + "y": -0.0769398535882151, + "z": 0.9589617816275267 + }, + "rotation": { + "quaternion": { + "W": 0.9925190026253325, + "X": -0.06880730003277322, + "Y": -0.07836327079592005, + "Z": 0.06348844524778044 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img24.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img24.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1065.627197265625, + "y": 212.30825805664062 + }, + { + "x": 1092.80126953125, + "y": 212.610107421875 + }, + { + "x": 1118.39111328125, + "y": 215.45651245117188 + }, + { + "x": 1146.18212890625, + "y": 215.3279571533203 + }, + { + "x": 1172.3853759765625, + "y": 218.25222778320312 + }, + { + "x": 1199.546142578125, + "y": 218.44879150390625 + }, + { + "x": 1225.8424072265625, + "y": 220.97531127929688 + }, + { + "x": 1069.3797607421875, + "y": 240.59596252441406 + }, + { + "x": 1094.9029541015625, + "y": 242.30978393554688 + }, + { + "x": 1121.6353759765625, + "y": 243.20742797851562 + }, + { + "x": 1146.1690673828125, + "y": 246.3179168701172 + }, + { + "x": 1174.8895263671875, + "y": 247.0467071533203 + }, + { + "x": 1201.4383544921875, + "y": 248.31448364257812 + }, + { + "x": 1227.5052490234375, + "y": 250.1913604736328 + }, + { + "x": 1070.37744140625, + "y": 269.2657165527344 + }, + { + "x": 1097.3426513671875, + "y": 270.9661560058594 + }, + { + "x": 1122.734619140625, + "y": 272.232666015625 + }, + { + "x": 1149.3763427734375, + "y": 274.1715393066406 + }, + { + "x": 1175.333740234375, + "y": 276.6373596191406 + }, + { + "x": 1202.1712646484375, + "y": 278.04931640625 + }, + { + "x": 1227.9981689453125, + "y": 280.40814208984375 + }, + { + "x": 1071.937744140625, + "y": 297.4865417480469 + }, + { + "x": 1098.2757568359375, + "y": 298.8280944824219 + }, + { + "x": 1123.1881103515625, + "y": 300.0108337402344 + }, + { + "x": 1150.7314453125, + "y": 303.4215087890625 + }, + { + "x": 1175.4998779296875, + "y": 304.3690490722656 + }, + { + "x": 1204.348388671875, + "y": 306.14215087890625 + }, + { + "x": 1228.615478515625, + "y": 309.3542785644531 + }, + { + "x": 1073.2347412109375, + "y": 325.2945251464844 + }, + { + "x": 1098.41845703125, + "y": 326.5913391113281 + }, + { + "x": 1124.70751953125, + "y": 330.1208190917969 + }, + { + "x": 1151.2611083984375, + "y": 331.91387939453125 + }, + { + "x": 1176.6409912109375, + "y": 334.3752746582031 + }, + { + "x": 1203.211181640625, + "y": 336.5328674316406 + }, + { + "x": 1230.2076416015625, + "y": 337.436767578125 + }, + { + "x": 1074.35888671875, + "y": 353.3798522949219 + }, + { + "x": 1098.4814453125, + "y": 356.4001159667969 + }, + { + "x": 1126.3489990234375, + "y": 358.1845397949219 + }, + { + "x": 1151.8291015625, + "y": 357.9015197753906 + }, + { + "x": 1176.64306640625, + "y": 362.107421875 + }, + { + "x": 1202.3748779296875, + "y": 365.400634765625 + }, + { + "x": 1229.1759033203125, + "y": 367.9920654296875 + }, + { + "x": 1073.646240234375, + "y": 380.4262390136719 + }, + { + "x": 1099.482421875, + "y": 382.5296325683594 + }, + { + "x": 1124.8970947265625, + "y": 385.6031799316406 + }, + { + "x": 1151.514892578125, + "y": 388.66815185546875 + }, + { + "x": 1176.79248046875, + "y": 390.43035888671875 + }, + { + "x": 1202.77392578125, + "y": 393.6640930175781 + }, + { + "x": 1226.9317626953125, + "y": 397.1487731933594 + } + ], + "reprojectionErrors": [ + { + "x": 3.0604248046875, + "y": -1.9974365234375 + }, + { + "x": 2.4500732421875, + "y": 0.061431884765625 + }, + { + "x": 3.1907958984375, + "y": -0.4445953369140625 + }, + { + "x": 1.500244140625, + "y": 2.004302978515625 + }, + { + "x": 1.1702880859375, + "y": 1.38055419921875 + }, + { + "x": -0.341552734375, + "y": 3.4649505615234375 + }, + { + "x": -1.2105712890625, + "y": 3.2000885009765625 + }, + { + "x": -0.3365478515625, + "y": -1.6658935546875 + }, + { + "x": 0.778076171875, + "y": -1.1383514404296875 + }, + { + "x": 0.4490966796875, + "y": 0.186004638671875 + }, + { + "x": 2.08740234375, + "y": -0.721588134765625 + }, + { + "x": -0.6895751953125, + "y": 0.733642578125 + }, + { + "x": -1.5205078125, + "y": 1.631256103515625 + }, + { + "x": -2.09228515625, + "y": 1.9013671875 + }, + { + "x": -0.9178466796875, + "y": -1.5751953125 + }, + { + "x": -1.1685791015625, + "y": -1.15472412109375 + }, + { + "x": -0.0819091796875, + "y": -0.3187255859375 + }, + { + "x": -0.477783203125, + "y": -0.173248291015625 + }, + { + "x": -0.419189453125, + "y": -0.5726318359375 + }, + { + "x": -1.467529296875, + "y": 0.06414794921875 + }, + { + "x": -1.729248046875, + "y": -0.263397216796875 + }, + { + "x": -2.0003662109375, + "y": -0.885467529296875 + }, + { + "x": -1.544921875, + "y": -0.227813720703125 + }, + { + "x": 0.09912109375, + "y": 0.5712890625 + }, + { + "x": -1.1220703125, + "y": -0.874755859375 + }, + { + "x": 0.2005615234375, + "y": 0.125396728515625 + }, + { + "x": -2.78515625, + "y": 0.28326416015625 + }, + { + "x": -1.414794921875, + "y": -1.014434814453125 + }, + { + "x": -2.757568359375, + "y": 0.376190185546875 + }, + { + "x": -1.0660400390625, + "y": 0.955657958984375 + }, + { + "x": -0.718505859375, + "y": -0.713958740234375 + }, + { + "x": -0.8712158203125, + "y": -0.663330078125 + }, + { + "x": -0.0826416015625, + "y": -1.2969970703125 + }, + { + "x": -0.7139892578125, + "y": -1.64263916015625 + }, + { + "x": -1.998291015625, + "y": -0.75018310546875 + }, + { + "x": -3.2791748046875, + "y": 1.5289306640625 + }, + { + "x": -0.442138671875, + "y": 0.2606201171875 + }, + { + "x": -1.59033203125, + "y": 0.2127685546875 + }, + { + "x": -0.588134765625, + "y": 2.2171630859375 + }, + { + "x": 0.84619140625, + "y": -0.282318115234375 + }, + { + "x": 1.131591796875, + "y": -1.8839111328125 + }, + { + "x": 0.1197509765625, + "y": -2.798309326171875 + }, + { + "x": -1.9002685546875, + "y": 3.8984375 + }, + { + "x": -0.68994140625, + "y": 3.42120361328125 + }, + { + "x": 0.7000732421875, + "y": 1.95947265625 + }, + { + "x": 0.6484375, + "y": 0.4921875 + }, + { + "x": 1.7015380859375, + "y": 0.313690185546875 + }, + { + "x": 1.818115234375, + "y": -1.350128173828125 + }, + { + "x": 3.5289306640625, + "y": -3.27850341796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.41019915927768635, + "y": -0.16784163893303142, + "z": 0.9630613330105775 + }, + "rotation": { + "quaternion": { + "W": 0.9944583017759211, + "X": -0.05757148603317792, + "Y": -0.08539275774887989, + "Z": 0.021125504702226777 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img25.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img25.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1071.5618896484375, + "y": 143.4852294921875 + }, + { + "x": 1100.43603515625, + "y": 144.35174560546875 + }, + { + "x": 1126.694580078125, + "y": 147.30361938476562 + }, + { + "x": 1155.371337890625, + "y": 147.49623107910156 + }, + { + "x": 1182.3917236328125, + "y": 151.0294189453125 + }, + { + "x": 1210.5267333984375, + "y": 152.0376434326172 + }, + { + "x": 1236.5255126953125, + "y": 155.14498901367188 + }, + { + "x": 1075.7413330078125, + "y": 172.32452392578125 + }, + { + "x": 1102.4151611328125, + "y": 174.4539031982422 + }, + { + "x": 1130.4222412109375, + "y": 175.34727478027344 + }, + { + "x": 1155.3939208984375, + "y": 178.85317993164062 + }, + { + "x": 1184.8079833984375, + "y": 179.66726684570312 + }, + { + "x": 1211.577880859375, + "y": 182.0367889404297 + }, + { + "x": 1238.7275390625, + "y": 184.3571319580078 + }, + { + "x": 1076.9693603515625, + "y": 201.2889862060547 + }, + { + "x": 1104.8642578125, + "y": 203.37350463867188 + }, + { + "x": 1131.6600341796875, + "y": 204.6124725341797 + }, + { + "x": 1158.96630859375, + "y": 207.19705200195312 + }, + { + "x": 1185.806640625, + "y": 209.5554962158203 + }, + { + "x": 1213.2596435546875, + "y": 211.86660766601562 + }, + { + "x": 1239.367431640625, + "y": 214.5218963623047 + }, + { + "x": 1079.189453125, + "y": 230.48500061035156 + }, + { + "x": 1106.3743896484375, + "y": 231.37728881835938 + }, + { + "x": 1131.9268798828125, + "y": 232.9005889892578 + }, + { + "x": 1160.7509765625, + "y": 236.5294952392578 + }, + { + "x": 1186.3011474609375, + "y": 238.405517578125 + }, + { + "x": 1215.307373046875, + "y": 240.24014282226562 + }, + { + "x": 1240.352783203125, + "y": 244.01087951660156 + }, + { + "x": 1080.236572265625, + "y": 258.45281982421875 + }, + { + "x": 1106.513427734375, + "y": 260.07244873046875 + }, + { + "x": 1133.65771484375, + "y": 263.3304138183594 + }, + { + "x": 1160.9681396484375, + "y": 265.5189208984375 + }, + { + "x": 1187.084228515625, + "y": 268.30157470703125 + }, + { + "x": 1214.608154296875, + "y": 270.64068603515625 + }, + { + "x": 1242.2552490234375, + "y": 271.3381042480469 + }, + { + "x": 1081.3653564453125, + "y": 286.7727355957031 + }, + { + "x": 1106.589599609375, + "y": 290.0621643066406 + }, + { + "x": 1135.6761474609375, + "y": 292.2719421386719 + }, + { + "x": 1161.9141845703125, + "y": 291.8463439941406 + }, + { + "x": 1187.20263671875, + "y": 296.2340087890625 + }, + { + "x": 1213.4088134765625, + "y": 299.7786865234375 + }, + { + "x": 1240.8441162109375, + "y": 302.90570068359375 + }, + { + "x": 1080.6605224609375, + "y": 314.3888854980469 + }, + { + "x": 1107.5745849609375, + "y": 316.7214660644531 + }, + { + "x": 1134.3167724609375, + "y": 319.9515686035156 + }, + { + "x": 1161.7142333984375, + "y": 323.34759521484375 + }, + { + "x": 1187.417724609375, + "y": 324.4571228027344 + }, + { + "x": 1214.5894775390625, + "y": 329.1739196777344 + }, + { + "x": 1239.023681640625, + "y": 331.9129638671875 + } + ], + "reprojectionErrors": [ + { + "x": 3.8885498046875, + "y": -1.6348876953125 + }, + { + "x": 2.311279296875, + "y": 0.141632080078125 + }, + { + "x": 3.122314453125, + "y": -0.1887054443359375 + }, + { + "x": 1.29052734375, + "y": 2.2189483642578125 + }, + { + "x": 0.893310546875, + "y": 1.2650299072265625 + }, + { + "x": -0.8377685546875, + "y": 2.815338134765625 + }, + { + "x": -0.649169921875, + "y": 2.2460174560546875 + }, + { + "x": 0.1895751953125, + "y": -1.5412750244140625 + }, + { + "x": 0.89599609375, + "y": -1.1402740478515625 + }, + { + "x": 0.0404052734375, + "y": 0.4760589599609375 + }, + { + "x": 1.9942626953125, + "y": -0.540557861328125 + }, + { + "x": -0.7174072265625, + "y": 1.1144561767578125 + }, + { + "x": -1.0054931640625, + "y": 1.1941070556640625 + }, + { + "x": -1.8912353515625, + "y": 1.3032379150390625 + }, + { + "x": -0.495361328125, + "y": -1.4210968017578125 + }, + { + "x": -0.924072265625, + "y": -1.089019775390625 + }, + { + "x": -0.4837646484375, + "y": 0.06878662109375 + }, + { + "x": -0.78125, + "y": -0.1385955810546875 + }, + { + "x": -0.8375244140625, + "y": -0.139190673828125 + }, + { + "x": -1.728271484375, + "y": -0.1115570068359375 + }, + { + "x": -1.4931640625, + "y": -0.446990966796875 + }, + { + "x": -2.1092529296875, + "y": -1.371368408203125 + }, + { + "x": -1.7392578125, + "y": 0.0379486083984375 + }, + { + "x": 0.03173828125, + "y": 0.7972869873046875 + }, + { + "x": -1.6978759765625, + "y": -0.56768798828125 + }, + { + "x": -0.3795166015625, + "y": -0.198272705078125 + }, + { + "x": -2.7406005859375, + "y": 0.1942596435546875 + }, + { + "x": -1.3614501953125, + "y": -1.36737060546875 + }, + { + "x": -2.4862060546875, + "y": 0.07720947265625 + }, + { + "x": -1.1163330078125, + "y": 0.64288330078125 + }, + { + "x": -0.84716796875, + "y": -0.44781494140625 + }, + { + "x": -0.974609375, + "y": -0.4869384765625 + }, + { + "x": -0.1351318359375, + "y": -1.1378173828125 + }, + { + "x": -0.9283447265625, + "y": -1.36260986328125 + }, + { + "x": -2.06689453125, + "y": 0.037109375 + }, + { + "x": -2.8798828125, + "y": 1.3541259765625 + }, + { + "x": -0.363037109375, + "y": 0.132354736328125 + }, + { + "x": -1.9432373046875, + "y": -0.026947021484375 + }, + { + "x": -0.9068603515625, + "y": 2.432159423828125 + }, + { + "x": 0.8499755859375, + "y": 0.061279296875 + }, + { + "x": 1.462646484375, + "y": -1.483184814453125 + }, + { + "x": 0.6226806640625, + "y": -2.6263427734375 + }, + { + "x": -1.374267578125, + "y": 3.525238037109375 + }, + { + "x": -0.44970703125, + "y": 3.141204833984375 + }, + { + "x": 0.41015625, + "y": 1.843353271484375 + }, + { + "x": 0.381103515625, + "y": 0.363555908203125 + }, + { + "x": 1.8153076171875, + "y": 1.15435791015625 + }, + { + "x": 1.5533447265625, + "y": -1.677734375 + }, + { + "x": 3.8038330078125, + "y": -2.547607421875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.407669647327756, + "y": -0.22264408070704886, + "z": 0.9435968215987218 + }, + "rotation": { + "quaternion": { + "W": 0.9946925634372453, + "X": -0.061741170833039684, + "Y": -0.07950856525432042, + "Z": 0.02128661828489061 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img26.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img26.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1072.5540771484375, + "y": 92.5436019897461 + }, + { + "x": 1101.3773193359375, + "y": 93.27347564697266 + }, + { + "x": 1126.7930908203125, + "y": 96.21392059326172 + }, + { + "x": 1155.7535400390625, + "y": 96.38038635253906 + }, + { + "x": 1182.407958984375, + "y": 99.64014434814453 + }, + { + "x": 1210.269775390625, + "y": 100.56814575195312 + }, + { + "x": 1236.2684326171875, + "y": 103.79643249511719 + }, + { + "x": 1077.1126708984375, + "y": 120.94554138183594 + }, + { + "x": 1103.619873046875, + "y": 122.97151184082031 + }, + { + "x": 1130.90380859375, + "y": 123.5927963256836 + }, + { + "x": 1156.260498046875, + "y": 127.070068359375 + }, + { + "x": 1185.6551513671875, + "y": 128.15557861328125 + }, + { + "x": 1212.1845703125, + "y": 130.13922119140625 + }, + { + "x": 1238.5760498046875, + "y": 132.26158142089844 + }, + { + "x": 1078.491455078125, + "y": 149.89370727539062 + }, + { + "x": 1106.3548583984375, + "y": 151.6818084716797 + }, + { + "x": 1132.8179931640625, + "y": 152.8795928955078 + }, + { + "x": 1159.97705078125, + "y": 155.17208862304688 + }, + { + "x": 1186.812744140625, + "y": 157.7186737060547 + }, + { + "x": 1213.922119140625, + "y": 160.01193237304688 + }, + { + "x": 1240.0816650390625, + "y": 162.33987426757812 + }, + { + "x": 1080.722900390625, + "y": 178.56192016601562 + }, + { + "x": 1107.63623046875, + "y": 180.08358764648438 + }, + { + "x": 1133.5911865234375, + "y": 181.11566162109375 + }, + { + "x": 1162.344482421875, + "y": 184.4032440185547 + }, + { + "x": 1187.7611083984375, + "y": 186.35110473632812 + }, + { + "x": 1216.7376708984375, + "y": 188.03378295898438 + }, + { + "x": 1241.1597900390625, + "y": 191.6992950439453 + }, + { + "x": 1081.9381103515625, + "y": 207.124267578125 + }, + { + "x": 1108.2432861328125, + "y": 208.03756713867188 + }, + { + "x": 1135.485595703125, + "y": 211.54429626464844 + }, + { + "x": 1162.7808837890625, + "y": 213.56167602539062 + }, + { + "x": 1188.645263671875, + "y": 216.3939666748047 + }, + { + "x": 1216.3245849609375, + "y": 218.77386474609375 + }, + { + "x": 1242.9169921875, + "y": 220.13421630859375 + }, + { + "x": 1083.682373046875, + "y": 235.50457763671875 + }, + { + "x": 1108.7919921875, + "y": 238.55618286132812 + }, + { + "x": 1137.8875732421875, + "y": 240.20619201660156 + }, + { + "x": 1163.948974609375, + "y": 240.15232849121094 + }, + { + "x": 1189.4658203125, + "y": 244.2715606689453 + }, + { + "x": 1215.3564453125, + "y": 247.75009155273438 + }, + { + "x": 1242.7445068359375, + "y": 250.75982666015625 + }, + { + "x": 1083.2960205078125, + "y": 263.1024169921875 + }, + { + "x": 1110.3289794921875, + "y": 265.458740234375 + }, + { + "x": 1136.6832275390625, + "y": 268.3838806152344 + }, + { + "x": 1164.3551025390625, + "y": 271.6876220703125 + }, + { + "x": 1189.766357421875, + "y": 273.1092529296875 + }, + { + "x": 1217.29443359375, + "y": 277.419677734375 + }, + { + "x": 1241.2462158203125, + "y": 280.4219970703125 + } + ], + "reprojectionErrors": [ + { + "x": 3.48046875, + "y": -2.1492767333984375 + }, + { + "x": 1.884765625, + "y": -0.2725830078125 + }, + { + "x": 3.451904296875, + "y": -0.6293258666992188 + }, + { + "x": 1.23291015625, + "y": 1.7653427124023438 + }, + { + "x": 1.0816650390625, + "y": 1.04443359375 + }, + { + "x": -0.51220703125, + "y": 2.63330078125 + }, + { + "x": -0.4752197265625, + "y": 1.9001693725585938 + }, + { + "x": -0.2293701171875, + "y": -1.6034469604492188 + }, + { + "x": 0.571044921875, + "y": -1.1454391479492188 + }, + { + "x": 0.3485107421875, + "y": 0.6953887939453125 + }, + { + "x": 1.810302734375, + "y": -0.3413543701171875 + }, + { + "x": -1.0054931640625, + "y": 0.99237060546875 + }, + { + "x": -1.1927490234375, + "y": 1.40692138671875 + }, + { + "x": -1.4755859375, + "y": 1.662017822265625 + }, + { + "x": -0.6932373046875, + "y": -1.459442138671875 + }, + { + "x": -1.16650390625, + "y": -0.887359619140625 + }, + { + "x": -0.4871826171875, + "y": 0.2541961669921875 + }, + { + "x": -0.748046875, + "y": 0.28045654296875 + }, + { + "x": -0.9267578125, + "y": 0.0323333740234375 + }, + { + "x": -1.6171875, + "y": 0.0174713134765625 + }, + { + "x": -1.5928955078125, + "y": -0.051849365234375 + }, + { + "x": -1.9429931640625, + "y": -0.8818206787109375 + }, + { + "x": -1.3807373046875, + "y": -0.168365478515625 + }, + { + "x": -0.1094970703125, + "y": 1.014862060546875 + }, + { + "x": -1.8824462890625, + "y": -0.0769805908203125 + }, + { + "x": -0.5614013671875, + "y": 0.1515960693359375 + }, + { + "x": -3.039794921875, + "y": 0.6262969970703125 + }, + { + "x": -1.2003173828125, + "y": -0.9006500244140625 + }, + { + "x": -2.1085205078125, + "y": -0.03515625 + }, + { + "x": -0.85009765625, + "y": 1.16021728515625 + }, + { + "x": -0.77978515625, + "y": -0.2566070556640625 + }, + { + "x": -1.0098876953125, + "y": -0.2026214599609375 + }, + { + "x": -0.0533447265625, + "y": -0.9818115234375 + }, + { + "x": -1.15283203125, + "y": -1.32666015625 + }, + { + "x": -1.4033203125, + "y": -0.669769287109375 + }, + { + "x": -2.7342529296875, + "y": 1.1664276123046875 + }, + { + "x": -0.189453125, + "y": 0.0955810546875 + }, + { + "x": -1.8831787109375, + "y": 0.4086151123046875 + }, + { + "x": -0.7918701171875, + "y": 2.408050537109375 + }, + { + "x": 0.5980224609375, + "y": 0.2171630859375 + }, + { + "x": 1.3714599609375, + "y": -1.3500518798828125 + }, + { + "x": 0.407958984375, + "y": -2.4652557373046875 + }, + { + "x": -1.1595458984375, + "y": 3.333282470703125 + }, + { + "x": -0.4444580078125, + "y": 2.828216552734375 + }, + { + "x": 0.6951904296875, + "y": 1.73773193359375 + }, + { + "x": 0.2662353515625, + "y": 0.25225830078125 + }, + { + "x": 1.8502197265625, + "y": 0.6326904296875 + }, + { + "x": 1.0731201171875, + "y": -1.891632080078125 + }, + { + "x": 3.631103515625, + "y": -3.12359619140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.40620122739469167, + "y": -0.26510109768349543, + "z": 0.9390518547415547 + }, + "rotation": { + "quaternion": { + "W": 0.994400866177967, + "X": -0.0610229698200968, + "Y": -0.08497212027400487, + "Z": 0.01492827099783177 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img27.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img27.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 956.8270263671875, + "y": 102.44012451171875 + }, + { + "x": 986.5304565429688, + "y": 103.02611541748047 + }, + { + "x": 1013.5296630859375, + "y": 106.1703109741211 + }, + { + "x": 1044.0478515625, + "y": 105.64668273925781 + }, + { + "x": 1072.13916015625, + "y": 108.76741790771484 + }, + { + "x": 1101.447998046875, + "y": 109.30306243896484 + }, + { + "x": 1129.51416015625, + "y": 112.7297592163086 + }, + { + "x": 959.9056396484375, + "y": 131.2882843017578 + }, + { + "x": 987.7715454101562, + "y": 133.21238708496094 + }, + { + "x": 1017.1376342773438, + "y": 133.86793518066406 + }, + { + "x": 1043.4090576171875, + "y": 137.06784057617188 + }, + { + "x": 1074.3046875, + "y": 137.66189575195312 + }, + { + "x": 1102.7630615234375, + "y": 139.9970703125 + }, + { + "x": 1130.889892578125, + "y": 141.48863220214844 + }, + { + "x": 960.675537109375, + "y": 160.90087890625 + }, + { + "x": 989.865966796875, + "y": 162.27239990234375 + }, + { + "x": 1017.4927978515625, + "y": 163.67320251464844 + }, + { + "x": 1046.2059326171875, + "y": 164.75999450683594 + }, + { + "x": 1074.869384765625, + "y": 167.28408813476562 + }, + { + "x": 1103.7408447265625, + "y": 170.0133819580078 + }, + { + "x": 1131.2708740234375, + "y": 172.6780548095703 + }, + { + "x": 962.3234252929688, + "y": 189.6013641357422 + }, + { + "x": 990.2982177734375, + "y": 191.47586059570312 + }, + { + "x": 1017.8334350585938, + "y": 192.027099609375 + }, + { + "x": 1047.4111328125, + "y": 195.9174041748047 + }, + { + "x": 1075.266357421875, + "y": 196.6416473388672 + }, + { + "x": 1104.607666015625, + "y": 199.3636932373047 + }, + { + "x": 1132.4041748046875, + "y": 202.1154327392578 + }, + { + "x": 962.6520385742188, + "y": 219.17074584960938 + }, + { + "x": 991.1754150390625, + "y": 219.76605224609375 + }, + { + "x": 1018.8558349609375, + "y": 223.1255340576172 + }, + { + "x": 1048.2645263671875, + "y": 225.04412841796875 + }, + { + "x": 1075.473388671875, + "y": 227.46778869628906 + }, + { + "x": 1104.819091796875, + "y": 229.51260375976562 + }, + { + "x": 1132.7266845703125, + "y": 231.6305694580078 + }, + { + "x": 964.3997192382812, + "y": 247.86134338378906 + }, + { + "x": 990.8057250976562, + "y": 250.26861572265625 + }, + { + "x": 1020.7081298828125, + "y": 251.63955688476562 + }, + { + "x": 1047.966064453125, + "y": 252.70506286621094 + }, + { + "x": 1076.2625732421875, + "y": 256.0369567871094 + }, + { + "x": 1103.5355224609375, + "y": 259.18280029296875 + }, + { + "x": 1132.351318359375, + "y": 261.5347900390625 + }, + { + "x": 962.9256591796875, + "y": 276.35076904296875 + }, + { + "x": 991.677978515625, + "y": 277.6397705078125 + }, + { + "x": 1019.4051513671875, + "y": 280.808837890625 + }, + { + "x": 1048.2957763671875, + "y": 283.3442077636719 + }, + { + "x": 1075.5269775390625, + "y": 285.0992431640625 + }, + { + "x": 1104.633544921875, + "y": 289.14373779296875 + }, + { + "x": 1130.629638671875, + "y": 291.5097961425781 + } + ], + "reprojectionErrors": [ + { + "x": 2.87139892578125, + "y": -1.767303466796875 + }, + { + "x": 1.7987060546875, + "y": -0.04046630859375 + }, + { + "x": 3.23236083984375, + "y": -0.8873138427734375 + }, + { + "x": 0.9510498046875, + "y": 1.9183502197265625 + }, + { + "x": 0.9024658203125, + "y": 1.064483642578125 + }, + { + "x": -0.5556640625, + "y": 2.7806854248046875 + }, + { + "x": -0.9615478515625, + "y": 1.5909576416015625 + }, + { + "x": 0.00518798828125, + "y": -1.2798614501953125 + }, + { + "x": 0.85333251953125, + "y": -0.986083984375 + }, + { + "x": 0.002197265625, + "y": 0.561370849609375 + }, + { + "x": 2.048583984375, + "y": -0.450286865234375 + }, + { + "x": -0.724365234375, + "y": 1.129302978515625 + }, + { + "x": -1.2532958984375, + "y": 0.9533233642578125 + }, + { + "x": -1.64208984375, + "y": 1.60662841796875 + }, + { + "x": -0.50421142578125, + "y": -1.417633056640625 + }, + { + "x": -0.89434814453125, + "y": -0.6670684814453125 + }, + { + "x": 0.07879638671875, + "y": 0.0399322509765625 + }, + { + "x": -0.232666015625, + "y": 1.0467681884765625 + }, + { + "x": -0.690673828125, + "y": 0.6022796630859375 + }, + { + "x": -1.55126953125, + "y": -0.061309814453125 + }, + { + "x": -1.2628173828125, + "y": -0.67401123046875 + }, + { + "x": -1.843017578125, + "y": -0.4946746826171875 + }, + { + "x": -0.92828369140625, + "y": -0.343780517578125 + }, + { + "x": 0.2244873046875, + "y": 1.116668701171875 + }, + { + "x": -0.86474609375, + "y": -0.7755279541015625 + }, + { + "x": -0.4290771484375, + "y": 0.484893798828125 + }, + { + "x": -1.675048828125, + "y": -0.2657928466796875 + }, + { + "x": -1.5699462890625, + "y": -1.0593414306640625 + }, + { + "x": -1.81341552734375, + "y": -0.282379150390625 + }, + { + "x": -1.35498046875, + "y": 1.050018310546875 + }, + { + "x": -0.2564697265625, + "y": -0.394866943359375 + }, + { + "x": -1.0869140625, + "y": -0.411834716796875 + }, + { + "x": 0.08349609375, + "y": -0.9467315673828125 + }, + { + "x": -1.07958984375, + "y": -1.115478515625 + }, + { + "x": -0.9996337890625, + "y": -1.3699951171875 + }, + { + "x": -3.1531982421875, + "y": 0.9767608642578125 + }, + { + "x": -0.48199462890625, + "y": 0.3984375 + }, + { + "x": -1.51141357421875, + "y": 0.843963623046875 + }, + { + "x": -0.098388671875, + "y": 1.582550048828125 + }, + { + "x": 0.0758056640625, + "y": 0.042510986328125 + }, + { + "x": 1.0755615234375, + "y": -1.323577880859375 + }, + { + "x": 0.3363037109375, + "y": -1.9078369140625 + }, + { + "x": -1.220947265625, + "y": 2.615142822265625 + }, + { + "x": -0.7974853515625, + "y": 3.05523681640625 + }, + { + "x": 0.44549560546875, + "y": 1.603363037109375 + }, + { + "x": 0.3216552734375, + "y": 0.773468017578125 + }, + { + "x": 1.6556396484375, + "y": 0.7122802734375 + }, + { + "x": 0.914794921875, + "y": -1.64990234375 + }, + { + "x": 3.0870361328125, + "y": -2.34503173828125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.30452893636037837, + "y": -0.2538667572698474, + "z": 0.9297523450117398 + }, + "rotation": { + "quaternion": { + "W": 0.9960698186578077, + "X": -0.05784892079801919, + "Y": -0.06481337512515419, + "Z": 0.017252394801663976 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img28.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img28.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 834.688232421875, + "y": 88.38481140136719 + }, + { + "x": 864.6900024414062, + "y": 88.11332702636719 + }, + { + "x": 892.5340576171875, + "y": 90.2983169555664 + }, + { + "x": 923.6421508789062, + "y": 89.53046417236328 + }, + { + "x": 952.5602416992188, + "y": 91.60417175292969 + }, + { + "x": 983.3914794921875, + "y": 92.22647094726562 + }, + { + "x": 1011.4517822265625, + "y": 94.6778793334961 + }, + { + "x": 837.9843139648438, + "y": 117.44415283203125 + }, + { + "x": 865.9751586914062, + "y": 118.41781616210938 + }, + { + "x": 896.2703247070312, + "y": 118.46642303466797 + }, + { + "x": 923.0183715820312, + "y": 121.0867691040039 + }, + { + "x": 954.9007568359375, + "y": 121.1004409790039 + }, + { + "x": 983.6538696289062, + "y": 122.72087097167969 + }, + { + "x": 1014.251708984375, + "y": 124.0531005859375 + }, + { + "x": 838.7618408203125, + "y": 147.218994140625 + }, + { + "x": 867.9005126953125, + "y": 147.4840545654297 + }, + { + "x": 895.8296508789062, + "y": 149.38555908203125 + }, + { + "x": 926.2686157226562, + "y": 149.5216064453125 + }, + { + "x": 955.5165405273438, + "y": 151.24107360839844 + }, + { + "x": 985.5287475585938, + "y": 152.67901611328125 + }, + { + "x": 1014.2767944335938, + "y": 155.17138671875 + }, + { + "x": 840.1749877929688, + "y": 176.27236938476562 + }, + { + "x": 868.4619140625, + "y": 177.7208709716797 + }, + { + "x": 896.8634033203125, + "y": 177.0718536376953 + }, + { + "x": 927.5855712890625, + "y": 180.10215759277344 + }, + { + "x": 956.2314453125, + "y": 181.26690673828125 + }, + { + "x": 985.71728515625, + "y": 184.08157348632812 + }, + { + "x": 1015.5608520507812, + "y": 184.9571075439453 + }, + { + "x": 840.9345092773438, + "y": 205.6207275390625 + }, + { + "x": 869.4608764648438, + "y": 205.79844665527344 + }, + { + "x": 897.9210815429688, + "y": 208.7374267578125 + }, + { + "x": 928.59912109375, + "y": 210.18350219726562 + }, + { + "x": 956.221435546875, + "y": 212.33956909179688 + }, + { + "x": 986.91064453125, + "y": 213.46051025390625 + }, + { + "x": 1015.8961181640625, + "y": 215.45941162109375 + }, + { + "x": 842.8190307617188, + "y": 235.3676300048828 + }, + { + "x": 869.5256958007812, + "y": 237.17767333984375 + }, + { + "x": 901.1345825195312, + "y": 238.3887176513672 + }, + { + "x": 928.56396484375, + "y": 238.4718017578125 + }, + { + "x": 957.5415649414062, + "y": 241.12367248535156 + }, + { + "x": 984.9743041992188, + "y": 244.16586303710938 + }, + { + "x": 1016.5469970703125, + "y": 245.91702270507812 + }, + { + "x": 841.4134521484375, + "y": 264.4071960449219 + }, + { + "x": 871.1294555664062, + "y": 265.0355224609375 + }, + { + "x": 899.5535888671875, + "y": 267.45794677734375 + }, + { + "x": 929.1325073242188, + "y": 269.43450927734375 + }, + { + "x": 957.366943359375, + "y": 270.58477783203125 + }, + { + "x": 987.4515380859375, + "y": 274.0808410644531 + }, + { + "x": 1015.398193359375, + "y": 276.18841552734375 + } + ], + "reprojectionErrors": [ + { + "x": 2.14837646484375, + "y": -2.2213058471679688 + }, + { + "x": 1.64788818359375, + "y": -0.2310943603515625 + }, + { + "x": 3.1043701171875, + "y": -0.7085342407226562 + }, + { + "x": 1.0980224609375, + "y": 1.7558059692382812 + }, + { + "x": 1.0848388671875, + "y": 1.36761474609375 + }, + { + "x": -1.0364990234375, + "y": 2.41998291015625 + }, + { + "x": -0.58001708984375, + "y": 1.6324844360351562 + }, + { + "x": -0.7138671875, + "y": -1.5303192138671875 + }, + { + "x": 0.87872314453125, + "y": -0.8819732666015625 + }, + { + "x": -0.0347900390625, + "y": 0.6808547973632812 + }, + { + "x": 2.39886474609375, + "y": -0.3385467529296875 + }, + { + "x": -0.49969482421875, + "y": 1.2383499145507812 + }, + { + "x": -0.465087890625, + "y": 1.198211669921875 + }, + { + "x": -2.46942138671875, + "y": 1.4360885620117188 + }, + { + "x": -1.0196533203125, + "y": -1.4205322265625 + }, + { + "x": -0.48956298828125, + "y": -0.161163330078125 + }, + { + "x": 1.04705810546875, + "y": -0.5482177734375 + }, + { + "x": -0.127197265625, + "y": 0.8202972412109375 + }, + { + "x": -0.30950927734375, + "y": 0.5955963134765625 + }, + { + "x": -1.45330810546875, + "y": 0.642730712890625 + }, + { + "x": -1.5281982421875, + "y": -0.3741607666015625 + }, + { + "x": -1.92266845703125, + "y": -0.4454345703125 + }, + { + "x": -0.452392578125, + "y": -0.468017578125 + }, + { + "x": 0.6990966796875, + "y": 1.5975341796875 + }, + { + "x": -0.67236328125, + "y": -0.0255279541015625 + }, + { + "x": -0.16778564453125, + "y": 0.207794189453125 + }, + { + "x": -0.7015380859375, + "y": -1.2178955078125 + }, + { + "x": -1.7894287109375, + "y": -0.7134857177734375 + }, + { + "x": -2.1331787109375, + "y": 0.388275146484375 + }, + { + "x": -0.8106689453125, + "y": 1.5369415283203125 + }, + { + "x": 0.3724365234375, + "y": -0.08441162109375 + }, + { + "x": -0.86578369140625, + "y": -0.221527099609375 + }, + { + "x": 0.75018310546875, + "y": -1.07720947265625 + }, + { + "x": -0.9002685546875, + "y": -0.9062652587890625 + }, + { + "x": -1.04461669921875, + "y": -1.6217041015625 + }, + { + "x": -3.42926025390625, + "y": 0.98699951171875 + }, + { + "x": -0.19219970703125, + "y": 0.4027252197265625 + }, + { + "x": -2.064208984375, + "y": 0.409332275390625 + }, + { + "x": 0.03851318359375, + "y": 1.535858154296875 + }, + { + "x": 0.39013671875, + "y": 0.0856475830078125 + }, + { + "x": 2.08587646484375, + "y": -1.7627716064453125 + }, + { + "x": -0.5572509765625, + "y": -2.327972412109375 + }, + { + "x": -1.395263671875, + "y": 2.466766357421875 + }, + { + "x": -1.06939697265625, + "y": 2.96246337890625 + }, + { + "x": 0.34014892578125, + "y": 1.656585693359375 + }, + { + "x": 0.38873291015625, + "y": 0.789154052734375 + }, + { + "x": 1.57769775390625, + "y": 0.74066162109375 + }, + { + "x": 0.71441650390625, + "y": -1.660858154296875 + }, + { + "x": 1.788818359375, + "y": -2.681060791015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.19875843071300803, + "y": -0.26252796059017325, + "z": 0.9175495128451086 + }, + "rotation": { + "quaternion": { + "W": 0.9964529986183399, + "X": -0.05604762870350231, + "Y": -0.06238540048466963, + "Z": 0.006938779979249328 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img29.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img29.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1036.6083984375, + "y": 406.137939453125 + }, + { + "x": 1068.588623046875, + "y": 410.5751037597656 + }, + { + "x": 1099.213623046875, + "y": 416.80908203125 + }, + { + "x": 1131.4569091796875, + "y": 420.61944580078125 + }, + { + "x": 1161.868896484375, + "y": 426.5352478027344 + }, + { + "x": 1192.8277587890625, + "y": 430.5705871582031 + }, + { + "x": 1222.5294189453125, + "y": 436.0605163574219 + }, + { + "x": 1034.6951904296875, + "y": 436.80743408203125 + }, + { + "x": 1065.02490234375, + "y": 442.27764892578125 + }, + { + "x": 1097.29052734375, + "y": 446.68731689453125 + }, + { + "x": 1126.20361328125, + "y": 452.7483215332031 + }, + { + "x": 1157.7247314453125, + "y": 456.57977294921875 + }, + { + "x": 1187.7906494140625, + "y": 461.8077087402344 + }, + { + "x": 1217.3824462890625, + "y": 466.1861877441406 + }, + { + "x": 1031.5535888671875, + "y": 466.3348083496094 + }, + { + "x": 1062.563720703125, + "y": 472.4451904296875 + }, + { + "x": 1092.6221923828125, + "y": 476.18218994140625 + }, + { + "x": 1122.6005859375, + "y": 481.5456848144531 + }, + { + "x": 1152.58203125, + "y": 487.13494873046875 + }, + { + "x": 1182.6063232421875, + "y": 491.8205261230469 + }, + { + "x": 1211.22705078125, + "y": 496.5572204589844 + }, + { + "x": 1027.755615234375, + "y": 496.0840148925781 + }, + { + "x": 1058.7440185546875, + "y": 500.07427978515625 + }, + { + "x": 1087.5767822265625, + "y": 504.4065246582031 + }, + { + "x": 1119.163330078125, + "y": 510.8411865234375 + }, + { + "x": 1147.0362548828125, + "y": 515.0285034179688 + }, + { + "x": 1178.545654296875, + "y": 519.6309204101562 + }, + { + "x": 1205.4033203125, + "y": 525.0448608398438 + }, + { + "x": 1025.617919921875, + "y": 523.1434326171875 + }, + { + "x": 1053.392578125, + "y": 527.613525390625 + }, + { + "x": 1084.453125, + "y": 534.0946044921875 + }, + { + "x": 1113.864990234375, + "y": 539.3255004882812 + }, + { + "x": 1141.852294921875, + "y": 544.614501953125 + }, + { + "x": 1171.7276611328125, + "y": 548.7633056640625 + }, + { + "x": 1201.92578125, + "y": 551.306884765625 + }, + { + "x": 1021.0732421875, + "y": 551.5780639648438 + }, + { + "x": 1049.55078125, + "y": 557.1387329101562 + }, + { + "x": 1080.4837646484375, + "y": 561.6748657226562 + }, + { + "x": 1109.264404296875, + "y": 565.1985473632812 + }, + { + "x": 1137.101318359375, + "y": 570.8369140625 + }, + { + "x": 1165.8529052734375, + "y": 575.8007202148438 + }, + { + "x": 1194.149658203125, + "y": 580.8169555664062 + }, + { + "x": 1016.6055908203125, + "y": 577.313232421875 + }, + { + "x": 1045.3477783203125, + "y": 582.9155883789062 + }, + { + "x": 1074.858642578125, + "y": 587.908447265625 + }, + { + "x": 1103.9619140625, + "y": 593.5157470703125 + }, + { + "x": 1132.311767578125, + "y": 597.2904663085938 + }, + { + "x": 1160.8968505859375, + "y": 603.3890991210938 + }, + { + "x": 1186.2215576171875, + "y": 607.8938598632812 + } + ], + "reprojectionErrors": [ + { + "x": 6.0126953125, + "y": 3.24884033203125 + }, + { + "x": 3.4805908203125, + "y": 3.318206787109375 + }, + { + "x": 2.4423828125, + "y": 1.612030029296875 + }, + { + "x": -0.074462890625, + "y": 2.350830078125 + }, + { + "x": -0.61962890625, + "y": 1.0057373046875 + }, + { + "x": -1.5701904296875, + "y": 1.56280517578125 + }, + { + "x": -1.121337890625, + "y": 0.68707275390625 + }, + { + "x": 3.1412353515625, + "y": 1.057769775390625 + }, + { + "x": 2.222900390625, + "y": 0.1572265625 + }, + { + "x": -0.492919921875, + "y": 0.3387451171875 + }, + { + "x": 0.2830810546875, + "y": -1.10943603515625 + }, + { + "x": -1.4088134765625, + "y": -0.3062744140625 + }, + { + "x": -1.50439453125, + "y": -0.877685546875 + }, + { + "x": -0.9840087890625, + "y": -0.577545166015625 + }, + { + "x": 1.53564453125, + "y": -0.03399658203125 + }, + { + "x": -0.09716796875, + "y": -1.511383056640625 + }, + { + "x": -0.64013671875, + "y": -0.593597412109375 + }, + { + "x": -0.9639892578125, + "y": -1.280426025390625 + }, + { + "x": -1.151123046875, + "y": -2.170989990234375 + }, + { + "x": -1.2401123046875, + "y": -2.135650634765625 + }, + { + "x": 0.216064453125, + "y": -2.129150390625 + }, + { + "x": 0.6224365234375, + "y": -1.382843017578125 + }, + { + "x": -1.0198974609375, + "y": -0.676544189453125 + }, + { + "x": -0.3687744140625, + "y": -0.290191650390625 + }, + { + "x": -2.3326416015625, + "y": -1.984100341796875 + }, + { + "x": -0.443115234375, + "y": -1.40838623046875 + }, + { + "x": -2.0496826171875, + "y": -1.22528076171875 + }, + { + "x": 1.1370849609375, + "y": -1.8311767578125 + }, + { + "x": -1.916259765625, + "y": -0.06964111328125 + }, + { + "x": -0.37353515625, + "y": 0.22064208984375 + }, + { + "x": -1.97900390625, + "y": -1.47772216796875 + }, + { + "x": -1.797119140625, + "y": -1.903564453125 + }, + { + "x": -0.0513916015625, + "y": -2.3648681640625 + }, + { + "x": -0.0533447265625, + "y": -1.663330078125 + }, + { + "x": -0.23681640625, + "y": 0.66632080078125 + }, + { + "x": -2.01446533203125, + "y": -0.15191650390625 + }, + { + "x": -1.2005615234375, + "y": -0.8880615234375 + }, + { + "x": -2.70458984375, + "y": -0.5771484375 + }, + { + "x": -1.91796875, + "y": 0.76898193359375 + }, + { + "x": -0.04833984375, + "y": 0.023193359375 + }, + { + "x": 1.046875, + "y": -0.02508544921875 + }, + { + "x": 2.73779296875, + "y": -0.1026611328125 + }, + { + "x": -2.15753173828125, + "y": 2.45245361328125 + }, + { + "x": -1.631591796875, + "y": 1.73907470703125 + }, + { + "x": -1.7369384765625, + "y": 1.65802001953125 + }, + { + "x": -1.2965087890625, + "y": 0.9854736328125 + }, + { + "x": 0.036376953125, + "y": 2.16864013671875 + }, + { + "x": 1.2740478515625, + "y": 1.05108642578125 + }, + { + "x": 5.9129638671875, + "y": 1.55078125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.3931059797708652, + "y": 0.004943322383475821, + "z": 0.9769040828963853 + }, + "rotation": { + "quaternion": { + "W": 0.9958918173212095, + "X": 0.008034393463980221, + "Y": 0.045957103631949416, + "Z": 0.07760722479310181 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img30.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img30.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1039.6898193359375, + "y": 515.8831176757812 + }, + { + "x": 1068.723876953125, + "y": 520.6700439453125 + }, + { + "x": 1097.7530517578125, + "y": 527.000244140625 + }, + { + "x": 1125.9058837890625, + "y": 531.3419799804688 + }, + { + "x": 1154.2037353515625, + "y": 538.1765747070312 + }, + { + "x": 1182.619384765625, + "y": 541.1971435546875 + }, + { + "x": 1210.0882568359375, + "y": 547.93017578125 + }, + { + "x": 1036.6820068359375, + "y": 542.8713989257812 + }, + { + "x": 1064.66259765625, + "y": 548.6126098632812 + }, + { + "x": 1093.442626953125, + "y": 553.1591796875 + }, + { + "x": 1120.49365234375, + "y": 559.7425537109375 + }, + { + "x": 1149.3975830078125, + "y": 563.5266723632812 + }, + { + "x": 1177.1085205078125, + "y": 569.1392822265625 + }, + { + "x": 1203.9195556640625, + "y": 573.461669921875 + }, + { + "x": 1031.900390625, + "y": 568.49609375 + }, + { + "x": 1060.3668212890625, + "y": 574.6229248046875 + }, + { + "x": 1088.603271484375, + "y": 578.641845703125 + }, + { + "x": 1115.72412109375, + "y": 584.8043823242188 + }, + { + "x": 1142.5469970703125, + "y": 590.7818603515625 + }, + { + "x": 1170.239990234375, + "y": 594.401123046875 + }, + { + "x": 1196.282958984375, + "y": 600.0479736328125 + }, + { + "x": 1026.9715576171875, + "y": 593.6373901367188 + }, + { + "x": 1055.8623046875, + "y": 598.6536865234375 + }, + { + "x": 1081.598876953125, + "y": 603.00927734375 + }, + { + "x": 1111.4805908203125, + "y": 610.0690307617188 + }, + { + "x": 1135.9949951171875, + "y": 614.0426635742188 + }, + { + "x": 1167.3206787109375, + "y": 617.6694946289062 + }, + { + "x": 1188.5924072265625, + "y": 623.7035522460938 + }, + { + "x": 1024.360107421875, + "y": 617.4979858398438 + }, + { + "x": 1049.165283203125, + "y": 622.1515502929688 + }, + { + "x": 1078.450927734375, + "y": 628.7706909179688 + }, + { + "x": 1104.7095947265625, + "y": 634.0827026367188 + }, + { + "x": 1131.518310546875, + "y": 639.404541015625 + }, + { + "x": 1157.7100830078125, + "y": 643.5399780273438 + }, + { + "x": 1185.443115234375, + "y": 647.0562133789062 + }, + { + "x": 1018.4821166992188, + "y": 641.232177734375 + }, + { + "x": 1044.7672119140625, + "y": 647.8856201171875 + }, + { + "x": 1073.79833984375, + "y": 653.1796875 + }, + { + "x": 1099.44970703125, + "y": 656.7766723632812 + }, + { + "x": 1125.066162109375, + "y": 662.716796875 + }, + { + "x": 1151.6317138671875, + "y": 667.4246215820312 + }, + { + "x": 1176.9180908203125, + "y": 672.0054321289062 + }, + { + "x": 1013.9158325195312, + "y": 663.9412841796875 + }, + { + "x": 1040.09033203125, + "y": 670.0339965820312 + }, + { + "x": 1066.9896240234375, + "y": 675.0618896484375 + }, + { + "x": 1093.591064453125, + "y": 680.5511474609375 + }, + { + "x": 1119.3778076171875, + "y": 684.920166015625 + }, + { + "x": 1145.6141357421875, + "y": 690.2744140625 + }, + { + "x": 1168.456787109375, + "y": 695.5073852539062 + } + ], + "reprojectionErrors": [ + { + "x": 4.4696044921875, + "y": 3.11236572265625 + }, + { + "x": 2.53759765625, + "y": 3.0489501953125 + }, + { + "x": 0.8109130859375, + "y": 1.47698974609375 + }, + { + "x": 0.1634521484375, + "y": 1.92852783203125 + }, + { + "x": -0.42431640625, + "y": -0.07720947265625 + }, + { + "x": -0.922607421875, + "y": 1.766845703125 + }, + { + "x": -0.264892578125, + "y": -0.06524658203125 + }, + { + "x": 2.0926513671875, + "y": 0.96368408203125 + }, + { + "x": 1.0804443359375, + "y": 0.0174560546875 + }, + { + "x": -0.532470703125, + "y": 0.3009033203125 + }, + { + "x": -0.2154541015625, + "y": -1.41693115234375 + }, + { + "x": -1.54833984375, + "y": -0.2996826171875 + }, + { + "x": -1.483154296875, + "y": -0.9747314453125 + }, + { + "x": -0.310546875, + "y": -0.3228759765625 + }, + { + "x": 1.552001953125, + "y": -0.003173828125 + }, + { + "x": -0.076171875, + "y": -1.26446533203125 + }, + { + "x": -1.27734375, + "y": -0.38238525390625 + }, + { + "x": -1.1639404296875, + "y": -1.608154296875 + }, + { + "x": -0.5513916015625, + "y": -2.61260986328125 + }, + { + "x": -0.605712890625, + "y": -1.2222900390625 + }, + { + "x": 1.1956787109375, + "y": -1.82257080078125 + }, + { + "x": 1.2193603515625, + "y": -0.66058349609375 + }, + { + "x": -0.9599609375, + "y": -0.74163818359375 + }, + { + "x": 0.2100830078125, + "y": -0.1260986328125 + }, + { + "x": -2.5677490234375, + "y": -2.17864990234375 + }, + { + "x": 0.22119140625, + "y": -1.10845947265625 + }, + { + "x": -3.5994873046875, + "y": 0.345458984375 + }, + { + "x": 2.8372802734375, + "y": -0.570556640625 + }, + { + "x": -1.3719482421875, + "y": -0.20355224609375 + }, + { + "x": 0.41064453125, + "y": 0.14715576171875 + }, + { + "x": -2.0936279296875, + "y": -1.431640625 + }, + { + "x": -1.375244140625, + "y": -1.666748046875 + }, + { + "x": -1.00927734375, + "y": -1.874755859375 + }, + { + "x": 0.1734619140625, + "y": -0.859130859375 + }, + { + "x": 0.016845703125, + "y": 0.8133544921875 + }, + { + "x": -0.639892578125, + "y": 0.22113037109375 + }, + { + "x": -0.4576416015625, + "y": -1.35980224609375 + }, + { + "x": -2.829345703125, + "y": -1.544921875 + }, + { + "x": -1.62744140625, + "y": 0.00390625 + }, + { + "x": -0.1944580078125, + "y": -0.753173828125 + }, + { + "x": 0.4874267578125, + "y": -0.24029541015625 + }, + { + "x": 2.6488037109375, + "y": 0.43756103515625 + }, + { + "x": -1.16455078125, + "y": 1.5194091796875 + }, + { + "x": -0.9888916015625, + "y": 0.5667724609375 + }, + { + "x": -1.34765625, + "y": 0.71575927734375 + }, + { + "x": -1.2161865234375, + "y": 0.4405517578125 + }, + { + "x": -0.0755615234375, + "y": 1.3231201171875 + }, + { + "x": 0.8118896484375, + "y": 1.2584228515625 + }, + { + "x": 5.29150390625, + "y": 1.3533935546875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.43634568960690684, + "y": 0.1121717006368866, + "z": 1.0806290471730562 + }, + "rotation": { + "quaternion": { + "W": 0.9903480795619944, + "X": 0.07872212598094043, + "Y": 0.08498452721230165, + "Z": 0.07609952906169608 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img31.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img31.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1178.9200439453125, + "y": 618.9006958007812 + }, + { + "x": 1176.4632568359375, + "y": 640.507568359375 + }, + { + "x": 1174.375244140625, + "y": 661.5101318359375 + }, + { + "x": 1169.2174072265625, + "y": 681.4277954101562 + }, + { + "x": 1169.46484375, + "y": 701.295166015625 + }, + { + "x": 1165.7449951171875, + "y": 721.4484252929688 + }, + { + "x": 1161.8948974609375, + "y": 739.9343872070312 + }, + { + "x": 1151.747802734375, + "y": 616.5919799804688 + }, + { + "x": 1150.6712646484375, + "y": 639.55029296875 + }, + { + "x": 1148.2562255859375, + "y": 660.6394653320312 + }, + { + "x": 1146.9852294921875, + "y": 680.5679321289062 + }, + { + "x": 1143.6827392578125, + "y": 700.7788696289062 + }, + { + "x": 1141.539306640625, + "y": 720.1455688476562 + }, + { + "x": 1138.412353515625, + "y": 738.5791015625 + }, + { + "x": 1125.542236328125, + "y": 617.0095825195312 + }, + { + "x": 1124.101318359375, + "y": 638.2916870117188 + }, + { + "x": 1121.5362548828125, + "y": 660.709716796875 + }, + { + "x": 1118.818115234375, + "y": 679.8560180664062 + }, + { + "x": 1118.823974609375, + "y": 699.6119995117188 + }, + { + "x": 1116.310302734375, + "y": 719.3958740234375 + }, + { + "x": 1114.6060791015625, + "y": 737.1432495117188 + }, + { + "x": 1097.689697265625, + "y": 614.5020751953125 + }, + { + "x": 1097.737060546875, + "y": 637.2874755859375 + }, + { + "x": 1096.888671875, + "y": 659.3140869140625 + }, + { + "x": 1095.550537109375, + "y": 678.4549560546875 + }, + { + "x": 1092.4599609375, + "y": 698.113037109375 + }, + { + "x": 1091.73291015625, + "y": 717.1292114257812 + }, + { + "x": 1090.2391357421875, + "y": 736.509521484375 + }, + { + "x": 1072.3677978515625, + "y": 613.504150390625 + }, + { + "x": 1071.00048828125, + "y": 635.7656860351562 + }, + { + "x": 1070.7218017578125, + "y": 656.3924560546875 + }, + { + "x": 1068.2357177734375, + "y": 677.0032348632812 + }, + { + "x": 1067.968994140625, + "y": 697.23291015625 + }, + { + "x": 1067.827880859375, + "y": 716.6393432617188 + }, + { + "x": 1065.4969482421875, + "y": 733.969482421875 + }, + { + "x": 1043.6119384765625, + "y": 611.7557373046875 + }, + { + "x": 1044.84619140625, + "y": 633.8301391601562 + }, + { + "x": 1044.2791748046875, + "y": 656.0491333007812 + }, + { + "x": 1043.7900390625, + "y": 675.2974853515625 + }, + { + "x": 1040.86962890625, + "y": 694.6947021484375 + }, + { + "x": 1041.5457763671875, + "y": 714.4039916992188 + }, + { + "x": 1040.80859375, + "y": 732.947265625 + }, + { + "x": 1016.8656005859375, + "y": 610.9830932617188 + }, + { + "x": 1017.680908203125, + "y": 632.7501220703125 + }, + { + "x": 1017.5308837890625, + "y": 653.74267578125 + }, + { + "x": 1016.6856079101562, + "y": 674.120361328125 + }, + { + "x": 1017.3123779296875, + "y": 693.563720703125 + }, + { + "x": 1015.9424438476562, + "y": 711.4804077148438 + }, + { + "x": 1016.4072265625, + "y": 730.0173950195312 + } + ], + "reprojectionErrors": [ + { + "x": -0.357421875, + "y": 0.26031494140625 + }, + { + "x": -0.0986328125, + "y": -0.17230224609375 + }, + { + "x": -0.17431640625, + "y": -0.3323974609375 + }, + { + "x": 2.85302734375, + "y": 0.26837158203125 + }, + { + "x": 0.5078125, + "y": 0.60272216796875 + }, + { + "x": 2.16162109375, + "y": 0.34173583984375 + }, + { + "x": 3.9769287109375, + "y": 1.445556640625 + }, + { + "x": -0.307861328125, + "y": 1.35345458984375 + }, + { + "x": -1.2039794921875, + "y": -0.54266357421875 + }, + { + "x": -0.731201171875, + "y": -0.8978271484375 + }, + { + "x": -1.3726806640625, + "y": -0.412841796875 + }, + { + "x": 0.04638671875, + "y": -0.52362060546875 + }, + { + "x": 0.3348388671875, + "y": -0.09637451171875 + }, + { + "x": 1.634521484375, + "y": 0.96478271484375 + }, + { + "x": -0.8963623046875, + "y": -0.22076416015625 + }, + { + "x": -1.208251953125, + "y": -0.55059814453125 + }, + { + "x": -0.3690185546875, + "y": -2.34088134765625 + }, + { + "x": 0.6495361328125, + "y": -1.17669677734375 + }, + { + "x": -1.0301513671875, + "y": -0.93212890625 + }, + { + "x": -0.165283203125, + "y": -1.01849365234375 + }, + { + "x": -0.085205078125, + "y": 0.63543701171875 + }, + { + "x": 0.479736328125, + "y": 1.18780517578125 + }, + { + "x": -1.10546875, + "y": -0.75299072265625 + }, + { + "x": -1.771484375, + "y": -2.25616455078125 + }, + { + "x": -1.9248046875, + "y": -1.18743896484375 + }, + { + "x": -0.30322265625, + "y": -0.94268798828125 + }, + { + "x": -1.0233154296875, + "y": -0.35595703125 + }, + { + "x": -0.9552001953125, + "y": -0.42657470703125 + }, + { + "x": -0.3677978515625, + "y": 1.14337158203125 + }, + { + "x": -0.328369140625, + "y": -0.379150390625 + }, + { + "x": -1.3572998046875, + "y": -0.584716796875 + }, + { + "x": -0.1591796875, + "y": -1.08489990234375 + }, + { + "x": -1.1610107421875, + "y": -1.50762939453125 + }, + { + "x": -2.269775390625, + "y": -1.40399169921875 + }, + { + "x": -1.1702880859375, + "y": 0.48565673828125 + }, + { + "x": 2.5152587890625, + "y": 1.90478515625 + }, + { + "x": 0.15869140625, + "y": 0.46588134765625 + }, + { + "x": -0.379638671875, + "y": -1.43212890625 + }, + { + "x": -0.9793701171875, + "y": -0.6669921875 + }, + { + "x": 0.868408203125, + "y": -0.351318359375 + }, + { + "x": -0.864501953125, + "y": -0.6416015625 + }, + { + "x": -1.1685791015625, + "y": -0.0533447265625 + }, + { + "x": 3.67578125, + "y": 1.7447509765625 + }, + { + "x": 1.93914794921875, + "y": 0.51177978515625 + }, + { + "x": 1.18170166015625, + "y": -0.25811767578125 + }, + { + "x": 1.133056640625, + "y": -0.717529296875 + }, + { + "x": -0.37445068359375, + "y": -0.54022216796875 + }, + { + "x": 0.127685546875, + "y": 0.8726806640625 + }, + { + "x": -1.1922607421875, + "y": 1.38055419921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.5970047552699712, + "y": 0.22059649497784498, + "z": 1.136876881749715 + }, + "rotation": { + "quaternion": { + "W": 0.7075291484244107, + "X": 0.21915243034940904, + "Y": -0.043725348824523884, + "Z": 0.6704198761014991 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img32.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img32.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 911.621826171875, + "y": 585.462158203125 + }, + { + "x": 938.3268432617188, + "y": 588.0738525390625 + }, + { + "x": 965.8402709960938, + "y": 591.1044311523438 + }, + { + "x": 991.7494506835938, + "y": 593.5556640625 + }, + { + "x": 1018.584228515625, + "y": 597.5523071289062 + }, + { + "x": 1045.1553955078125, + "y": 598.4781494140625 + }, + { + "x": 1072.398681640625, + "y": 602.5239868164062 + }, + { + "x": 912.5408325195312, + "y": 606.929931640625 + }, + { + "x": 939.716064453125, + "y": 609.7351684570312 + }, + { + "x": 965.3146362304688, + "y": 612.9266967773438 + }, + { + "x": 991.614990234375, + "y": 615.7988891601562 + }, + { + "x": 1017.605224609375, + "y": 618.3641357421875 + }, + { + "x": 1044.29736328125, + "y": 621.1871948242188 + }, + { + "x": 1070.5604248046875, + "y": 623.9218139648438 + }, + { + "x": 912.7171020507812, + "y": 627.3908081054688 + }, + { + "x": 938.9900512695312, + "y": 631.6168212890625 + }, + { + "x": 964.74755859375, + "y": 633.0838623046875 + }, + { + "x": 990.8098754882812, + "y": 637.468994140625 + }, + { + "x": 1015.2203979492188, + "y": 640.5993041992188 + }, + { + "x": 1041.567138671875, + "y": 641.6640014648438 + }, + { + "x": 1067.9659423828125, + "y": 644.3614501953125 + }, + { + "x": 911.79736328125, + "y": 647.4305419921875 + }, + { + "x": 938.3197021484375, + "y": 650.5490112304688 + }, + { + "x": 962.9537963867188, + "y": 653.4253540039062 + }, + { + "x": 989.8764038085938, + "y": 656.8370971679688 + }, + { + "x": 1013.492919921875, + "y": 659.1876220703125 + }, + { + "x": 1041.54248046875, + "y": 661.1179809570312 + }, + { + "x": 1064.1243896484375, + "y": 664.0300903320312 + }, + { + "x": 912.74560546875, + "y": 667.3138427734375 + }, + { + "x": 936.2303466796875, + "y": 669.1334838867188 + }, + { + "x": 962.7327270507812, + "y": 673.3271484375 + }, + { + "x": 987.1574096679688, + "y": 675.5911254882812 + }, + { + "x": 1013.3196411132812, + "y": 678.6306762695312 + }, + { + "x": 1037.7530517578125, + "y": 681.0289306640625 + }, + { + "x": 1063.8670654296875, + "y": 682.9652709960938 + }, + { + "x": 911.6768188476562, + "y": 684.9876708984375 + }, + { + "x": 936.9378051757812, + "y": 689.1558837890625 + }, + { + "x": 962.8621215820312, + "y": 692.748046875 + }, + { + "x": 986.3995971679688, + "y": 694.40673828125 + }, + { + "x": 1010.960693359375, + "y": 698.0452270507812 + }, + { + "x": 1035.902099609375, + "y": 700.5037841796875 + }, + { + "x": 1060.591064453125, + "y": 703.3078002929688 + }, + { + "x": 911.8817138671875, + "y": 703.253173828125 + }, + { + "x": 936.5335693359375, + "y": 707.4661865234375 + }, + { + "x": 960.7867431640625, + "y": 709.8641357421875 + }, + { + "x": 985.4113159179688, + "y": 713.5406494140625 + }, + { + "x": 1009.476806640625, + "y": 715.5420532226562 + }, + { + "x": 1033.6885986328125, + "y": 718.7867431640625 + }, + { + "x": 1056.9090576171875, + "y": 721.5707397460938 + } + ], + "reprojectionErrors": [ + { + "x": 3.22589111328125, + "y": 2.07733154296875 + }, + { + "x": 1.850830078125, + "y": 1.84344482421875 + }, + { + "x": 0.02203369140625, + "y": 1.223388671875 + }, + { + "x": 0.15948486328125, + "y": 1.216064453125 + }, + { + "x": -0.259033203125, + "y": -0.30255126953125 + }, + { + "x": -0.036376953125, + "y": 1.28448486328125 + }, + { + "x": -0.1002197265625, + "y": -0.212890625 + }, + { + "x": 1.72943115234375, + "y": 0.75970458984375 + }, + { + "x": -0.34808349609375, + "y": 0.44964599609375 + }, + { + "x": -0.50079345703125, + "y": -0.21270751953125 + }, + { + "x": -0.99981689453125, + "y": -0.52093505859375 + }, + { + "x": -0.82598876953125, + "y": -0.48675537109375 + }, + { + "x": -0.9835205078125, + "y": -0.6741943359375 + }, + { + "x": -0.3336181640625, + "y": -0.7362060546875 + }, + { + "x": 0.98114013671875, + "y": 0.13873291015625 + }, + { + "x": -0.42059326171875, + "y": -1.47882080078125 + }, + { + "x": -0.9649658203125, + "y": -0.3021240234375 + }, + { + "x": -1.46514892578125, + "y": -2.00750732421875 + }, + { + "x": 0.04266357421875, + "y": -2.42132568359375 + }, + { + "x": -0.0220947265625, + "y": -0.73199462890625 + }, + { + "x": 0.232421875, + "y": -0.63714599609375 + }, + { + "x": 1.33404541015625, + "y": -0.35955810546875 + }, + { + "x": -0.53802490234375, + "y": -0.7601318359375 + }, + { + "x": -0.18597412109375, + "y": -0.882080078125 + }, + { + "x": -1.77960205078125, + "y": -1.50225830078125 + }, + { + "x": 0.28265380859375, + "y": -1.02325439453125 + }, + { + "x": -1.7310791015625, + "y": -0.08538818359375 + }, + { + "x": 2.0872802734375, + "y": -0.0897216796875 + }, + { + "x": -0.1761474609375, + "y": -0.9886474609375 + }, + { + "x": 0.7738037109375, + "y": 0.0155029296875 + }, + { + "x": -0.96380615234375, + "y": -1.31689453125 + }, + { + "x": -0.28692626953125, + "y": -0.68121337890625 + }, + { + "x": -1.00396728515625, + "y": -0.7821044921875 + }, + { + "x": 0.3585205078125, + "y": -0.2017822265625 + }, + { + "x": 0.3983154296875, + "y": 0.881103515625 + }, + { + "x": 0.33544921875, + "y": 0.3154296875 + }, + { + "x": -0.70123291015625, + "y": -0.9266357421875 + }, + { + "x": -2.0767822265625, + "y": -1.5540771484375 + }, + { + "x": -0.73455810546875, + "y": -0.208740234375 + }, + { + "x": -0.0782470703125, + "y": -0.80303955078125 + }, + { + "x": 0.542236328125, + "y": -0.17645263671875 + }, + { + "x": 1.766845703125, + "y": 0.146484375 + }, + { + "x": -0.422119140625, + "y": 0.7618408203125 + }, + { + "x": -1.0550537109375, + "y": -0.42596435546875 + }, + { + "x": -0.9703369140625, + "y": 0.2408447265625 + }, + { + "x": -0.93157958984375, + "y": -0.33062744140625 + }, + { + "x": -0.00189208984375, + "y": 0.814208984375 + }, + { + "x": 1.1199951171875, + "y": 0.75775146484375 + }, + { + "x": 3.5787353515625, + "y": 1.204833984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.33338149375668713, + "y": 0.19227377259419326, + "z": 1.1614189285692882 + }, + "rotation": { + "quaternion": { + "W": 0.963902917251267, + "X": 0.21170397124736443, + "Y": 0.16102065477566718, + "Z": -0.012039244503192615 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img33.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img33.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 909.9999389648438, + "y": 579.706787109375 + }, + { + "x": 936.8632202148438, + "y": 582.6095581054688 + }, + { + "x": 964.5712890625, + "y": 585.8299560546875 + }, + { + "x": 989.7980346679688, + "y": 588.8613891601562 + }, + { + "x": 1016.7366333007812, + "y": 593.3856811523438 + }, + { + "x": 1043.0814208984375, + "y": 594.6240234375 + }, + { + "x": 1070.3997802734375, + "y": 599.1697998046875 + }, + { + "x": 910.6900024414062, + "y": 601.2276611328125 + }, + { + "x": 937.8832397460938, + "y": 604.6063232421875 + }, + { + "x": 963.3683471679688, + "y": 608.0389404296875 + }, + { + "x": 989.4729614257812, + "y": 611.35595703125 + }, + { + "x": 1015.3330078125, + "y": 614.1715698242188 + }, + { + "x": 1041.9697265625, + "y": 617.6382446289062 + }, + { + "x": 1068.072021484375, + "y": 620.8162841796875 + }, + { + "x": 910.767578125, + "y": 621.7861938476562 + }, + { + "x": 936.6845092773438, + "y": 626.4613647460938 + }, + { + "x": 962.5490112304688, + "y": 628.3563232421875 + }, + { + "x": 988.8184814453125, + "y": 633.6911010742188 + }, + { + "x": 1012.6361083984375, + "y": 636.649169921875 + }, + { + "x": 1038.9046630859375, + "y": 638.196533203125 + }, + { + "x": 1065.632080078125, + "y": 640.8682250976562 + }, + { + "x": 909.2262573242188, + "y": 641.6923828125 + }, + { + "x": 935.695556640625, + "y": 645.6714477539062 + }, + { + "x": 960.13134765625, + "y": 648.6367797851562 + }, + { + "x": 987.3643188476562, + "y": 652.5579223632812 + }, + { + "x": 1010.6664428710938, + "y": 655.1428833007812 + }, + { + "x": 1038.8038330078125, + "y": 657.5630493164062 + }, + { + "x": 1060.61083984375, + "y": 661.06884765625 + }, + { + "x": 909.8720092773438, + "y": 661.7890625 + }, + { + "x": 933.0234985351562, + "y": 663.769287109375 + }, + { + "x": 959.7285766601562, + "y": 668.8338623046875 + }, + { + "x": 984.1704711914062, + "y": 671.47998046875 + }, + { + "x": 1010.2296142578125, + "y": 675.2401123046875 + }, + { + "x": 1034.56005859375, + "y": 677.9271240234375 + }, + { + "x": 1060.653076171875, + "y": 680.153076171875 + }, + { + "x": 908.39013671875, + "y": 679.3197631835938 + }, + { + "x": 933.6419067382812, + "y": 684.3966064453125 + }, + { + "x": 959.2061767578125, + "y": 687.8274536132812 + }, + { + "x": 982.8523559570312, + "y": 690.3435668945312 + }, + { + "x": 1007.716552734375, + "y": 694.5037231445312 + }, + { + "x": 1032.4375, + "y": 697.5318603515625 + }, + { + "x": 1056.8472900390625, + "y": 700.4122314453125 + }, + { + "x": 908.101318359375, + "y": 698.3712158203125 + }, + { + "x": 932.8561401367188, + "y": 702.6836547851562 + }, + { + "x": 957.1246337890625, + "y": 705.7271118164062 + }, + { + "x": 981.4779052734375, + "y": 709.591064453125 + }, + { + "x": 1005.6213989257812, + "y": 712.4181518554688 + }, + { + "x": 1029.8408203125, + "y": 715.5621337890625 + }, + { + "x": 1052.8505859375, + "y": 718.9581909179688 + } + ], + "reprojectionErrors": [ + { + "x": 3.39434814453125, + "y": 1.96441650390625 + }, + { + "x": 1.7716064453125, + "y": 1.8507080078125 + }, + { + "x": -0.3385009765625, + "y": 1.45831298828125 + }, + { + "x": 0.397705078125, + "y": 1.294677734375 + }, + { + "x": -0.2052001953125, + "y": -0.32122802734375 + }, + { + "x": 0.1666259765625, + "y": 1.39031982421875 + }, + { + "x": -0.046142578125, + "y": -0.1632080078125 + }, + { + "x": 1.76519775390625, + "y": 0.71331787109375 + }, + { + "x": -0.4185791015625, + "y": 0.2401123046875 + }, + { + "x": -0.5433349609375, + "y": -0.246826171875 + }, + { + "x": -0.92919921875, + "y": -0.57708740234375 + }, + { + "x": -0.70452880859375, + "y": -0.364013671875 + }, + { + "x": -0.8828125, + "y": -0.75921630859375 + }, + { + "x": -0.1448974609375, + "y": -0.82208251953125 + }, + { + "x": 0.75909423828125, + "y": 0.115478515625 + }, + { + "x": -0.37384033203125, + "y": -1.54180908203125 + }, + { + "x": -1.10955810546875, + "y": -0.37750244140625 + }, + { + "x": -1.8983154296875, + "y": -2.6107177734375 + }, + { + "x": 0.1240234375, + "y": -2.424072265625 + }, + { + "x": 0.0623779296875, + "y": -0.78265380859375 + }, + { + "x": -0.0833740234375, + "y": -0.2205810546875 + }, + { + "x": 1.3819580078125, + "y": -0.12738037109375 + }, + { + "x": -0.523193359375, + "y": -0.97991943359375 + }, + { + "x": -0.05615234375, + "y": -0.7762451171875 + }, + { + "x": -2.04052734375, + "y": -1.48492431640625 + }, + { + "x": 0.25885009765625, + "y": -0.81317138671875 + }, + { + "x": -1.916748046875, + "y": 0.06866455078125 + }, + { + "x": 2.6058349609375, + "y": -0.0889892578125 + }, + { + "x": -0.17254638671875, + "y": -0.84686279296875 + }, + { + "x": 1.02557373046875, + "y": 0.4044189453125 + }, + { + "x": -0.9970703125, + "y": -1.38507080078125 + }, + { + "x": -0.416748046875, + "y": -0.71160888671875 + }, + { + "x": -1.10699462890625, + "y": -1.10675048828125 + }, + { + "x": 0.285400390625, + "y": -0.3824462890625 + }, + { + "x": 0.2764892578125, + "y": 0.8502197265625 + }, + { + "x": 0.40985107421875, + "y": 0.72412109375 + }, + { + "x": -0.7017822265625, + "y": -1.01959228515625 + }, + { + "x": -1.798583984375, + "y": -1.07275390625 + }, + { + "x": -0.6434326171875, + "y": -0.1656494140625 + }, + { + "x": -0.3656005859375, + "y": -0.856201171875 + }, + { + "x": 0.4033203125, + "y": -0.36737060546875 + }, + { + "x": 1.8382568359375, + "y": 0.31756591796875 + }, + { + "x": -0.19195556640625, + "y": 0.5091552734375 + }, + { + "x": -1.010986328125, + "y": -0.371826171875 + }, + { + "x": -1.02197265625, + "y": 0.06170654296875 + }, + { + "x": -0.7894287109375, + "y": -0.27880859375 + }, + { + "x": -0.01214599609375, + "y": 0.4649658203125 + }, + { + "x": 1.031005859375, + "y": 0.94012451171875 + }, + { + "x": 3.632568359375, + "y": 1.21258544921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.3325293570948591, + "y": 0.1865107347547179, + "z": 1.1637699978484264 + }, + "rotation": { + "quaternion": { + "W": 0.9641216571946929, + "X": 0.20778470961147955, + "Y": 0.1651859334497672, + "Z": -0.002924375174519714 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img34.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img34.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1059.5858154296875, + "y": 498.0779724121094 + }, + { + "x": 1089.943115234375, + "y": 501.8406982421875 + }, + { + "x": 1119.9210205078125, + "y": 507.8285217285156 + }, + { + "x": 1150.1214599609375, + "y": 511.4345703125 + }, + { + "x": 1179.1923828125, + "y": 517.2921142578125 + }, + { + "x": 1208.6475830078125, + "y": 520.0692749023438 + }, + { + "x": 1236.7344970703125, + "y": 526.4019165039062 + }, + { + "x": 1058.832275390625, + "y": 525.8036499023438 + }, + { + "x": 1087.8419189453125, + "y": 530.8259887695312 + }, + { + "x": 1117.2982177734375, + "y": 534.8377075195312 + }, + { + "x": 1145.5247802734375, + "y": 540.7070922851562 + }, + { + "x": 1175.740478515625, + "y": 544.4669189453125 + }, + { + "x": 1204.6649169921875, + "y": 548.870849609375 + }, + { + "x": 1232.360595703125, + "y": 553.1469116210938 + }, + { + "x": 1055.8162841796875, + "y": 552.0455322265625 + }, + { + "x": 1085.359375, + "y": 558.5233154296875 + }, + { + "x": 1114.254638671875, + "y": 561.148681640625 + }, + { + "x": 1142.3857421875, + "y": 566.8798217773438 + }, + { + "x": 1170.2908935546875, + "y": 572.3240356445312 + }, + { + "x": 1199.0247802734375, + "y": 575.8012084960938 + }, + { + "x": 1226.70654296875, + "y": 580.22119140625 + }, + { + "x": 1052.5352783203125, + "y": 578.7147827148438 + }, + { + "x": 1081.968505859375, + "y": 582.6488037109375 + }, + { + "x": 1108.8795166015625, + "y": 586.9199829101562 + }, + { + "x": 1139.5419921875, + "y": 592.8950805664062 + }, + { + "x": 1165.203369140625, + "y": 596.7646484375 + }, + { + "x": 1196.731201171875, + "y": 600.23974609375 + }, + { + "x": 1219.7940673828125, + "y": 605.3510131835938 + }, + { + "x": 1050.9892578125, + "y": 602.7793579101562 + }, + { + "x": 1076.737548828125, + "y": 607.1232299804688 + }, + { + "x": 1106.809814453125, + "y": 613.16943359375 + }, + { + "x": 1133.9381103515625, + "y": 618.0110473632812 + }, + { + "x": 1161.5042724609375, + "y": 623.0546264648438 + }, + { + "x": 1189.0384521484375, + "y": 626.9205932617188 + }, + { + "x": 1217.7919921875, + "y": 629.3193969726562 + }, + { + "x": 1046.7406005859375, + "y": 628.113037109375 + }, + { + "x": 1073.834716796875, + "y": 633.5780029296875 + }, + { + "x": 1103.489501953125, + "y": 638.4588623046875 + }, + { + "x": 1130.1678466796875, + "y": 641.220458984375 + }, + { + "x": 1156.604248046875, + "y": 646.7098388671875 + }, + { + "x": 1183.9849853515625, + "y": 651.0835571289062 + }, + { + "x": 1210.466552734375, + "y": 656.1967163085938 + }, + { + "x": 1043.4637451171875, + "y": 650.722900390625 + }, + { + "x": 1070.5684814453125, + "y": 656.6920166015625 + }, + { + "x": 1098.4324951171875, + "y": 661.2613525390625 + }, + { + "x": 1125.440185546875, + "y": 666.4895629882812 + }, + { + "x": 1152.2142333984375, + "y": 670.173583984375 + }, + { + "x": 1178.8677978515625, + "y": 675.4664916992188 + }, + { + "x": 1203.3453369140625, + "y": 679.7317504882812 + } + ], + "reprojectionErrors": [ + { + "x": 6.1143798828125, + "y": 3.6063232421875 + }, + { + "x": 3.519775390625, + "y": 3.8165283203125 + }, + { + "x": 1.5924072265625, + "y": 1.8426513671875 + }, + { + "x": -0.26513671875, + "y": 2.292236328125 + }, + { + "x": -0.696533203125, + "y": 0.5325927734375 + }, + { + "x": -1.210693359375, + "y": 1.8963623046875 + }, + { + "x": -0.050537109375, + "y": -0.251708984375 + }, + { + "x": 2.7615966796875, + "y": 1.33819580078125 + }, + { + "x": 1.4168701171875, + "y": 0.40887451171875 + }, + { + "x": -0.0885009765625, + "y": 0.53228759765625 + }, + { + "x": -0.07373046875, + "y": -1.1591796875 + }, + { + "x": -1.753173828125, + "y": -0.6976318359375 + }, + { + "x": -1.8419189453125, + "y": -0.83612060546875 + }, + { + "x": -0.397705078125, + "y": -0.8018798828125 + }, + { + "x": 1.708984375, + "y": 0.43280029296875 + }, + { + "x": -0.26416015625, + "y": -1.8328857421875 + }, + { + "x": -1.30517578125, + "y": -0.202880859375 + }, + { + "x": -1.2933349609375, + "y": -1.63482666015625 + }, + { + "x": -0.7625732421875, + "y": -2.7352294921875 + }, + { + "x": -0.7628173828125, + "y": -1.82330322265625 + }, + { + "x": 0.5911865234375, + "y": -1.80828857421875 + }, + { + "x": 0.9578857421875, + "y": -1.01422119140625 + }, + { + "x": -0.9974365234375, + "y": -0.617919921875 + }, + { + "x": -0.1480712890625, + "y": -0.51446533203125 + }, + { + "x": -2.7630615234375, + "y": -2.06988525390625 + }, + { + "x": -0.0858154296875, + "y": -1.47412109375 + }, + { + "x": -2.9791259765625, + "y": -0.43756103515625 + }, + { + "x": 2.892822265625, + "y": -0.989990234375 + }, + { + "x": -1.4927978515625, + "y": 0.03582763671875 + }, + { + "x": 0.1473388671875, + "y": 0.13970947265625 + }, + { + "x": -2.25537109375, + "y": -1.41339111328125 + }, + { + "x": -1.428955078125, + "y": -1.71575927734375 + }, + { + "x": -0.7508544921875, + "y": -2.17340087890625 + }, + { + "x": 0.25341796875, + "y": -1.4058837890625 + }, + { + "x": 0.3369140625, + "y": 0.87701416015625 + }, + { + "x": -1.206787109375, + "y": -0.28424072265625 + }, + { + "x": -0.9990234375, + "y": -1.184814453125 + }, + { + "x": -3.072509765625, + "y": -1.454833984375 + }, + { + "x": -1.885986328125, + "y": 0.44158935546875 + }, + { + "x": -0.1695556640625, + "y": -0.3419189453125 + }, + { + "x": 0.89501953125, + "y": 0.038818359375 + }, + { + "x": 3.1556396484375, + "y": -0.27056884765625 + }, + { + "x": -1.8594970703125, + "y": 2.02490234375 + }, + { + "x": -1.746337890625, + "y": 0.73614501953125 + }, + { + "x": -2.1146240234375, + "y": 0.8946533203125 + }, + { + "x": -1.344482421875, + "y": 0.44256591796875 + }, + { + "x": -0.05419921875, + "y": 1.58355712890625 + }, + { + "x": 1.647216796875, + "y": 1.1654052734375 + }, + { + "x": 5.8199462890625, + "y": 1.8253173828125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.4566770156229295, + "y": 0.09517688889475971, + "z": 1.0790140110247397 + }, + "rotation": { + "quaternion": { + "W": 0.9905893759821552, + "X": 0.04710870246463884, + "Y": 0.11296382160272828, + "Z": 0.06125874102762402 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img35.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img35.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1027.524658203125, + "y": 561.143310546875 + }, + { + "x": 1057.8870849609375, + "y": 565.2444458007812 + }, + { + "x": 1088.4793701171875, + "y": 571.6036376953125 + }, + { + "x": 1119.4412841796875, + "y": 575.2843627929688 + }, + { + "x": 1149.0562744140625, + "y": 580.787353515625 + }, + { + "x": 1178.8128662109375, + "y": 584.229736328125 + }, + { + "x": 1208.440673828125, + "y": 589.4221801757812 + }, + { + "x": 1024.2552490234375, + "y": 589.619140625 + }, + { + "x": 1054.076904296875, + "y": 595.4347534179688 + }, + { + "x": 1084.085693359375, + "y": 599.0924072265625 + }, + { + "x": 1113.23388671875, + "y": 605.4412841796875 + }, + { + "x": 1143.734130859375, + "y": 609.0576171875 + }, + { + "x": 1173.56787109375, + "y": 613.8050537109375 + }, + { + "x": 1201.6396484375, + "y": 617.1944580078125 + }, + { + "x": 1019.9879150390625, + "y": 617.79150390625 + }, + { + "x": 1049.9708251953125, + "y": 623.3817749023438 + }, + { + "x": 1079.7901611328125, + "y": 627.3106079101562 + }, + { + "x": 1108.244140625, + "y": 632.1619262695312 + }, + { + "x": 1137.8968505859375, + "y": 637.6492919921875 + }, + { + "x": 1166.8055419921875, + "y": 641.1357421875 + }, + { + "x": 1195.63232421875, + "y": 645.8008422851562 + }, + { + "x": 1015.5513916015625, + "y": 644.9353637695312 + }, + { + "x": 1045.7535400390625, + "y": 649.6888427734375 + }, + { + "x": 1073.419189453125, + "y": 653.3486328125 + }, + { + "x": 1104.39306640625, + "y": 660.0277709960938 + }, + { + "x": 1131.2342529296875, + "y": 663.260986328125 + }, + { + "x": 1162.575439453125, + "y": 667.6837158203125 + }, + { + "x": 1187.8636474609375, + "y": 672.2529296875 + }, + { + "x": 1012.999267578125, + "y": 670.5324096679688 + }, + { + "x": 1039.445556640625, + "y": 674.5634155273438 + }, + { + "x": 1069.8035888671875, + "y": 681.3409423828125 + }, + { + "x": 1097.9029541015625, + "y": 685.593994140625 + }, + { + "x": 1126.255615234375, + "y": 690.8892211914062 + }, + { + "x": 1154.661865234375, + "y": 694.5966186523438 + }, + { + "x": 1184.2567138671875, + "y": 697.2022094726562 + }, + { + "x": 1007.76416015625, + "y": 696.5824584960938 + }, + { + "x": 1035.56396484375, + "y": 702.4300537109375 + }, + { + "x": 1064.6370849609375, + "y": 705.9285888671875 + }, + { + "x": 1093.26318359375, + "y": 710.136962890625 + }, + { + "x": 1119.94873046875, + "y": 715.0845336914062 + }, + { + "x": 1148.5050048828125, + "y": 719.9566040039062 + }, + { + "x": 1175.0977783203125, + "y": 723.8388671875 + }, + { + "x": 1003.5115966796875, + "y": 720.4041137695312 + }, + { + "x": 1030.448974609375, + "y": 725.963134765625 + }, + { + "x": 1059.341552734375, + "y": 730.7797241210938 + }, + { + "x": 1087.394775390625, + "y": 736.044921875 + }, + { + "x": 1114.770751953125, + "y": 739.849365234375 + }, + { + "x": 1142.310546875, + "y": 744.6886596679688 + }, + { + "x": 1167.5308837890625, + "y": 748.8499755859375 + } + ], + "reprojectionErrors": [ + { + "x": 4.12939453125, + "y": 2.8980712890625 + }, + { + "x": 2.7095947265625, + "y": 3.12750244140625 + }, + { + "x": 1.2076416015625, + "y": 1.12066650390625 + }, + { + "x": -0.5152587890625, + "y": 1.81427001953125 + }, + { + "x": -0.741455078125, + "y": 0.707763671875 + }, + { + "x": -0.958251953125, + "y": 1.68408203125 + }, + { + "x": -0.8944091796875, + "y": 0.932861328125 + }, + { + "x": 2.1778564453125, + "y": 1.26409912109375 + }, + { + "x": 1.1630859375, + "y": -0.17108154296875 + }, + { + "x": 0.1075439453125, + "y": 0.57366943359375 + }, + { + "x": 0.06005859375, + "y": -1.35076904296875 + }, + { + "x": -1.1910400390625, + "y": -0.5203857421875 + }, + { + "x": -1.6260986328125, + "y": -0.79864501953125 + }, + { + "x": -0.148681640625, + "y": 0.30364990234375 + }, + { + "x": 1.29248046875, + "y": -0.26055908203125 + }, + { + "x": -0.0155029296875, + "y": -1.42108154296875 + }, + { + "x": -1.014892578125, + "y": -0.89813232421875 + }, + { + "x": -0.502685546875, + "y": -1.27532958984375 + }, + { + "x": -1.0421142578125, + "y": -2.26629638671875 + }, + { + "x": -0.6893310546875, + "y": -1.23370361328125 + }, + { + "x": -0.10546875, + "y": -1.35711669921875 + }, + { + "x": 0.64227294921875, + "y": -0.94189453125 + }, + { + "x": -1.0133056640625, + "y": -1.216796875 + }, + { + "x": 0.011474609375, + "y": -0.37579345703125 + }, + { + "x": -2.1270751953125, + "y": -2.53179931640625 + }, + { + "x": 0.012939453125, + "y": -1.21929931640625 + }, + { + "x": -2.2001953125, + "y": -1.07366943359375 + }, + { + "x": 1.7877197265625, + "y": -1.05169677734375 + }, + { + "x": -1.8282470703125, + "y": -0.25274658203125 + }, + { + "x": 0.147216796875, + "y": 0.24322509765625 + }, + { + "x": -1.646484375, + "y": -1.9849853515625 + }, + { + "x": -1.0377197265625, + "y": -1.666259765625 + }, + { + "x": -0.5374755859375, + "y": -2.36700439453125 + }, + { + "x": 0.0546875, + "y": -1.4571533203125 + }, + { + "x": -0.3948974609375, + "y": 0.57745361328125 + }, + { + "x": -1.55389404296875, + "y": -0.1842041015625 + }, + { + "x": -1.05322265625, + "y": -1.4569091796875 + }, + { + "x": -1.6844482421875, + "y": -0.3580322265625 + }, + { + "x": -1.7259521484375, + "y": 0.0535888671875 + }, + { + "x": 0.31640625, + "y": -0.25115966796875 + }, + { + "x": 0.6326904296875, + "y": -0.45751953125 + }, + { + "x": 3.0579833984375, + "y": 0.34906005859375 + }, + { + "x": -2.20196533203125, + "y": 1.953369140625 + }, + { + "x": -0.956787109375, + "y": 1.016845703125 + }, + { + "x": -1.5264892578125, + "y": 0.8453369140625 + }, + { + "x": -1.115234375, + "y": 0.24798583984375 + }, + { + "x": 0.115478515625, + "y": 1.13433837890625 + }, + { + "x": 1.3258056640625, + "y": 1.00885009765625 + }, + { + "x": 4.9998779296875, + "y": 1.5845947265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.3919124906908904, + "y": 0.1441665693564657, + "z": 0.9985061377943504 + }, + "rotation": { + "quaternion": { + "W": 0.9934789982664655, + "X": 0.0751880891334967, + "Y": 0.055247435792156185, + "Z": 0.06552825416799482 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img36.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img36.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1230.534912109375, + "y": 573.0463256835938 + }, + { + "x": 1228.8399658203125, + "y": 600.5767211914062 + }, + { + "x": 1228.783935546875, + "y": 627.4567260742188 + }, + { + "x": 1225.62109375, + "y": 653.191650390625 + }, + { + "x": 1227.08447265625, + "y": 677.2297973632812 + }, + { + "x": 1223.670654296875, + "y": 703.6996459960938 + }, + { + "x": 1220.2440185546875, + "y": 728.2669067382812 + }, + { + "x": 1201.2490234375, + "y": 572.8404541015625 + }, + { + "x": 1201.959716796875, + "y": 601.2821044921875 + }, + { + "x": 1200.4327392578125, + "y": 627.8375854492188 + }, + { + "x": 1201.732666015625, + "y": 652.6700439453125 + }, + { + "x": 1198.7764892578125, + "y": 679.4530029296875 + }, + { + "x": 1197.702880859375, + "y": 703.6390380859375 + }, + { + "x": 1195.811767578125, + "y": 727.6444702148438 + }, + { + "x": 1172.7410888671875, + "y": 575.3829956054688 + }, + { + "x": 1173.438232421875, + "y": 601.6796264648438 + }, + { + "x": 1172.6981201171875, + "y": 629.5404663085938 + }, + { + "x": 1170.8807373046875, + "y": 653.6700439453125 + }, + { + "x": 1172.2891845703125, + "y": 679.7407836914062 + }, + { + "x": 1170.2637939453125, + "y": 703.3517456054688 + }, + { + "x": 1169.63232421875, + "y": 727.0330200195312 + }, + { + "x": 1143.7567138671875, + "y": 574.0113525390625 + }, + { + "x": 1144.3310546875, + "y": 603.042724609375 + }, + { + "x": 1144.8267822265625, + "y": 628.6162719726562 + }, + { + "x": 1146.44384765625, + "y": 654.4807739257812 + }, + { + "x": 1144.2626953125, + "y": 678.9124755859375 + }, + { + "x": 1144.45751953125, + "y": 702.6747436523438 + }, + { + "x": 1143.5079345703125, + "y": 727.7706909179688 + }, + { + "x": 1115.715087890625, + "y": 575.1383666992188 + }, + { + "x": 1116.2213134765625, + "y": 601.6367797851562 + }, + { + "x": 1117.5770263671875, + "y": 628.0667114257812 + }, + { + "x": 1115.9793701171875, + "y": 653.0325317382812 + }, + { + "x": 1117.82568359375, + "y": 679.4888916015625 + }, + { + "x": 1118.7318115234375, + "y": 703.77783203125 + }, + { + "x": 1116.934814453125, + "y": 726.5748901367188 + }, + { + "x": 1086.0816650390625, + "y": 574.3197631835938 + }, + { + "x": 1088.7049560546875, + "y": 602.36767578125 + }, + { + "x": 1089.554443359375, + "y": 628.916748046875 + }, + { + "x": 1090.584716796875, + "y": 653.3575439453125 + }, + { + "x": 1088.3858642578125, + "y": 677.3890380859375 + }, + { + "x": 1089.70654296875, + "y": 703.65087890625 + }, + { + "x": 1089.928466796875, + "y": 726.2312622070312 + }, + { + "x": 1057.6002197265625, + "y": 575.10302734375 + }, + { + "x": 1059.911376953125, + "y": 601.6110229492188 + }, + { + "x": 1061.1934814453125, + "y": 628.1804809570312 + }, + { + "x": 1060.7694091796875, + "y": 653.1099853515625 + }, + { + "x": 1063.7088623046875, + "y": 677.630859375 + }, + { + "x": 1063.4755859375, + "y": 702.077880859375 + }, + { + "x": 1063.967529296875, + "y": 723.9472045898438 + } + ], + "reprojectionErrors": [ + { + "x": -1.5850830078125, + "y": 2.105224609375 + }, + { + "x": -0.3946533203125, + "y": 0.48687744140625 + }, + { + "x": -0.8409423828125, + "y": -0.62274169921875 + }, + { + "x": 1.82177734375, + "y": -0.72796630859375 + }, + { + "x": -0.139404296875, + "y": 0.7239990234375 + }, + { + "x": 2.7789306640625, + "y": -0.39422607421875 + }, + { + "x": 5.712158203125, + "y": 0.25262451171875 + }, + { + "x": -0.659912109375, + "y": 2.5286865234375 + }, + { + "x": -1.796142578125, + "y": -0.08831787109375 + }, + { + "x": -0.69287109375, + "y": -0.9599609375 + }, + { + "x": -2.4146728515625, + "y": -0.24822998046875 + }, + { + "x": 0.1214599609375, + "y": -1.625732421875 + }, + { + "x": 0.7769775390625, + "y": -0.5438232421875 + }, + { + "x": 2.251708984375, + "y": 0.58209228515625 + }, + { + "x": -0.2882080078125, + "y": 0.2266845703125 + }, + { + "x": -1.3330078125, + "y": -0.3302001953125 + }, + { + "x": -0.939208984375, + "y": -2.59112548828125 + }, + { + "x": 0.533447265625, + "y": -1.2596435546875 + }, + { + "x": -1.2183837890625, + "y": -2.00701904296875 + }, + { + "x": 0.465087890625, + "y": -0.43133544921875 + }, + { + "x": 0.756103515625, + "y": 0.9383544921875 + }, + { + "x": 0.775634765625, + "y": 1.861572265625 + }, + { + "x": -0.0697021484375, + "y": -1.51239013671875 + }, + { + "x": -0.8353271484375, + "y": -1.5675048828125 + }, + { + "x": -2.7213134765625, + "y": -2.051513671875 + }, + { + "x": -0.807861328125, + "y": -1.23956298828125 + }, + { + "x": -1.26953125, + "y": 0.10595703125 + }, + { + "x": -0.5855712890625, + "y": -0.01708984375 + }, + { + "x": 1.103515625, + "y": 1.0203857421875 + }, + { + "x": 0.4019775390625, + "y": 0.0994873046875 + }, + { + "x": -1.1483154296875, + "y": -0.8909912109375 + }, + { + "x": 0.25537109375, + "y": -0.55450439453125 + }, + { + "x": -1.7841796875, + "y": -1.84454345703125 + }, + { + "x": -2.8828125, + "y": -1.10223388671875 + }, + { + "x": -1.2777099609375, + "y": 0.99798583984375 + }, + { + "x": 3.2218017578125, + "y": 2.14727783203125 + }, + { + "x": 0.4779052734375, + "y": -0.4005126953125 + }, + { + "x": -0.491943359375, + "y": -1.5867919921875 + }, + { + "x": -1.6422119140625, + "y": -0.801025390625 + }, + { + "x": 0.4368896484375, + "y": 0.25872802734375 + }, + { + "x": -1.003173828125, + "y": -1.0460205078125 + }, + { + "x": -1.34423828125, + "y": 1.19744873046875 + }, + { + "x": 4.3782958984375, + "y": 1.69464111328125 + }, + { + "x": 2.0201416015625, + "y": 0.6116943359375 + }, + { + "x": 0.6910400390625, + "y": -0.669189453125 + }, + { + "x": 1.068115234375, + "y": -0.44561767578125 + }, + { + "x": -1.91845703125, + "y": 0.0521240234375 + }, + { + "x": -1.7322998046875, + "y": 0.49029541015625 + }, + { + "x": -2.271484375, + "y": 3.3736572265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.6035595343680658, + "y": 0.16330433227323393, + "z": 1.05773261016986 + }, + "rotation": { + "quaternion": { + "W": 0.71800083105893, + "X": 0.08696233389811368, + "Y": 0.004008603427882707, + "Z": 0.6905767808001054 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img37.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img37.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 885.52978515625, + "y": 450.7818908691406 + }, + { + "x": 913.6175537109375, + "y": 450.93499755859375 + }, + { + "x": 942.6361083984375, + "y": 453.79095458984375 + }, + { + "x": 972.3140869140625, + "y": 453.26715087890625 + }, + { + "x": 1000.8661499023438, + "y": 455.5247497558594 + }, + { + "x": 1029.6279296875, + "y": 454.77264404296875 + }, + { + "x": 1058.5728759765625, + "y": 456.94854736328125 + }, + { + "x": 886.3438720703125, + "y": 478.6834411621094 + }, + { + "x": 914.9700317382812, + "y": 480.6802978515625 + }, + { + "x": 943.3804931640625, + "y": 480.7376708984375 + }, + { + "x": 971.517822265625, + "y": 483.4988098144531 + }, + { + "x": 1000.7494506835938, + "y": 483.2698974609375 + }, + { + "x": 1029.6290283203125, + "y": 484.8011474609375 + }, + { + "x": 1057.74609375, + "y": 485.3692932128906 + }, + { + "x": 886.7350463867188, + "y": 507.6169738769531 + }, + { + "x": 914.8034057617188, + "y": 508.5276184082031 + }, + { + "x": 943.5048217773438, + "y": 509.6438293457031 + }, + { + "x": 971.2388916015625, + "y": 510.366455078125 + }, + { + "x": 999.9443969726562, + "y": 512.652587890625 + }, + { + "x": 1028.2064208984375, + "y": 512.6627807617188 + }, + { + "x": 1056.410888671875, + "y": 514.7333374023438 + }, + { + "x": 886.5068969726562, + "y": 534.824462890625 + }, + { + "x": 915.3582763671875, + "y": 536.1203002929688 + }, + { + "x": 941.9027709960938, + "y": 536.2102661132812 + }, + { + "x": 972.313720703125, + "y": 538.7240600585938 + }, + { + "x": 998.425048828125, + "y": 539.4647216796875 + }, + { + "x": 1028.4302978515625, + "y": 540.8953247070312 + }, + { + "x": 1054.7261962890625, + "y": 541.8047485351562 + }, + { + "x": 887.9954223632812, + "y": 560.7443237304688 + }, + { + "x": 913.8932495117188, + "y": 562.2725219726562 + }, + { + "x": 942.751708984375, + "y": 564.9525146484375 + }, + { + "x": 970.6127319335938, + "y": 565.9568481445312 + }, + { + "x": 998.646240234375, + "y": 567.7447509765625 + }, + { + "x": 1026.38037109375, + "y": 568.4035034179688 + }, + { + "x": 1055.343017578125, + "y": 568.5460815429688 + }, + { + "x": 887.1537475585938, + "y": 588.6141357421875 + }, + { + "x": 913.8616333007812, + "y": 590.627197265625 + }, + { + "x": 941.5658569335938, + "y": 590.3989868164062 + }, + { + "x": 970.323486328125, + "y": 592.0086669921875 + }, + { + "x": 996.5498046875, + "y": 593.3862915039062 + }, + { + "x": 1024.7332763671875, + "y": 595.4229736328125 + }, + { + "x": 1051.802734375, + "y": 596.3327026367188 + }, + { + "x": 886.636474609375, + "y": 613.1931762695312 + }, + { + "x": 913.45458984375, + "y": 615.2991333007812 + }, + { + "x": 941.4906005859375, + "y": 617.255859375 + }, + { + "x": 968.6315307617188, + "y": 619.0567626953125 + }, + { + "x": 996.3531494140625, + "y": 619.7050170898438 + }, + { + "x": 1023.4664916992188, + "y": 621.7485961914062 + }, + { + "x": 1049.7430419921875, + "y": 623.48193359375 + } + ], + "reprojectionErrors": [ + { + "x": 3.29296875, + "y": 1.82159423828125 + }, + { + "x": 3.0069580078125, + "y": 2.5306396484375 + }, + { + "x": 1.9371337890625, + "y": 0.541351318359375 + }, + { + "x": 0.35595703125, + "y": 1.936370849609375 + }, + { + "x": 0.0498046875, + "y": 0.5545654296875 + }, + { + "x": -0.3157958984375, + "y": 2.187103271484375 + }, + { + "x": -0.7132568359375, + "y": 0.896270751953125 + }, + { + "x": 1.70574951171875, + "y": 1.079010009765625 + }, + { + "x": 0.87298583984375, + "y": 0.015777587890625 + }, + { + "x": 0.40277099609375, + "y": 0.89691162109375 + }, + { + "x": 0.35369873046875, + "y": -0.92083740234375 + }, + { + "x": -0.64068603515625, + "y": 0.256439208984375 + }, + { + "x": -1.1328125, + "y": -0.321502685546875 + }, + { + "x": -0.7110595703125, + "y": 0.068695068359375 + }, + { + "x": 0.555908203125, + "y": -0.6998291015625 + }, + { + "x": 0.27484130859375, + "y": -0.60528564453125 + }, + { + "x": -0.49237060546875, + "y": -0.71112060546875 + }, + { + "x": -0.1444091796875, + "y": -0.418121337890625 + }, + { + "x": -0.61883544921875, + "y": -1.683319091796875 + }, + { + "x": -0.4996337890625, + "y": -0.667236328125 + }, + { + "x": -0.1717529296875, + "y": -1.7061767578125 + }, + { + "x": 0.03961181640625, + "y": -0.75006103515625 + }, + { + "x": -1.0281982421875, + "y": -0.96917724609375 + }, + { + "x": 0.35772705078125, + "y": 0.023193359375 + }, + { + "x": -1.97491455078125, + "y": -1.40264892578125 + }, + { + "x": 0.1409912109375, + "y": -1.0496826171875 + }, + { + "x": -1.4869384765625, + "y": -1.38104248046875 + }, + { + "x": 0.7457275390625, + "y": -1.1854248046875 + }, + { + "x": -2.1793212890625, + "y": 0.4964599609375 + }, + { + "x": -0.294921875, + "y": 0.11676025390625 + }, + { + "x": -1.224365234375, + "y": -1.40887451171875 + }, + { + "x": -1.008544921875, + "y": -1.2528076171875 + }, + { + "x": -0.816162109375, + "y": -1.87432861328125 + }, + { + "x": -0.17431640625, + "y": -1.36065673828125 + }, + { + "x": -0.60986328125, + "y": -0.32470703125 + }, + { + "x": -2.05413818359375, + "y": -0.19097900390625 + }, + { + "x": -0.9788818359375, + "y": -0.98370361328125 + }, + { + "x": -0.753173828125, + "y": 0.47113037109375 + }, + { + "x": -1.43292236328125, + "y": 0.0943603515625 + }, + { + "x": 0.567626953125, + "y": -0.0439453125 + }, + { + "x": 0.7611083984375, + "y": -0.8349609375 + }, + { + "x": 2.2198486328125, + "y": -0.49249267578125 + }, + { + "x": -2.23974609375, + "y": 2.4349365234375 + }, + { + "x": -1.27142333984375, + "y": 1.62139892578125 + }, + { + "x": -1.3741455078125, + "y": 0.96368408203125 + }, + { + "x": -0.433837890625, + "y": 0.46844482421875 + }, + { + "x": 0.0748291015625, + "y": 1.132568359375 + }, + { + "x": 1.34185791015625, + "y": 0.408203125 + }, + { + "x": 3.5970458984375, + "y": 9.1552734375E-4 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.273343313916894, + "y": 0.045626829973576005, + "z": 1.0371532498488945 + }, + "rotation": { + "quaternion": { + "W": 0.9984612734838878, + "X": -0.0011231064014766453, + "Y": 0.053765429599862524, + "Z": 0.013531539634724232 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img38.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img38.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 628.587646484375, + "y": 384.6054992675781 + }, + { + "x": 655.15673828125, + "y": 386.5004577636719 + }, + { + "x": 679.9541015625, + "y": 389.4437561035156 + }, + { + "x": 705.8199462890625, + "y": 390.3450927734375 + }, + { + "x": 731.4539184570312, + "y": 394.157958984375 + }, + { + "x": 758.3662719726562, + "y": 395.1163635253906 + }, + { + "x": 784.5150756835938, + "y": 398.2936096191406 + }, + { + "x": 630.424560546875, + "y": 409.6528625488281 + }, + { + "x": 655.1498413085938, + "y": 412.30633544921875 + }, + { + "x": 680.4710693359375, + "y": 414.032958984375 + }, + { + "x": 704.9700317382812, + "y": 417.54730224609375 + }, + { + "x": 731.49072265625, + "y": 418.74658203125 + }, + { + "x": 757.7010498046875, + "y": 421.52276611328125 + }, + { + "x": 783.6927490234375, + "y": 423.4673156738281 + }, + { + "x": 630.1673583984375, + "y": 434.4957580566406 + }, + { + "x": 655.5426635742188, + "y": 437.56610107421875 + }, + { + "x": 680.0521850585938, + "y": 439.1182861328125 + }, + { + "x": 705.48876953125, + "y": 441.84210205078125 + }, + { + "x": 730.6768798828125, + "y": 444.7415466308594 + }, + { + "x": 756.5714721679688, + "y": 446.62841796875 + }, + { + "x": 782.4736328125, + "y": 449.7716064453125 + }, + { + "x": 629.811767578125, + "y": 459.2293395996094 + }, + { + "x": 655.6254272460938, + "y": 461.1410827636719 + }, + { + "x": 678.6063232421875, + "y": 463.3439636230469 + }, + { + "x": 705.7487182617188, + "y": 466.90887451171875 + }, + { + "x": 729.2034912109375, + "y": 468.76092529296875 + }, + { + "x": 757.5699462890625, + "y": 471.2129211425781 + }, + { + "x": 781.1773681640625, + "y": 474.3714294433594 + }, + { + "x": 631.18994140625, + "y": 482.50927734375 + }, + { + "x": 653.1799926757812, + "y": 484.7398376464844 + }, + { + "x": 679.760009765625, + "y": 488.5435485839844 + }, + { + "x": 704.2428588867188, + "y": 491.3966979980469 + }, + { + "x": 729.4644165039062, + "y": 494.5876770019531 + }, + { + "x": 754.6461181640625, + "y": 496.52581787109375 + }, + { + "x": 781.7190551757812, + "y": 498.33868408203125 + }, + { + "x": 630.3248291015625, + "y": 507.0519104003906 + }, + { + "x": 653.7490844726562, + "y": 510.6361083984375 + }, + { + "x": 679.58203125, + "y": 512.9078979492188 + }, + { + "x": 704.4613037109375, + "y": 514.5918579101562 + }, + { + "x": 728.774658203125, + "y": 518.5244750976562 + }, + { + "x": 753.7932739257812, + "y": 521.5758666992188 + }, + { + "x": 779.5438842773438, + "y": 524.3051147460938 + }, + { + "x": 630.9462280273438, + "y": 529.336181640625 + }, + { + "x": 653.7890014648438, + "y": 533.0285034179688 + }, + { + "x": 679.0992431640625, + "y": 536.3299560546875 + }, + { + "x": 703.3219604492188, + "y": 539.53125 + }, + { + "x": 727.9681396484375, + "y": 542.0730590820312 + }, + { + "x": 752.8681030273438, + "y": 544.9922485351562 + }, + { + "x": 777.7362670898438, + "y": 548.6182861328125 + } + ], + "reprojectionErrors": [ + { + "x": 1.76580810546875, + "y": 0.547119140625 + }, + { + "x": -0.0272216796875, + "y": 0.654205322265625 + }, + { + "x": 0.3328857421875, + "y": -0.25653076171875 + }, + { + "x": 0.0146484375, + "y": 0.90594482421875 + }, + { + "x": 0.32757568359375, + "y": -0.8111572265625 + }, + { + "x": -0.229248046875, + "y": 0.358917236328125 + }, + { + "x": 0.39569091796875, + "y": -0.6563720703125 + }, + { + "x": 0.02447509765625, + "y": 0.320037841796875 + }, + { + "x": -0.08489990234375, + "y": -0.15618896484375 + }, + { + "x": -0.413818359375, + "y": 0.327392578125 + }, + { + "x": 0.46453857421875, + "y": -0.942962646484375 + }, + { + "x": -0.2847900390625, + "y": 0.13623046875 + }, + { + "x": -0.3206787109375, + "y": -0.326141357421875 + }, + { + "x": 0.274658203125, + "y": 0.079254150390625 + }, + { + "x": 0.34954833984375, + "y": 0.003814697265625 + }, + { + "x": -0.56646728515625, + "y": -0.718414306640625 + }, + { + "x": -0.2451171875, + "y": 0.112884521484375 + }, + { + "x": -0.470703125, + "y": -0.191314697265625 + }, + { + "x": -0.05902099609375, + "y": -0.6341552734375 + }, + { + "x": 0.04400634765625, + "y": -0.026580810546875 + }, + { + "x": 0.5465087890625, + "y": -0.636627197265625 + }, + { + "x": 0.745849609375, + "y": -0.485992431640625 + }, + { + "x": -0.76171875, + "y": 0.117156982421875 + }, + { + "x": 0.9305419921875, + "y": 0.466796875 + }, + { + "x": -1.1634521484375, + "y": -0.50714111328125 + }, + { + "x": 0.81396484375, + "y": 0.271148681640625 + }, + { + "x": -1.72760009765625, + "y": 0.48974609375 + }, + { + "x": 0.8916015625, + "y": 0.042999267578125 + }, + { + "x": -0.618408203125, + "y": 0.205230712890625 + }, + { + "x": 1.5479736328125, + "y": 0.652435302734375 + }, + { + "x": -0.51312255859375, + "y": -0.4337158203125 + }, + { + "x": -0.10650634765625, + "y": -0.528594970703125 + }, + { + "x": -0.0595703125, + "y": -0.919677734375 + }, + { + "x": 0.41485595703125, + "y": -0.015350341796875 + }, + { + "x": -0.6053466796875, + "y": 1.057769775390625 + }, + { + "x": 0.23443603515625, + "y": -0.62884521484375 + }, + { + "x": 0.82025146484375, + "y": -1.37615966796875 + }, + { + "x": -0.64459228515625, + "y": -0.7691650390625 + }, + { + "x": -0.7896728515625, + "y": 0.46856689453125 + }, + { + "x": 0.00543212890625, + "y": -0.49859619140625 + }, + { + "x": 0.47808837890625, + "y": -0.53973388671875 + }, + { + "x": 0.61029052734375, + "y": -0.212890625 + }, + { + "x": -0.42498779296875, + "y": 0.54241943359375 + }, + { + "x": 0.59912109375, + "y": -0.157470703125 + }, + { + "x": -0.49041748046875, + "y": -0.42254638671875 + }, + { + "x": -0.13079833984375, + "y": -0.54248046875 + }, + { + "x": 0.17510986328125, + "y": 0.04290771484375 + }, + { + "x": 0.6053466796875, + "y": 0.29791259765625 + }, + { + "x": 1.4539794921875, + "y": -0.10589599609375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.03290481110515767, + "y": -0.018269320271124077, + "z": 1.0893144034297764 + }, + "rotation": { + "quaternion": { + "W": 0.9762230788433424, + "X": 0.13455609965264126, + "Y": 0.1689064061496287, + "Z": 0.01880910262374518 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img39.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img39.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 627.222900390625, + "y": 271.0493469238281 + }, + { + "x": 655.2750244140625, + "y": 271.6114807128906 + }, + { + "x": 679.6404418945312, + "y": 272.66888427734375 + }, + { + "x": 707.0914916992188, + "y": 272.33477783203125 + }, + { + "x": 733.2489624023438, + "y": 273.89501953125 + }, + { + "x": 760.8787231445312, + "y": 273.8636474609375 + }, + { + "x": 787.543212890625, + "y": 275.7183532714844 + }, + { + "x": 630.122314453125, + "y": 297.51763916015625 + }, + { + "x": 655.3305053710938, + "y": 298.2489929199219 + }, + { + "x": 682.0429077148438, + "y": 298.6262512207031 + }, + { + "x": 706.40185546875, + "y": 300.5570373535156 + }, + { + "x": 734.7714233398438, + "y": 300.53680419921875 + }, + { + "x": 760.945068359375, + "y": 301.7894287109375 + }, + { + "x": 788.6702270507812, + "y": 302.2862548828125 + }, + { + "x": 630.5946655273438, + "y": 323.4872741699219 + }, + { + "x": 656.882080078125, + "y": 324.7873840332031 + }, + { + "x": 682.6261596679688, + "y": 325.0434875488281 + }, + { + "x": 708.6619262695312, + "y": 326.5145568847656 + }, + { + "x": 734.3826904296875, + "y": 328.3247375488281 + }, + { + "x": 761.8082275390625, + "y": 328.53240966796875 + }, + { + "x": 788.0571899414062, + "y": 330.305419921875 + }, + { + "x": 631.2308959960938, + "y": 349.70843505859375 + }, + { + "x": 657.3550415039062, + "y": 350.5165100097656 + }, + { + "x": 682.0098266601562, + "y": 350.7510070800781 + }, + { + "x": 709.71044921875, + "y": 353.14306640625 + }, + { + "x": 734.4164428710938, + "y": 353.8803405761719 + }, + { + "x": 763.4446411132812, + "y": 354.6224670410156 + }, + { + "x": 788.4379272460938, + "y": 356.5332336425781 + }, + { + "x": 632.4990844726562, + "y": 375.3482666015625 + }, + { + "x": 657.373046875, + "y": 376.0874328613281 + }, + { + "x": 683.570068359375, + "y": 378.0457458496094 + }, + { + "x": 709.3907470703125, + "y": 379.3331604003906 + }, + { + "x": 735.30615234375, + "y": 381.2084655761719 + }, + { + "x": 762.2455444335938, + "y": 382.0987243652344 + }, + { + "x": 789.8032836914062, + "y": 382.4683532714844 + }, + { + "x": 633.5501708984375, + "y": 401.0778503417969 + }, + { + "x": 657.6246337890625, + "y": 403.2430114746094 + }, + { + "x": 685.2352905273438, + "y": 404.365966796875 + }, + { + "x": 710.6856079101562, + "y": 403.5643310546875 + }, + { + "x": 735.5369262695312, + "y": 406.4809875488281 + }, + { + "x": 761.7196044921875, + "y": 408.65478515625 + }, + { + "x": 789.0177612304688, + "y": 410.2010803222656 + }, + { + "x": 635.0272216796875, + "y": 424.40863037109375 + }, + { + "x": 658.5972290039062, + "y": 427.38043212890625 + }, + { + "x": 684.7222900390625, + "y": 429.2584228515625 + }, + { + "x": 710.5416870117188, + "y": 431.3786926269531 + }, + { + "x": 736.30029296875, + "y": 432.1491394042969 + }, + { + "x": 762.3600463867188, + "y": 434.6517028808594 + }, + { + "x": 788.0283203125, + "y": 436.74530029296875 + } + ], + "reprojectionErrors": [ + { + "x": 1.503173828125, + "y": 0.202545166015625 + }, + { + "x": -0.9986572265625, + "y": 0.110626220703125 + }, + { + "x": 0.641845703125, + "y": -0.468414306640625 + }, + { + "x": -0.33538818359375, + "y": 0.352447509765625 + }, + { + "x": 0.46148681640625, + "y": -0.712371826171875 + }, + { + "x": 0.27978515625, + "y": -0.1767578125 + }, + { + "x": 1.57049560546875, + "y": -1.518096923828125 + }, + { + "x": -0.21148681640625, + "y": 0.215728759765625 + }, + { + "x": -0.0430908203125, + "y": 0.183380126953125 + }, + { + "x": -0.92962646484375, + "y": 0.51727294921875 + }, + { + "x": 0.99847412109375, + "y": -0.689910888671875 + }, + { + "x": -0.61041259765625, + "y": 0.066741943359375 + }, + { + "x": 0.46307373046875, + "y": -0.43634033203125 + }, + { + "x": 0.48480224609375, + "y": -0.17010498046875 + }, + { + "x": 0.45404052734375, + "y": 0.37188720703125 + }, + { + "x": -0.6265869140625, + "y": -0.0067138671875 + }, + { + "x": -0.7208251953125, + "y": 0.67462158203125 + }, + { + "x": -0.65191650390625, + "y": 0.1573486328125 + }, + { + "x": 0.1988525390625, + "y": -0.6822509765625 + }, + { + "x": -0.1756591796875, + "y": 0.097930908203125 + }, + { + "x": 1.118896484375, + "y": -0.669525146484375 + }, + { + "x": 0.9100341796875, + "y": -0.066131591796875 + }, + { + "x": -0.17327880859375, + "y": 0.263763427734375 + }, + { + "x": 0.6497802734375, + "y": 1.18682861328125 + }, + { + "x": -1.12445068359375, + "y": -0.027557373046875 + }, + { + "x": 0.55633544921875, + "y": 0.433441162109375 + }, + { + "x": -1.61236572265625, + "y": 0.910797119140625 + }, + { + "x": 0.73931884765625, + "y": 0.241241455078125 + }, + { + "x": 0.68963623046875, + "y": -0.25299072265625 + }, + { + "x": 0.69415283203125, + "y": 0.356597900390625 + }, + { + "x": -0.193115234375, + "y": -0.229888916015625 + }, + { + "x": -0.2615966796875, + "y": -0.121826171875 + }, + { + "x": 0.029296875, + "y": -0.57733154296875 + }, + { + "x": -0.2376708984375, + "y": -0.022857666015625 + }, + { + "x": -0.64434814453125, + "y": 1.077850341796875 + }, + { + "x": 0.64300537109375, + "y": -0.847625732421875 + }, + { + "x": 1.288330078125, + "y": -1.458740234375 + }, + { + "x": -1.177001953125, + "y": -1.001220703125 + }, + { + "x": -1.04534912109375, + "y": 1.407989501953125 + }, + { + "x": 0.13330078125, + "y": 0.126708984375 + }, + { + "x": 0.44036865234375, + "y": -0.383148193359375 + }, + { + "x": 0.1038818359375, + "y": -0.2362060546875 + }, + { + "x": 0.128173828125, + "y": 0.650054931640625 + }, + { + "x": 1.1226806640625, + "y": -0.567626953125 + }, + { + "x": -0.0177001953125, + "y": -0.661834716796875 + }, + { + "x": -0.42156982421875, + "y": -0.967926025390625 + }, + { + "x": -0.32257080078125, + "y": 0.10699462890625 + }, + { + "x": -0.07110595703125, + "y": -0.5181884765625 + }, + { + "x": 1.03741455078125, + "y": -0.701568603515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.030047549116191802, + "y": -0.1248211126323689, + "z": 1.0455785865073277 + }, + "rotation": { + "quaternion": { + "W": 0.9714813543385665, + "X": 0.14722723193361337, + "Y": 0.1858493335120013, + "Z": 0.0028540467437464367 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img40.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img40.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 489.1377868652344, + "y": 400.033935546875 + }, + { + "x": 486.52392578125, + "y": 377.70098876953125 + }, + { + "x": 484.8687744140625, + "y": 352.8045349121094 + }, + { + "x": 482.5280456542969, + "y": 329.2525634765625 + }, + { + "x": 480.6841735839844, + "y": 304.26348876953125 + }, + { + "x": 479.1278076171875, + "y": 279.8487548828125 + }, + { + "x": 475.5478210449219, + "y": 255.0867156982422 + }, + { + "x": 510.8506774902344, + "y": 402.1822814941406 + }, + { + "x": 508.2391357421875, + "y": 378.9498596191406 + }, + { + "x": 506.39129638671875, + "y": 352.93853759765625 + }, + { + "x": 505.9306945800781, + "y": 328.494384765625 + }, + { + "x": 504.1372985839844, + "y": 304.8173828125 + }, + { + "x": 501.7784118652344, + "y": 279.4220275878906 + }, + { + "x": 500.5831604003906, + "y": 254.56396484375 + }, + { + "x": 534.0661010742188, + "y": 402.406494140625 + }, + { + "x": 532.8241577148438, + "y": 378.7381286621094 + }, + { + "x": 530.162109375, + "y": 354.38116455078125 + }, + { + "x": 527.6100463867188, + "y": 328.2437744140625 + }, + { + "x": 528.1533813476562, + "y": 303.25762939453125 + }, + { + "x": 525.4173583984375, + "y": 279.21343994140625 + }, + { + "x": 522.8779296875, + "y": 254.27249145507812 + }, + { + "x": 557.4766845703125, + "y": 404.0072937011719 + }, + { + "x": 556.322021484375, + "y": 377.3977966308594 + }, + { + "x": 554.1763305664062, + "y": 354.5489807128906 + }, + { + "x": 552.8226928710938, + "y": 329.4970703125 + }, + { + "x": 550.9397583007812, + "y": 304.6316223144531 + }, + { + "x": 547.5523681640625, + "y": 279.66448974609375 + }, + { + "x": 547.2332763671875, + "y": 253.23728942871094 + }, + { + "x": 581.0973510742188, + "y": 403.8359680175781 + }, + { + "x": 579.3168334960938, + "y": 379.5827331542969 + }, + { + "x": 577.2544555664062, + "y": 355.2867736816406 + }, + { + "x": 575.5347900390625, + "y": 329.49896240234375 + }, + { + "x": 574.4122314453125, + "y": 304.4307556152344 + }, + { + "x": 573.3524780273438, + "y": 278.5794677734375 + }, + { + "x": 570.9346923828125, + "y": 253.52203369140625 + }, + { + "x": 605.5054931640625, + "y": 405.7362060546875 + }, + { + "x": 603.3614501953125, + "y": 380.5722961425781 + }, + { + "x": 602.7515869140625, + "y": 355.45159912109375 + }, + { + "x": 602.9172973632812, + "y": 328.2807922363281 + }, + { + "x": 599.59375, + "y": 304.3236999511719 + }, + { + "x": 597.3323364257812, + "y": 278.5097961425781 + }, + { + "x": 596.49169921875, + "y": 252.30409240722656 + }, + { + "x": 628.3522338867188, + "y": 406.9858093261719 + }, + { + "x": 629.1138916015625, + "y": 381.5101013183594 + }, + { + "x": 628.5860595703125, + "y": 354.0375671386719 + }, + { + "x": 625.4476318359375, + "y": 330.09710693359375 + }, + { + "x": 623.9727783203125, + "y": 304.4891662597656 + }, + { + "x": 623.2652587890625, + "y": 278.3183898925781 + }, + { + "x": 620.9485473632812, + "y": 252.7678680419922 + } + ], + "reprojectionErrors": [ + { + "x": -0.463653564453125, + "y": 1.184539794921875 + }, + { + "x": 0.133392333984375, + "y": -0.2677001953125 + }, + { + "x": -0.251251220703125, + "y": 0.56744384765625 + }, + { + "x": 0.026275634765625, + "y": -0.2227783203125 + }, + { + "x": -0.216827392578125, + "y": 0.1383056640625 + }, + { + "x": -0.771636962890625, + "y": -0.365692138671875 + }, + { + "x": 0.67254638671875, + "y": -0.8182830810546875 + }, + { + "x": 0.542694091796875, + "y": -0.337677001953125 + }, + { + "x": 1.255584716796875, + "y": -1.048736572265625 + }, + { + "x": 1.1829833984375, + "y": 0.739227294921875 + }, + { + "x": -0.29901123046875, + "y": 0.675262451171875 + }, + { + "x": -0.47076416015625, + "y": -0.445526123046875 + }, + { + "x": -0.099945068359375, + "y": -0.142791748046875 + }, + { + "x": -0.9161376953125, + "y": -0.6773681640625 + }, + { + "x": 0.32586669921875, + "y": 0.09490966796875 + }, + { + "x": -0.2095947265625, + "y": -0.342193603515625 + }, + { + "x": 0.65460205078125, + "y": -0.374420166015625 + }, + { + "x": 1.38787841796875, + "y": 1.0850830078125 + }, + { + "x": -0.9954833984375, + "y": 1.099578857421875 + }, + { + "x": -0.12109375, + "y": -0.12689208984375 + }, + { + "x": 0.53460693359375, + "y": -0.7608795166015625 + }, + { + "x": 0.20379638671875, + "y": -0.817657470703125 + }, + { + "x": -0.2943115234375, + "y": 1.520599365234375 + }, + { + "x": 0.1793212890625, + "y": -0.189483642578125 + }, + { + "x": -0.1585693359375, + "y": 0.010711669921875 + }, + { + "x": 0.01287841796875, + "y": -0.273468017578125 + }, + { + "x": 1.6685791015625, + "y": -0.75927734375 + }, + { + "x": 0.2353515625, + "y": -0.09375 + }, + { + "x": 0.172607421875, + "y": 0.07415771484375 + }, + { + "x": 0.42840576171875, + "y": -0.113494873046875 + }, + { + "x": 0.9481201171875, + "y": -0.550201416015625 + }, + { + "x": 1.1070556640625, + "y": 0.207977294921875 + }, + { + "x": 0.65032958984375, + "y": -0.05572509765625 + }, + { + "x": 0.11199951171875, + "y": 0.155914306640625 + }, + { + "x": 0.91253662109375, + "y": -0.7395782470703125 + }, + { + "x": -0.33349609375, + "y": -1.072509765625 + }, + { + "x": 0.41741943359375, + "y": -0.523101806640625 + }, + { + "x": -0.38226318359375, + "y": -0.312957763671875 + }, + { + "x": -1.9742431640625, + "y": 1.64599609375 + }, + { + "x": -0.093994140625, + "y": 0.084503173828125 + }, + { + "x": 0.70684814453125, + "y": 0.0675048828125 + }, + { + "x": 0.0692138671875, + "y": 0.12432861328125 + }, + { + "x": 1.046142578125, + "y": -1.5345458984375 + }, + { + "x": -0.97320556640625, + "y": -0.85113525390625 + }, + { + "x": -1.71795654296875, + "y": 1.52874755859375 + }, + { + "x": 0.13262939453125, + "y": 0.07073974609375 + }, + { + "x": 0.30419921875, + "y": -0.031097412109375 + }, + { + "x": -0.30731201171875, + "y": 0.112823486328125 + }, + { + "x": 0.67431640625, + "y": -0.68634033203125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.11236585784014666, + "y": -0.00264329788884525, + "z": 1.150106886962096 + }, + "rotation": { + "quaternion": { + "W": 0.6865762852323348, + "X": -0.018101384829758867, + "Y": 0.2073360701277331, + "Z": -0.6966326854575519 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img41.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img41.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 375.0994567871094, + "y": 192.1158905029297 + }, + { + "x": 398.5006103515625, + "y": 191.51687622070312 + }, + { + "x": 418.341552734375, + "y": 189.93972778320312 + }, + { + "x": 441.34344482421875, + "y": 188.26283264160156 + }, + { + "x": 463.2138366699219, + "y": 187.8253631591797 + }, + { + "x": 487.3050537109375, + "y": 186.120361328125 + }, + { + "x": 509.6339111328125, + "y": 185.64076232910156 + }, + { + "x": 378.16815185546875, + "y": 215.78018188476562 + }, + { + "x": 398.71734619140625, + "y": 214.46798706054688 + }, + { + "x": 421.1929016113281, + "y": 213.36825561523438 + }, + { + "x": 441.60626220703125, + "y": 212.92465209960938 + }, + { + "x": 465.7272033691406, + "y": 211.412353515625 + }, + { + "x": 488.3780212402344, + "y": 210.34237670898438 + }, + { + "x": 512.3216552734375, + "y": 209.8272247314453 + }, + { + "x": 379.4930419921875, + "y": 238.48092651367188 + }, + { + "x": 401.1523132324219, + "y": 238.19561767578125 + }, + { + "x": 422.5862121582031, + "y": 236.57078552246094 + }, + { + "x": 444.83154296875, + "y": 236.62210083007812 + }, + { + "x": 466.61224365234375, + "y": 235.59259033203125 + }, + { + "x": 490.270263671875, + "y": 234.81837463378906 + }, + { + "x": 512.828125, + "y": 234.34225463867188 + }, + { + "x": 381.04443359375, + "y": 262.2922058105469 + }, + { + "x": 402.42987060546875, + "y": 261.2163391113281 + }, + { + "x": 423.1003723144531, + "y": 259.8985900878906 + }, + { + "x": 446.46063232421875, + "y": 259.9272766113281 + }, + { + "x": 467.89031982421875, + "y": 259.1449279785156 + }, + { + "x": 492.49993896484375, + "y": 258.25213623046875 + }, + { + "x": 514.5406494140625, + "y": 258.4644775390625 + }, + { + "x": 383.1742248535156, + "y": 284.9441223144531 + }, + { + "x": 404.0874938964844, + "y": 284.4254455566406 + }, + { + "x": 425.26580810546875, + "y": 284.82275390625 + }, + { + "x": 447.9342956542969, + "y": 284.2478332519531 + }, + { + "x": 469.68505859375, + "y": 284.097900390625 + }, + { + "x": 493.647705078125, + "y": 283.5826416015625 + }, + { + "x": 517.1574096679688, + "y": 282.0926513671875 + }, + { + "x": 385.31732177734375, + "y": 308.683349609375 + }, + { + "x": 405.15142822265625, + "y": 308.84124755859375 + }, + { + "x": 427.9981384277344, + "y": 307.9083251953125 + }, + { + "x": 450.2419738769531, + "y": 306.30145263671875 + }, + { + "x": 471.82159423828125, + "y": 307.4579162597656 + }, + { + "x": 494.3662414550781, + "y": 307.3471374511719 + }, + { + "x": 518.3025512695312, + "y": 307.5171203613281 + }, + { + "x": 387.18768310546875, + "y": 330.40087890625 + }, + { + "x": 407.6378173828125, + "y": 331.2450256347656 + }, + { + "x": 429.42156982421875, + "y": 330.8255310058594 + }, + { + "x": 451.68035888671875, + "y": 331.7711486816406 + }, + { + "x": 473.2701110839844, + "y": 331.07720947265625 + }, + { + "x": 496.6623840332031, + "y": 331.7594909667969 + }, + { + "x": 518.1286010742188, + "y": 332.18408203125 + } + ], + "reprojectionErrors": [ + { + "x": 0.02392578125, + "y": -1.1265869140625 + }, + { + "x": -1.472503662109375, + "y": -1.4578857421875 + }, + { + "x": 0.81591796875, + "y": -0.8206024169921875 + }, + { + "x": 0.171478271484375, + "y": -0.0932769775390625 + }, + { + "x": 0.890045166015625, + "y": -0.615203857421875 + }, + { + "x": -0.3770751953125, + "y": 0.1204071044921875 + }, + { + "x": 0.356842041015625, + "y": -0.3795318603515625 + }, + { + "x": -0.980010986328125, + "y": -0.8533172607421875 + }, + { + "x": 0.2869873046875, + "y": -0.3458709716796875 + }, + { + "x": -0.149627685546875, + "y": -0.0591278076171875 + }, + { + "x": 1.7020263671875, + "y": -0.4368896484375 + }, + { + "x": 0.075592041015625, + "y": 0.24554443359375 + }, + { + "x": 0.15234375, + "y": 0.4770355224609375 + }, + { + "x": -0.827117919921875, + "y": 0.1449432373046875 + }, + { + "x": -0.291900634765625, + "y": 0.17437744140625 + }, + { + "x": -0.22149658203125, + "y": -0.2217254638671875 + }, + { + "x": 0.295135498046875, + "y": 0.7147216796875 + }, + { + "x": 0.224517822265625, + "y": -0.0320587158203125 + }, + { + "x": 0.846099853515625, + "y": 0.2947998046875 + }, + { + "x": -0.178619384765625, + "y": 0.3590545654296875 + }, + { + "x": 0.13134765625, + "y": 0.1178131103515625 + }, + { + "x": 0.118988037109375, + "y": -0.110015869140625 + }, + { + "x": 0.378692626953125, + "y": 0.4056396484375 + }, + { + "x": 1.572357177734375, + "y": 1.157440185546875 + }, + { + "x": 0.298583984375, + "y": 0.556976318359375 + }, + { + "x": 1.181060791015625, + "y": 0.761627197265625 + }, + { + "x": -0.8873291015625, + "y": 1.07073974609375 + }, + { + "x": -0.15423583984375, + "y": 0.268585205078125 + }, + { + "x": -0.09820556640625, + "y": 0.570770263671875 + }, + { + "x": 0.55108642578125, + "y": 0.64837646484375 + }, + { + "x": 1.152587890625, + "y": -0.19451904296875 + }, + { + "x": 0.48443603515625, + "y": -0.069793701171875 + }, + { + "x": 0.957794189453125, + "y": -0.374755859375 + }, + { + "x": -0.55352783203125, + "y": -0.319122314453125 + }, + { + "x": -1.38128662109375, + "y": 0.706451416015625 + }, + { + "x": -0.3773193359375, + "y": -0.0228271484375 + }, + { + "x": 1.27044677734375, + "y": -0.50457763671875 + }, + { + "x": 0.12115478515625, + "y": 0.101104736328125 + }, + { + "x": -0.206512451171875, + "y": 1.3773193359375 + }, + { + "x": 0.352020263671875, + "y": -0.113250732421875 + }, + { + "x": 0.170867919921875, + "y": -0.340118408203125 + }, + { + "x": -1.1732177734375, + "y": -0.851287841796875 + }, + { + "x": -0.43133544921875, + "y": 1.2252197265625 + }, + { + "x": 0.521575927734375, + "y": 0.1724853515625 + }, + { + "x": 0.354736328125, + "y": 0.381195068359375 + }, + { + "x": -0.070098876953125, + "y": -0.7774658203125 + }, + { + "x": 0.394378662109375, + "y": -0.298828125 + }, + { + "x": -0.720123291015625, + "y": -1.198760986328125 + }, + { + "x": 0.31829833984375, + "y": -1.843353271484375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2387323053597598, + "y": -0.22856350449591883, + "z": 1.1923896002852017 + }, + "rotation": { + "quaternion": { + "W": 0.9873772966818886, + "X": 0.10361694228691044, + "Y": 0.1194300303675681, + "Z": -0.009277451949686084 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img42.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img42.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 361.304443359375, + "y": 449.4660339355469 + }, + { + "x": 358.4648132324219, + "y": 429.1644287109375 + }, + { + "x": 356.2024841308594, + "y": 406.78729248046875 + }, + { + "x": 352.63116455078125, + "y": 385.2464599609375 + }, + { + "x": 350.58734130859375, + "y": 363.2731018066406 + }, + { + "x": 348.74261474609375, + "y": 341.4378356933594 + }, + { + "x": 345.1754150390625, + "y": 318.5952453613281 + }, + { + "x": 379.73406982421875, + "y": 451.27947998046875 + }, + { + "x": 376.38031005859375, + "y": 430.5223388671875 + }, + { + "x": 374.6316833496094, + "y": 407.3155822753906 + }, + { + "x": 372.88726806640625, + "y": 385.1540832519531 + }, + { + "x": 370.49554443359375, + "y": 363.6383056640625 + }, + { + "x": 368.12823486328125, + "y": 340.7740173339844 + }, + { + "x": 366.8714599609375, + "y": 319.2486877441406 + }, + { + "x": 399.3789367675781, + "y": 452.00634765625 + }, + { + "x": 397.5163269042969, + "y": 430.3262023925781 + }, + { + "x": 394.6195373535156, + "y": 408.0831298828125 + }, + { + "x": 391.558349609375, + "y": 385.19378662109375 + }, + { + "x": 390.8860778808594, + "y": 362.31512451171875 + }, + { + "x": 387.6195373535156, + "y": 340.5305480957031 + }, + { + "x": 385.2920837402344, + "y": 317.9322814941406 + }, + { + "x": 419.474853515625, + "y": 452.9648742675781 + }, + { + "x": 418.0687255859375, + "y": 428.9876403808594 + }, + { + "x": 414.6900329589844, + "y": 408.46282958984375 + }, + { + "x": 413.0456848144531, + "y": 385.5596923828125 + }, + { + "x": 410.7776184082031, + "y": 363.8679504394531 + }, + { + "x": 407.0262756347656, + "y": 341.0253601074219 + }, + { + "x": 405.5551452636719, + "y": 317.29156494140625 + }, + { + "x": 440.177734375, + "y": 452.76824951171875 + }, + { + "x": 437.3102722167969, + "y": 431.0700988769531 + }, + { + "x": 435.2173156738281, + "y": 408.84710693359375 + }, + { + "x": 432.2177734375, + "y": 385.5611267089844 + }, + { + "x": 430.5617980957031, + "y": 363.4441223144531 + }, + { + "x": 428.68316650390625, + "y": 340.1214904785156 + }, + { + "x": 426.02655029296875, + "y": 317.8085632324219 + }, + { + "x": 461.0156555175781, + "y": 454.60247802734375 + }, + { + "x": 458.30621337890625, + "y": 431.9521484375 + }, + { + "x": 456.4407958984375, + "y": 409.3236999511719 + }, + { + "x": 455.5085144042969, + "y": 385.0290222167969 + }, + { + "x": 452.2069396972656, + "y": 363.26556396484375 + }, + { + "x": 449.8079528808594, + "y": 339.97802734375 + }, + { + "x": 447.5202331542969, + "y": 316.1015930175781 + }, + { + "x": 481.3342590332031, + "y": 455.56451416015625 + }, + { + "x": 480.2322082519531, + "y": 432.6939697265625 + }, + { + "x": 478.956298828125, + "y": 407.71075439453125 + }, + { + "x": 475.16070556640625, + "y": 386.2886657714844 + }, + { + "x": 473.77001953125, + "y": 362.8264465332031 + }, + { + "x": 471.466552734375, + "y": 339.5838928222656 + }, + { + "x": 468.9893798828125, + "y": 316.3721618652344 + } + ], + "reprojectionErrors": [ + { + "x": -0.7625732421875, + "y": 1.28692626953125 + }, + { + "x": -0.39501953125, + "y": -3.0517578125E-5 + }, + { + "x": -0.625885009765625, + "y": 0.59967041015625 + }, + { + "x": 0.43084716796875, + "y": 0.1717529296875 + }, + { + "x": -0.06158447265625, + "y": -0.0174560546875 + }, + { + "x": -0.775054931640625, + "y": -0.54107666015625 + }, + { + "x": 0.21173095703125, + "y": -0.256256103515625 + }, + { + "x": 0.39288330078125, + "y": -8.23974609375E-4 + }, + { + "x": 1.343963623046875, + "y": -0.97296142578125 + }, + { + "x": 0.66925048828125, + "y": 0.31317138671875 + }, + { + "x": -0.030609130859375, + "y": 0.360137939453125 + }, + { + "x": -0.104339599609375, + "y": -0.434967041015625 + }, + { + "x": -0.2239990234375, + "y": -0.08056640625 + }, + { + "x": -1.475921630859375, + "y": -1.266693115234375 + }, + { + "x": 0.555572509765625, + "y": -0.174774169921875 + }, + { + "x": 0.086669921875, + "y": -0.367767333984375 + }, + { + "x": 0.631744384765625, + "y": -0.1917724609375 + }, + { + "x": 1.32080078125, + "y": 0.43402099609375 + }, + { + "x": -0.399810791015625, + "y": 0.850067138671875 + }, + { + "x": 0.452850341796875, + "y": -0.0296630859375 + }, + { + "x": 0.345184326171875, + "y": -0.300079345703125 + }, + { + "x": 0.498016357421875, + "y": -0.55255126953125 + }, + { + "x": -0.3543701171875, + "y": 1.40447998046875 + }, + { + "x": 0.74609375, + "y": -0.287506103515625 + }, + { + "x": 0.09228515625, + "y": 0.19964599609375 + }, + { + "x": 0.0419921875, + "y": -0.7264404296875 + }, + { + "x": 1.454498291015625, + "y": -0.706146240234375 + }, + { + "x": 0.566009521484375, + "y": -0.00189208984375 + }, + { + "x": 0.07281494140625, + "y": 0.253387451171875 + }, + { + "x": 0.7567138671875, + "y": -0.219085693359375 + }, + { + "x": 0.64691162109375, + "y": -0.36602783203125 + }, + { + "x": 1.424285888671875, + "y": 0.348052978515625 + }, + { + "x": 0.838409423828125, + "y": -0.311492919921875 + }, + { + "x": 0.455230712890625, + "y": 0.02716064453125 + }, + { + "x": 0.829833984375, + "y": -0.854034423828125 + }, + { + "x": -0.239105224609375, + "y": -0.9422607421875 + }, + { + "x": 0.363739013671875, + "y": -0.61639404296875 + }, + { + "x": 0.103912353515625, + "y": -0.5145263671875 + }, + { + "x": -1.10791015625, + "y": 1.04876708984375 + }, + { + "x": 0.030426025390625, + "y": -0.12677001953125 + }, + { + "x": 0.246795654296875, + "y": 0.01141357421875 + }, + { + "x": 0.332244873046875, + "y": 0.5252685546875 + }, + { + "x": 0.225860595703125, + "y": -1.2357177734375 + }, + { + "x": -0.6995849609375, + "y": -0.84698486328125 + }, + { + "x": -1.46923828125, + "y": 1.44940185546875 + }, + { + "x": 0.262481689453125, + "y": -0.023101806640625 + }, + { + "x": -0.42926025390625, + "y": 0.33392333984375 + }, + { + "x": -0.22698974609375, + "y": 0.257843017578125 + }, + { + "x": 0.129913330078125, + "y": -0.0654296875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2701300047089821, + "y": 0.053582655378204204, + "z": 1.2659725607747203 + }, + "rotation": { + "quaternion": { + "W": 0.6826627798263544, + "X": -0.04062860949097532, + "Y": 0.19981848490166887, + "Z": -0.7017075018996062 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img43.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img43.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 298.7445373535156, + "y": 380.5071105957031 + }, + { + "x": 297.0783996582031, + "y": 359.8467712402344 + }, + { + "x": 295.53729248046875, + "y": 337.1055603027344 + }, + { + "x": 292.7215270996094, + "y": 314.55010986328125 + }, + { + "x": 292.0787048339844, + "y": 292.0610656738281 + }, + { + "x": 290.91387939453125, + "y": 269.5843811035156 + }, + { + "x": 287.38250732421875, + "y": 246.20196533203125 + }, + { + "x": 320.09661865234375, + "y": 381.70050048828125 + }, + { + "x": 317.454345703125, + "y": 360.5270690917969 + }, + { + "x": 316.2530822753906, + "y": 336.5150451660156 + }, + { + "x": 315.4747619628906, + "y": 314.4182434082031 + }, + { + "x": 314.25286865234375, + "y": 292.26397705078125 + }, + { + "x": 312.45819091796875, + "y": 268.9190673828125 + }, + { + "x": 311.82464599609375, + "y": 246.15113830566406 + }, + { + "x": 341.7828674316406, + "y": 381.7264404296875 + }, + { + "x": 341.1965026855469, + "y": 359.9534912109375 + }, + { + "x": 338.9032897949219, + "y": 337.33544921875 + }, + { + "x": 336.9266052246094, + "y": 313.5881042480469 + }, + { + "x": 337.0501708984375, + "y": 290.4561767578125 + }, + { + "x": 335.3771057128906, + "y": 268.50738525390625 + }, + { + "x": 333.5654296875, + "y": 245.21937561035156 + }, + { + "x": 364.4466552734375, + "y": 382.76409912109375 + }, + { + "x": 363.5246276855469, + "y": 358.2160949707031 + }, + { + "x": 361.33978271484375, + "y": 337.2037353515625 + }, + { + "x": 360.5147705078125, + "y": 314.5222473144531 + }, + { + "x": 359.665283203125, + "y": 292.5045471191406 + }, + { + "x": 356.6232604980469, + "y": 268.68536376953125 + }, + { + "x": 356.31378173828125, + "y": 244.47840881347656 + }, + { + "x": 386.471435546875, + "y": 381.8465270996094 + }, + { + "x": 385.4689025878906, + "y": 359.8038330078125 + }, + { + "x": 383.3341369628906, + "y": 338.13134765625 + }, + { + "x": 382.06463623046875, + "y": 314.0403137207031 + }, + { + "x": 381.4490966796875, + "y": 291.6622009277344 + }, + { + "x": 381.1694030761719, + "y": 267.5696105957031 + }, + { + "x": 378.8433837890625, + "y": 244.9998016357422 + }, + { + "x": 409.6785888671875, + "y": 382.74737548828125 + }, + { + "x": 407.72125244140625, + "y": 360.1835632324219 + }, + { + "x": 407.6280212402344, + "y": 337.66619873046875 + }, + { + "x": 407.40252685546875, + "y": 313.2496643066406 + }, + { + "x": 405.3934326171875, + "y": 291.04736328125 + }, + { + "x": 403.43585205078125, + "y": 267.69061279296875 + }, + { + "x": 403.2021789550781, + "y": 243.31422424316406 + }, + { + "x": 431.0561828613281, + "y": 384.09759521484375 + }, + { + "x": 431.8262023925781, + "y": 360.6295166015625 + }, + { + "x": 431.7159729003906, + "y": 335.1979064941406 + }, + { + "x": 428.47210693359375, + "y": 313.8877258300781 + }, + { + "x": 428.4422302246094, + "y": 290.4853515625 + }, + { + "x": 428.1402587890625, + "y": 267.4080810546875 + }, + { + "x": 426.32952880859375, + "y": 244.21043395996094 + } + ], + "reprojectionErrors": [ + { + "x": -0.890777587890625, + "y": 1.691436767578125 + }, + { + "x": -0.7930908203125, + "y": 0.02545166015625 + }, + { + "x": -0.833709716796875, + "y": 0.246368408203125 + }, + { + "x": 0.386810302734375, + "y": 0.085052490234375 + }, + { + "x": -0.5792236328125, + "y": -0.3416748046875 + }, + { + "x": -1.037109375, + "y": -0.9822998046875 + }, + { + "x": 0.8575439453125, + "y": -0.921356201171875 + }, + { + "x": 0.01007080078125, + "y": 0.463714599609375 + }, + { + "x": 1.17840576171875, + "y": -0.714752197265625 + }, + { + "x": 0.893218994140625, + "y": 0.750946044921875 + }, + { + "x": 0.17242431640625, + "y": 0.1044921875 + }, + { + "x": -0.11767578125, + "y": -0.683929443359375 + }, + { + "x": 0.152008056640625, + "y": -0.483734130859375 + }, + { + "x": -0.752593994140625, + "y": -1.065155029296875 + }, + { + "x": 0.60516357421875, + "y": 0.418121337890625 + }, + { + "x": -0.187652587890625, + "y": -0.187896728515625 + }, + { + "x": 0.71466064453125, + "y": -0.14373779296875 + }, + { + "x": 1.288543701171875, + "y": 0.832305908203125 + }, + { + "x": -0.249847412109375, + "y": 0.993011474609375 + }, + { + "x": -0.0037841796875, + "y": -0.23193359375 + }, + { + "x": 0.3685302734375, + "y": -0.3228302001953125 + }, + { + "x": 0.2557373046875, + "y": -0.624420166015625 + }, + { + "x": -0.10638427734375, + "y": 1.5159912109375 + }, + { + "x": 0.78338623046875, + "y": -0.07464599609375 + }, + { + "x": 0.30224609375, + "y": -0.194061279296875 + }, + { + "x": -0.165618896484375, + "y": -1.177734375 + }, + { + "x": 1.54766845703125, + "y": -0.562957763671875 + }, + { + "x": 0.51690673828125, + "y": 0.2338714599609375 + }, + { + "x": 0.5830078125, + "y": 0.30303955078125 + }, + { + "x": 0.396759033203125, + "y": -0.092010498046875 + }, + { + "x": 1.332611083984375, + "y": -1.053192138671875 + }, + { + "x": 1.3929443359375, + "y": 0.205718994140625 + }, + { + "x": 0.78887939453125, + "y": -0.44927978515625 + }, + { + "x": -0.161529541015625, + "y": 0.40655517578125 + }, + { + "x": 0.9237060546875, + "y": -0.4666290283203125 + }, + { + "x": -0.229705810546875, + "y": -0.57305908203125 + }, + { + "x": 0.63458251953125, + "y": -0.478668212890625 + }, + { + "x": -0.374542236328125, + "y": -0.627227783203125 + }, + { + "x": -1.260894775390625, + "y": 0.92437744140625 + }, + { + "x": -0.373199462890625, + "y": 0.060150146484375 + }, + { + "x": 0.4532470703125, + "y": 0.14617919921875 + }, + { + "x": -0.454010009765625, + "y": 1.04498291015625 + }, + { + "x": 0.83428955078125, + "y": -1.883575439453125 + }, + { + "x": -0.932647705078125, + "y": -0.918212890625 + }, + { + "x": -1.827850341796875, + "y": 1.81365966796875 + }, + { + "x": 0.401947021484375, + "y": 0.224456787109375 + }, + { + "x": -0.590972900390625, + "y": 0.5252685546875 + }, + { + "x": -1.3206787109375, + "y": 0.296173095703125 + }, + { + "x": -0.55059814453125, + "y": -0.0200653076171875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.3360874049263088, + "y": -0.02419160053093017, + "z": 1.2448976234892972 + }, + "rotation": { + "quaternion": { + "W": 0.7008739761622123, + "X": 0.051981221779276984, + "Y": 0.09813524579700092, + "Z": -0.7045871810168466 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img44.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img44.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 222.2439422607422, + "y": 532.78662109375 + }, + { + "x": 226.62213134765625, + "y": 554.6987915039062 + }, + { + "x": 231.18409729003906, + "y": 575.5407104492188 + }, + { + "x": 234.2340087890625, + "y": 596.5216064453125 + }, + { + "x": 239.68328857421875, + "y": 616.0277709960938 + }, + { + "x": 243.93504333496094, + "y": 636.6954956054688 + }, + { + "x": 247.35350036621094, + "y": 655.9121704101562 + }, + { + "x": 197.11712646484375, + "y": 537.225830078125 + }, + { + "x": 202.1431884765625, + "y": 559.435791015625 + }, + { + "x": 206.688232421875, + "y": 581.087158203125 + }, + { + "x": 212.2589874267578, + "y": 600.5328979492188 + }, + { + "x": 216.11497497558594, + "y": 621.8284912109375 + }, + { + "x": 220.41070556640625, + "y": 641.3972778320312 + }, + { + "x": 224.9298553466797, + "y": 660.2736206054688 + }, + { + "x": 172.61929321289062, + "y": 542.7642211914062 + }, + { + "x": 178.0023956298828, + "y": 564.4800415039062 + }, + { + "x": 182.28567504882812, + "y": 586.3641357421875 + }, + { + "x": 186.323486328125, + "y": 606.027099609375 + }, + { + "x": 192.60816955566406, + "y": 626.3138427734375 + }, + { + "x": 197.27511596679688, + "y": 645.947509765625 + }, + { + "x": 202.24920654296875, + "y": 664.7813110351562 + }, + { + "x": 147.4320068359375, + "y": 546.9819946289062 + }, + { + "x": 153.21656799316406, + "y": 569.748779296875 + }, + { + "x": 159.64906311035156, + "y": 591.1115112304688 + }, + { + "x": 164.70098876953125, + "y": 610.4923706054688 + }, + { + "x": 168.51971435546875, + "y": 630.677490234375 + }, + { + "x": 174.507080078125, + "y": 649.49755859375 + }, + { + "x": 179.84909057617188, + "y": 669.5618286132812 + }, + { + "x": 124.49395751953125, + "y": 551.4951171875 + }, + { + "x": 129.5133056640625, + "y": 573.9067993164062 + }, + { + "x": 135.70181274414062, + "y": 594.1154174804688 + }, + { + "x": 140.28750610351562, + "y": 615.3292846679688 + }, + { + "x": 146.65225219726562, + "y": 635.4522094726562 + }, + { + "x": 152.844482421875, + "y": 655.1810302734375 + }, + { + "x": 157.53639221191406, + "y": 673.2913818359375 + }, + { + "x": 100.64766693115234, + "y": 556.8448486328125 + }, + { + "x": 106.4819107055664, + "y": 577.9723510742188 + }, + { + "x": 112.57141876220703, + "y": 599.9501342773438 + }, + { + "x": 118.6016616821289, + "y": 619.2672729492188 + }, + { + "x": 122.58040618896484, + "y": 639.4677124023438 + }, + { + "x": 129.2145538330078, + "y": 660.1941528320312 + }, + { + "x": 135.2041778564453, + "y": 677.7392578125 + }, + { + "x": 76.20137786865234, + "y": 562.3417358398438 + }, + { + "x": 83.9905014038086, + "y": 583.1258544921875 + }, + { + "x": 89.15679931640625, + "y": 604.1697998046875 + }, + { + "x": 94.65392303466797, + "y": 623.9004516601562 + }, + { + "x": 101.75257873535156, + "y": 643.4863891601562 + }, + { + "x": 106.87451934814453, + "y": 662.7427368164062 + }, + { + "x": 113.43541717529297, + "y": 681.3240966796875 + } + ], + "reprojectionErrors": [ + { + "x": -2.585723876953125, + "y": 2.16326904296875 + }, + { + "x": -2.02099609375, + "y": 0.987548828125 + }, + { + "x": -1.6981658935546875, + "y": 0.637451171875 + }, + { + "x": 0.079620361328125, + "y": -0.09197998046875 + }, + { + "x": -0.59808349609375, + "y": 0.41705322265625 + }, + { + "x": -0.1334228515625, + "y": -0.46759033203125 + }, + { + "x": 1.1103057861328125, + "y": -0.12939453125 + }, + { + "x": -0.851776123046875, + "y": 1.98651123046875 + }, + { + "x": -0.78076171875, + "y": 0.55133056640625 + }, + { + "x": -0.2888031005859375, + "y": -0.57110595703125 + }, + { + "x": -0.881622314453125, + "y": 0.2705078125 + }, + { + "x": 0.18231201171875, + "y": -0.97503662109375 + }, + { + "x": 0.7494659423828125, + "y": -0.72705078125 + }, + { + "x": 1.0371551513671875, + "y": -0.01593017578125 + }, + { + "x": 0.09588623046875, + "y": 0.76666259765625 + }, + { + "x": -0.033721923828125, + "y": -0.13482666015625 + }, + { + "x": 0.8743743896484375, + "y": -1.45166015625 + }, + { + "x": 1.9669036865234375, + "y": -0.79010009765625 + }, + { + "x": 0.752593994140625, + "y": -0.99090576171875 + }, + { + "x": 1.097076416015625, + "y": -0.77294921875 + }, + { + "x": 1.0764923095703125, + "y": 0.014404296875 + }, + { + "x": 1.569549560546875, + "y": 0.92486572265625 + }, + { + "x": 1.1972198486328125, + "y": -0.98675537109375 + }, + { + "x": 0.1127471923828125, + "y": -1.74261474609375 + }, + { + "x": 0.345794677734375, + "y": -0.76068115234375 + }, + { + "x": 1.7500762939453125, + "y": -0.82269287109375 + }, + { + "x": 0.924835205078125, + "y": 0.2447509765625 + }, + { + "x": 0.6851043701171875, + "y": -0.16351318359375 + }, + { + "x": 0.6241989135742188, + "y": 0.84661865234375 + }, + { + "x": 1.1782073974609375, + "y": -0.667724609375 + }, + { + "x": 0.49676513671875, + "y": -0.22869873046875 + }, + { + "x": 1.352996826171875, + "y": -1.04022216796875 + }, + { + "x": 0.366180419921875, + "y": -1.001708984375 + }, + { + "x": -0.511016845703125, + "y": -0.80596923828125 + }, + { + "x": 0.050323486328125, + "y": 0.77557373046875 + }, + { + "x": 0.41082000732421875, + "y": -0.00787353515625 + }, + { + "x": 0.3135833740234375, + "y": -0.194580078125 + }, + { + "x": -0.10738372802734375, + "y": -1.482666015625 + }, + { + "x": -0.5363388061523438, + "y": -0.356689453125 + }, + { + "x": 1.0201339721679688, + "y": -0.35626220703125 + }, + { + "x": -0.1437225341796875, + "y": -1.119873046875 + }, + { + "x": -0.7268524169921875, + "y": 1.06396484375 + }, + { + "x": 0.6145706176757812, + "y": -0.9476318359375 + }, + { + "x": -1.27130126953125, + "y": -0.7462158203125 + }, + { + "x": -0.6050186157226562, + "y": -1.05706787109375 + }, + { + "x": -0.33898162841796875, + "y": -0.3026123046875 + }, + { + "x": -1.7426834106445312, + "y": 0.35296630859375 + }, + { + "x": -1.2366790771484375, + "y": 1.098876953125 + }, + { + "x": -2.2354660034179688, + "y": 2.2845458984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.4212613888824307, + "y": 0.1461756457428485, + "z": 1.236943453705921 + }, + "rotation": { + "quaternion": { + "W": 0.74744246162808, + "X": 0.03469131658278154, + "Y": -0.16438428761610124, + "Z": 0.642731736492027 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img45.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img45.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 315.2337951660156, + "y": 339.1153564453125 + }, + { + "x": 316.1326599121094, + "y": 366.5761413574219 + }, + { + "x": 316.81964111328125, + "y": 393.4252624511719 + }, + { + "x": 317.52337646484375, + "y": 420.427734375 + }, + { + "x": 319.80474853515625, + "y": 445.4858093261719 + }, + { + "x": 320.5144958496094, + "y": 472.5447998046875 + }, + { + "x": 322.343994140625, + "y": 497.90826416015625 + }, + { + "x": 288.37664794921875, + "y": 340.5753173828125 + }, + { + "x": 289.2480773925781, + "y": 367.5172119140625 + }, + { + "x": 290.0863952636719, + "y": 394.6700744628906 + }, + { + "x": 291.8500061035156, + "y": 421.12957763671875 + }, + { + "x": 293.0299377441406, + "y": 448.2517395019531 + }, + { + "x": 294.1582946777344, + "y": 473.72509765625 + }, + { + "x": 295.8102111816406, + "y": 499.5945739746094 + }, + { + "x": 261.06024169921875, + "y": 341.4698181152344 + }, + { + "x": 262.5839538574219, + "y": 369.3125305175781 + }, + { + "x": 263.3506774902344, + "y": 395.6137390136719 + }, + { + "x": 263.62701416015625, + "y": 422.5323486328125 + }, + { + "x": 265.83782958984375, + "y": 448.9851989746094 + }, + { + "x": 267.5600280761719, + "y": 474.87451171875 + }, + { + "x": 270.11309814453125, + "y": 499.69207763671875 + }, + { + "x": 233.54750061035156, + "y": 342.6423034667969 + }, + { + "x": 234.24192810058594, + "y": 371.16949462890625 + }, + { + "x": 236.37661743164062, + "y": 397.41522216796875 + }, + { + "x": 239.07754516601562, + "y": 423.5830383300781 + }, + { + "x": 240.10565185546875, + "y": 450.53668212890625 + }, + { + "x": 242.6570587158203, + "y": 474.5965576171875 + }, + { + "x": 244.23007202148438, + "y": 502.19183349609375 + }, + { + "x": 206.21311950683594, + "y": 345.2909240722656 + }, + { + "x": 209.08668518066406, + "y": 371.4766540527344 + }, + { + "x": 210.46298217773438, + "y": 398.34588623046875 + }, + { + "x": 211.2200469970703, + "y": 424.2186584472656 + }, + { + "x": 214.34080505371094, + "y": 451.24212646484375 + }, + { + "x": 216.64439392089844, + "y": 477.4560852050781 + }, + { + "x": 218.5657501220703, + "y": 502.45635986328125 + }, + { + "x": 181.21099853515625, + "y": 345.8070068359375 + }, + { + "x": 182.9496307373047, + "y": 372.8645935058594 + }, + { + "x": 184.51663208007812, + "y": 399.8028259277344 + }, + { + "x": 186.71627807617188, + "y": 426.0191955566406 + }, + { + "x": 188.44432067871094, + "y": 452.4244689941406 + }, + { + "x": 190.27203369140625, + "y": 478.69378662109375 + }, + { + "x": 192.61715698242188, + "y": 503.4815368652344 + }, + { + "x": 154.41387939453125, + "y": 347.0561218261719 + }, + { + "x": 157.28775024414062, + "y": 374.3077392578125 + }, + { + "x": 158.42404174804688, + "y": 401.14349365234375 + }, + { + "x": 160.47935485839844, + "y": 427.7063903808594 + }, + { + "x": 163.23574829101562, + "y": 453.7059020996094 + }, + { + "x": 165.65771484375, + "y": 479.6120300292969 + }, + { + "x": 167.28829956054688, + "y": 505.1347961425781 + } + ], + "reprojectionErrors": [ + { + "x": -2.2781982421875, + "y": 0.93707275390625 + }, + { + "x": -1.5341796875, + "y": 0.1138916015625 + }, + { + "x": -0.582763671875, + "y": -0.175048828125 + }, + { + "x": 0.347442626953125, + "y": -0.69451904296875 + }, + { + "x": -0.304443359375, + "y": 0.65350341796875 + }, + { + "x": 0.610870361328125, + "y": -0.0760498046875 + }, + { + "x": 0.40203857421875, + "y": 0.81353759765625 + }, + { + "x": -1.7550048828125, + "y": 0.70953369140625 + }, + { + "x": -0.946502685546875, + "y": 0.383544921875 + }, + { + "x": -0.109466552734375, + "y": -0.230743408203125 + }, + { + "x": -0.202239990234375, + "y": -0.228668212890625 + }, + { + "x": 0.28411865234375, + "y": -0.966094970703125 + }, + { + "x": 0.81756591796875, + "y": -0.1312255859375 + }, + { + "x": 0.82293701171875, + "y": 0.23126220703125 + }, + { + "x": -0.7620849609375, + "y": 1.046173095703125 + }, + { + "x": -0.568756103515625, + "y": -0.20013427734375 + }, + { + "x": 0.376922607421875, + "y": 0.017852783203125 + }, + { + "x": 1.808349609375, + "y": -0.45849609375 + }, + { + "x": 1.30072021484375, + "y": -0.5457763671875 + }, + { + "x": 1.277130126953125, + "y": -0.14593505859375 + }, + { + "x": 0.418060302734375, + "y": 1.24945068359375 + }, + { + "x": 0.43121337890625, + "y": 1.103912353515625 + }, + { + "x": 1.4910125732421875, + "y": -0.844207763671875 + }, + { + "x": 1.1058502197265625, + "y": -0.587982177734375 + }, + { + "x": 0.1497344970703125, + "y": -0.3306884765625 + }, + { + "x": 0.8617706298828125, + "y": -0.935791015625 + }, + { + "x": 0.04583740234375, + "y": 1.276519775390625 + }, + { + "x": 0.203643798828125, + "y": -0.122650146484375 + }, + { + "x": 1.44378662109375, + "y": -0.315155029296875 + }, + { + "x": 0.36175537109375, + "y": 0.063018798828125 + }, + { + "x": 0.7722015380859375, + "y": -0.319305419921875 + }, + { + "x": 1.7971038818359375, + "y": 0.218017578125 + }, + { + "x": 0.45355224609375, + "y": -0.471832275390625 + }, + { + "x": -0.0775909423828125, + "y": -0.428436279296875 + }, + { + "x": -0.2312164306640625, + "y": 0.75262451171875 + }, + { + "x": 0.1153411865234375, + "y": 0.397979736328125 + }, + { + "x": 0.2056732177734375, + "y": -0.10870361328125 + }, + { + "x": 0.4627685546875, + "y": -0.572967529296875 + }, + { + "x": 0.0823516845703125, + "y": -0.39208984375 + }, + { + "x": 0.168701171875, + "y": -0.476531982421875 + }, + { + "x": 0.150543212890625, + "y": -0.501220703125 + }, + { + "x": -0.38983154296875, + "y": 0.87969970703125 + }, + { + "x": 0.5667877197265625, + "y": 0.3780517578125 + }, + { + "x": -0.4405517578125, + "y": -0.33349609375 + }, + { + "x": 0.28472900390625, + "y": -0.706085205078125 + }, + { + "x": 0.0860595703125, + "y": -0.882476806640625 + }, + { + "x": -0.8186187744140625, + "y": -0.57183837890625 + }, + { + "x": -1.3937835693359375, + "y": -0.24395751953125 + }, + { + "x": -1.1824493408203125, + "y": 0.391387939453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2710867953113662, + "y": -0.06070292589102217, + "z": 1.0575362614457857 + }, + "rotation": { + "quaternion": { + "W": 0.7227251351706689, + "X": 0.028607589156011342, + "Y": -0.01471124716360064, + "Z": 0.6903865323440996 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img46.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img46.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 242.418701171875, + "y": 224.94602966308594 + }, + { + "x": 243.35447692871094, + "y": 253.62608337402344 + }, + { + "x": 244.07052612304688, + "y": 282.4732360839844 + }, + { + "x": 245.5822296142578, + "y": 310.78350830078125 + }, + { + "x": 247.35177612304688, + "y": 338.4248962402344 + }, + { + "x": 249.12628173828125, + "y": 367.0272216796875 + }, + { + "x": 251.09693908691406, + "y": 394.41766357421875 + }, + { + "x": 215.48318481445312, + "y": 226.854248046875 + }, + { + "x": 216.41427612304688, + "y": 254.81790161132812 + }, + { + "x": 217.462890625, + "y": 283.7738952636719 + }, + { + "x": 219.2970733642578, + "y": 311.49163818359375 + }, + { + "x": 220.7908172607422, + "y": 340.4852294921875 + }, + { + "x": 222.04176330566406, + "y": 367.9095458984375 + }, + { + "x": 224.6662139892578, + "y": 396.04058837890625 + }, + { + "x": 188.45201110839844, + "y": 228.7510223388672 + }, + { + "x": 189.78924560546875, + "y": 257.1352233886719 + }, + { + "x": 191.04672241210938, + "y": 284.9405822753906 + }, + { + "x": 191.63316345214844, + "y": 313.32275390625 + }, + { + "x": 193.4192352294922, + "y": 341.5480041503906 + }, + { + "x": 195.201416015625, + "y": 368.4507141113281 + }, + { + "x": 198.1417999267578, + "y": 395.87078857421875 + }, + { + "x": 162.25804138183594, + "y": 230.1180877685547 + }, + { + "x": 161.74774169921875, + "y": 260.2635498046875 + }, + { + "x": 164.20367431640625, + "y": 286.6592102050781 + }, + { + "x": 166.8497772216797, + "y": 314.5613708496094 + }, + { + "x": 168.42974853515625, + "y": 343.11773681640625 + }, + { + "x": 170.84083557128906, + "y": 368.26519775390625 + }, + { + "x": 172.44444274902344, + "y": 397.7045593261719 + }, + { + "x": 136.13648986816406, + "y": 233.2261505126953 + }, + { + "x": 138.20220947265625, + "y": 260.4272766113281 + }, + { + "x": 138.924560546875, + "y": 288.4527282714844 + }, + { + "x": 139.67657470703125, + "y": 315.37689208984375 + }, + { + "x": 142.73941040039062, + "y": 344.10699462890625 + }, + { + "x": 145.32310485839844, + "y": 371.4122009277344 + }, + { + "x": 147.30615234375, + "y": 398.35699462890625 + }, + { + "x": 111.48735809326172, + "y": 234.81117248535156 + }, + { + "x": 112.47431182861328, + "y": 262.70526123046875 + }, + { + "x": 114.17584228515625, + "y": 290.3196105957031 + }, + { + "x": 116.12498474121094, + "y": 317.59283447265625 + }, + { + "x": 118.03543090820312, + "y": 345.2605895996094 + }, + { + "x": 119.21749877929688, + "y": 373.9017333984375 + }, + { + "x": 121.96876525878906, + "y": 398.96240234375 + }, + { + "x": 86.21772003173828, + "y": 236.9126739501953 + }, + { + "x": 88.63683319091797, + "y": 264.5898132324219 + }, + { + "x": 89.45417022705078, + "y": 292.15899658203125 + }, + { + "x": 91.52951049804688, + "y": 319.88201904296875 + }, + { + "x": 93.57644653320312, + "y": 346.8111877441406 + }, + { + "x": 96.58903503417969, + "y": 374.0246276855469 + }, + { + "x": 98.02503204345703, + "y": 400.5384826660156 + } + ], + "reprojectionErrors": [ + { + "x": -2.103607177734375, + "y": 0.5565643310546875 + }, + { + "x": -1.366302490234375, + "y": 0.1534576416015625 + }, + { + "x": -0.411895751953125, + "y": -0.4703369140625 + }, + { + "x": -0.255767822265625, + "y": -0.61083984375 + }, + { + "x": -0.360137939453125, + "y": -0.13592529296875 + }, + { + "x": -0.472076416015625, + "y": -0.67535400390625 + }, + { + "x": -0.782806396484375, + "y": -0.056243896484375 + }, + { + "x": -1.2786865234375, + "y": 0.5350341796875 + }, + { + "x": -0.5189666748046875, + "y": 0.728485107421875 + }, + { + "x": 0.12060546875, + "y": -0.123565673828125 + }, + { + "x": -0.0280303955078125, + "y": 0.20953369140625 + }, + { + "x": 0.1611480712890625, + "y": -0.7862548828125 + }, + { + "x": 0.59051513671875, + "y": -0.265716552734375 + }, + { + "x": -0.35626220703125, + "y": -0.504852294921875 + }, + { + "x": -0.1896514892578125, + "y": 0.498748779296875 + }, + { + "x": 0.181488037109375, + "y": 0.15521240234375 + }, + { + "x": 0.6297454833984375, + "y": 0.3377685546875 + }, + { + "x": 1.746429443359375, + "y": -0.109161376953125 + }, + { + "x": 1.660858154296875, + "y": -0.4517822265625 + }, + { + "x": 1.5765533447265625, + "y": 0.475616455078125 + }, + { + "x": 0.3314208984375, + "y": 0.833160400390625 + }, + { + "x": 0.2220306396484375, + "y": 0.966796875 + }, + { + "x": 2.4581146240234375, + "y": -1.251190185546875 + }, + { + "x": 1.725341796875, + "y": 0.22833251953125 + }, + { + "x": 0.799774169921875, + "y": 0.14910888671875 + }, + { + "x": 0.9377288818359375, + "y": -0.636505126953125 + }, + { + "x": 0.241943359375, + "y": 1.93463134765625 + }, + { + "x": 0.3510284423828125, + "y": 0.161834716796875 + }, + { + "x": 0.712799072265625, + "y": -0.3307952880859375 + }, + { + "x": 0.3901519775390625, + "y": 0.28564453125 + }, + { + "x": 1.408233642578125, + "y": 0.02587890625 + }, + { + "x": 2.39404296875, + "y": 0.815521240234375 + }, + { + "x": 1.0664215087890625, + "y": -0.252532958984375 + }, + { + "x": 0.2153167724609375, + "y": 0.052581787109375 + }, + { + "x": -0.0377349853515625, + "y": 0.66644287109375 + }, + { + "x": -0.1255035400390625, + "y": -0.1292572021484375 + }, + { + "x": 0.64776611328125, + "y": -0.3125 + }, + { + "x": 0.7038421630859375, + "y": -0.267547607421875 + }, + { + "x": 0.5096893310546875, + "y": 0.067108154296875 + }, + { + "x": 0.35161590576171875, + "y": -0.044189453125 + }, + { + "x": 0.9193191528320312, + "y": -1.18017578125 + }, + { + "x": -0.0847930908203125, + "y": 1.2130126953125 + }, + { + "x": -0.20790863037109375, + "y": -0.4673614501953125 + }, + { + "x": -0.8497467041015625, + "y": -0.53729248046875 + }, + { + "x": 0.107574462890625, + "y": -0.5504150390625 + }, + { + "x": -0.19571685791015625, + "y": -0.7684326171875 + }, + { + "x": -0.4732208251953125, + "y": -0.243621826171875 + }, + { + "x": -1.7189788818359375, + "y": -0.054046630859375 + }, + { + "x": -1.3907470703125, + "y": 0.78424072265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.3220249150896968, + "y": -0.16064721954408775, + "z": 1.00033365732407 + }, + "rotation": { + "quaternion": { + "W": 0.7203804653984789, + "X": 0.06930835959580642, + "Y": 0.04019883979166334, + "Z": 0.6889356934009251 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img47.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img47.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 214.09854125976562, + "y": 298.8416442871094 + }, + { + "x": 215.67771911621094, + "y": 327.1907043457031 + }, + { + "x": 217.41378784179688, + "y": 355.6363525390625 + }, + { + "x": 219.37973022460938, + "y": 383.388671875 + }, + { + "x": 222.4900665283203, + "y": 410.2825622558594 + }, + { + "x": 224.82907104492188, + "y": 438.3843994140625 + }, + { + "x": 227.27610778808594, + "y": 464.9302673339844 + }, + { + "x": 186.5203399658203, + "y": 301.4095458984375 + }, + { + "x": 188.15093994140625, + "y": 330.0124816894531 + }, + { + "x": 190.37701416015625, + "y": 358.1661071777344 + }, + { + "x": 193.00794982910156, + "y": 385.58935546875 + }, + { + "x": 195.3662872314453, + "y": 414.0060729980469 + }, + { + "x": 197.53805541992188, + "y": 440.92095947265625 + }, + { + "x": 200.33177185058594, + "y": 467.5185852050781 + }, + { + "x": 158.77281188964844, + "y": 304.3819885253906 + }, + { + "x": 161.07826232910156, + "y": 332.56268310546875 + }, + { + "x": 163.26072692871094, + "y": 361.05126953125 + }, + { + "x": 165.1353759765625, + "y": 388.6946716308594 + }, + { + "x": 167.79051208496094, + "y": 416.5712890625 + }, + { + "x": 170.68887329101562, + "y": 443.2425231933594 + }, + { + "x": 173.80345153808594, + "y": 469.8558044433594 + }, + { + "x": 131.26707458496094, + "y": 306.5502624511719 + }, + { + "x": 132.55662536621094, + "y": 336.7439270019531 + }, + { + "x": 135.83685302734375, + "y": 363.563232421875 + }, + { + "x": 139.46261596679688, + "y": 391.0220031738281 + }, + { + "x": 142.1207275390625, + "y": 419.2417297363281 + }, + { + "x": 145.13998413085938, + "y": 444.7645263671875 + }, + { + "x": 148.28451538085938, + "y": 473.2788391113281 + }, + { + "x": 104.26481628417969, + "y": 310.5501708984375 + }, + { + "x": 107.3963851928711, + "y": 338.0694885253906 + }, + { + "x": 109.69595336914062, + "y": 366.4123840332031 + }, + { + "x": 111.50476837158203, + "y": 393.3282470703125 + }, + { + "x": 115.69297790527344, + "y": 421.9251403808594 + }, + { + "x": 118.9882583618164, + "y": 448.65234375 + }, + { + "x": 122.333740234375, + "y": 475.14508056640625 + }, + { + "x": 77.92308807373047, + "y": 312.38824462890625 + }, + { + "x": 81.0309066772461, + "y": 341.1026916503906 + }, + { + "x": 83.46400451660156, + "y": 369.1477355957031 + }, + { + "x": 86.8697509765625, + "y": 396.7595520019531 + }, + { + "x": 89.64608764648438, + "y": 423.87677001953125 + }, + { + "x": 92.5028076171875, + "y": 452.5825500488281 + }, + { + "x": 96.49600219726562, + "y": 477.5602722167969 + }, + { + "x": 52.424102783203125, + "y": 315.6889953613281 + }, + { + "x": 55.58687973022461, + "y": 344.3191833496094 + }, + { + "x": 58.086212158203125, + "y": 372.38507080078125 + }, + { + "x": 61.24477767944336, + "y": 400.0579833984375 + }, + { + "x": 64.51925659179688, + "y": 427.1534423828125 + }, + { + "x": 68.74730682373047, + "y": 454.1486511230469 + }, + { + "x": 71.51164245605469, + "y": 480.39117431640625 + } + ], + "reprojectionErrors": [ + { + "x": -2.9210052490234375, + "y": 0.49530029296875 + }, + { + "x": -1.70269775390625, + "y": -0.027587890625 + }, + { + "x": -0.6422271728515625, + "y": -0.6614990234375 + }, + { + "x": 0.1873931884765625, + "y": -0.616546630859375 + }, + { + "x": -0.12835693359375, + "y": 0.27227783203125 + }, + { + "x": 0.3262481689453125, + "y": -0.061492919921875 + }, + { + "x": 0.67181396484375, + "y": 1.146026611328125 + }, + { + "x": -1.94903564453125, + "y": 0.84014892578125 + }, + { + "x": -0.7821197509765625, + "y": -0.005584716796875 + }, + { + "x": -0.2115936279296875, + "y": -0.416351318359375 + }, + { + "x": -0.046875, + "y": -0.111175537109375 + }, + { + "x": 0.389495849609375, + "y": -0.813934326171875 + }, + { + "x": 1.011474609375, + "y": -0.0294189453125 + }, + { + "x": 1.0105438232421875, + "y": 1.057708740234375 + }, + { + "x": -0.7227630615234375, + "y": 0.7596435546875 + }, + { + "x": -0.230438232421875, + "y": 0.269866943359375 + }, + { + "x": 0.3839569091796875, + "y": -0.542083740234375 + }, + { + "x": 1.305267333984375, + "y": -0.523193359375 + }, + { + "x": 1.445159912109375, + "y": -0.751953125 + }, + { + "x": 1.340911865234375, + "y": 0.210205078125 + }, + { + "x": 1.0195159912109375, + "y": 1.215728759765625 + }, + { + "x": 0.3394012451171875, + "y": 1.46337890625 + }, + { + "x": 1.84808349609375, + "y": -1.10302734375 + }, + { + "x": 1.365203857421875, + "y": -0.30926513671875 + }, + { + "x": 0.535919189453125, + "y": -0.16925048828125 + }, + { + "x": 0.6733856201171875, + "y": -0.804534912109375 + }, + { + "x": 0.448822021484375, + "y": 1.242645263671875 + }, + { + "x": 0.0980682373046875, + "y": 0.2838134765625 + }, + { + "x": 0.96856689453125, + "y": 0.31640625 + }, + { + "x": 0.6359024047851562, + "y": 0.36334228515625 + }, + { + "x": 1.1343917846679688, + "y": -0.427459716796875 + }, + { + "x": 2.1227798461914062, + "y": 0.194549560546875 + }, + { + "x": 0.7309112548828125, + "y": -0.878753662109375 + }, + { + "x": 0.23110198974609375, + "y": -0.09674072265625 + }, + { + "x": -0.3197784423828125, + "y": 0.9052734375 + }, + { + "x": 1.0005722045898438, + "y": 1.313018798828125 + }, + { + "x": 0.6925430297851562, + "y": 0.10638427734375 + }, + { + "x": 1.0584182739257812, + "y": -0.4449462890625 + }, + { + "x": 0.4508209228515625, + "y": -0.57720947265625 + }, + { + "x": 0.4718017578125, + "y": -0.2291259765625 + }, + { + "x": 0.41156005859375, + "y": -1.483917236328125 + }, + { + "x": -0.7860107421875, + "y": 0.9749755859375 + }, + { + "x": 0.24620819091796875, + "y": 0.82958984375 + }, + { + "x": -0.11567306518554688, + "y": -0.34869384765625 + }, + { + "x": 0.1851043701171875, + "y": -0.976715087890625 + }, + { + "x": -0.17415237426757812, + "y": -1.225860595703125 + }, + { + "x": -0.6501235961914062, + "y": -0.9117431640625 + }, + { + "x": -2.0804824829101562, + "y": -0.51165771484375 + }, + { + "x": -2.0479507446289062, + "y": 0.626800537109375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.3514181812061303, + "y": -0.09494256669669585, + "z": 1.009176471785436 + }, + "rotation": { + "quaternion": { + "W": 0.7396638546674393, + "X": 0.03594731922583311, + "Y": 0.025581899510036293, + "Z": 0.6715286581795595 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img48.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img48.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 91.09883117675781, + "y": 549.2388305664062 + }, + { + "x": 87.89386749267578, + "y": 525.7210083007812 + }, + { + "x": 85.61613464355469, + "y": 500.55596923828125 + }, + { + "x": 82.22042846679688, + "y": 474.6544494628906 + }, + { + "x": 80.52867889404297, + "y": 448.7494201660156 + }, + { + "x": 78.84004974365234, + "y": 421.9331359863281 + }, + { + "x": 76.1147232055664, + "y": 394.7078552246094 + }, + { + "x": 114.66028594970703, + "y": 549.997802734375 + }, + { + "x": 112.23136138916016, + "y": 526.4645385742188 + }, + { + "x": 109.09831237792969, + "y": 499.235107421875 + }, + { + "x": 108.64601135253906, + "y": 474.1091613769531 + }, + { + "x": 105.75593566894531, + "y": 448.1383361816406 + }, + { + "x": 104.35466003417969, + "y": 421.4906005859375 + }, + { + "x": 102.0444564819336, + "y": 393.94677734375 + }, + { + "x": 140.32017517089844, + "y": 549.6283569335938 + }, + { + "x": 138.26419067382812, + "y": 525.4445190429688 + }, + { + "x": 135.5168914794922, + "y": 500.2588195800781 + }, + { + "x": 132.16860961914062, + "y": 472.77734375 + }, + { + "x": 132.36131286621094, + "y": 447.4049072265625 + }, + { + "x": 130.08802795410156, + "y": 420.69268798828125 + }, + { + "x": 127.53764343261719, + "y": 394.6189880371094 + }, + { + "x": 165.4305419921875, + "y": 549.9293212890625 + }, + { + "x": 164.1571502685547, + "y": 523.2809448242188 + }, + { + "x": 161.2852325439453, + "y": 499.5516357421875 + }, + { + "x": 160.4644317626953, + "y": 473.5389709472656 + }, + { + "x": 157.7741241455078, + "y": 447.4790954589844 + }, + { + "x": 155.24288940429688, + "y": 421.92510986328125 + }, + { + "x": 155.09295654296875, + "y": 392.51043701171875 + }, + { + "x": 191.28411865234375, + "y": 548.5103759765625 + }, + { + "x": 188.73605346679688, + "y": 524.2357177734375 + }, + { + "x": 187.1387939453125, + "y": 499.52886962890625 + }, + { + "x": 185.0436248779297, + "y": 472.9827575683594 + }, + { + "x": 184.99020385742188, + "y": 446.5353698730469 + }, + { + "x": 183.50872802734375, + "y": 419.74835205078125 + }, + { + "x": 182.59645080566406, + "y": 392.5323486328125 + }, + { + "x": 217.03993225097656, + "y": 548.916259765625 + }, + { + "x": 215.2738037109375, + "y": 524.21533203125 + }, + { + "x": 214.1743621826172, + "y": 498.7572021484375 + }, + { + "x": 213.6457061767578, + "y": 472.0716857910156 + }, + { + "x": 211.3852996826172, + "y": 446.291015625 + }, + { + "x": 210.84878540039062, + "y": 419.1825256347656 + }, + { + "x": 210.1436309814453, + "y": 392.0141296386719 + }, + { + "x": 243.05618286132812, + "y": 548.5333251953125 + }, + { + "x": 241.61282348632812, + "y": 523.7029418945312 + }, + { + "x": 241.53225708007812, + "y": 496.6199035644531 + }, + { + "x": 238.3969268798828, + "y": 471.8871765136719 + }, + { + "x": 238.75547790527344, + "y": 445.5432434082031 + }, + { + "x": 237.67588806152344, + "y": 418.5196228027344 + }, + { + "x": 237.33425903320312, + "y": 391.48284912109375 + } + ], + "reprojectionErrors": [ + { + "x": -2.9371566772460938, + "y": 1.9666748046875 + }, + { + "x": -1.7019424438476562, + "y": -0.130859375 + }, + { + "x": -1.4049758911132812, + "y": -0.7314453125 + }, + { + "x": -0.0011444091796875, + "y": -0.7469482421875 + }, + { + "x": -0.312469482421875, + "y": -0.911651611328125 + }, + { + "x": -0.6381988525390625, + "y": -0.319091796875 + }, + { + "x": 0.06137847900390625, + "y": 0.527191162109375 + }, + { + "x": -0.5182266235351562, + "y": 0.79852294921875 + }, + { + "x": 0.0162506103515625, + "y": -1.29193115234375 + }, + { + "x": 1.2442474365234375, + "y": 0.163482666015625 + }, + { + "x": -0.2191925048828125, + "y": -0.6361083984375 + }, + { + "x": 0.7443618774414062, + "y": -0.743621826171875 + }, + { + "x": 0.20824432373046875, + "y": -0.328277587890625 + }, + { + "x": 0.570098876953125, + "y": 0.827789306640625 + }, + { + "x": -0.221282958984375, + "y": 0.78106689453125 + }, + { + "x": 0.0153961181640625, + "y": -0.6690673828125 + }, + { + "x": 0.9331817626953125, + "y": -1.267791748046875 + }, + { + "x": 2.441680908203125, + "y": 0.277618408203125 + }, + { + "x": 0.398834228515625, + "y": -0.43890380859375 + }, + { + "x": 0.8115234375, + "y": 0.0301513671875 + }, + { + "x": 1.49078369140625, + "y": -0.294769287109375 + }, + { + "x": 0.6078033447265625, + "y": 0.11553955078125 + }, + { + "x": 0.136871337890625, + "y": 1.11767578125 + }, + { + "x": 1.25469970703125, + "y": -0.949859619140625 + }, + { + "x": 0.3115234375, + "y": -0.88580322265625 + }, + { + "x": 1.2279205322265625, + "y": -0.927581787109375 + }, + { + "x": 1.9752197265625, + "y": -1.629608154296875 + }, + { + "x": 0.3311004638671875, + "y": 1.373443603515625 + }, + { + "x": 0.68243408203125, + "y": 1.19219970703125 + }, + { + "x": 1.5610809326171875, + "y": -0.1937255859375 + }, + { + "x": 1.4795379638671875, + "y": -1.298126220703125 + }, + { + "x": 1.8864593505859375, + "y": -0.7152099609375 + }, + { + "x": 0.242095947265625, + "y": -0.38421630859375 + }, + { + "x": 0.0161895751953125, + "y": 0.131866455078125 + }, + { + "x": -0.788604736328125, + "y": 0.921173095703125 + }, + { + "x": 0.849761962890625, + "y": 0.46612548828125 + }, + { + "x": 1.0212860107421875, + "y": -0.50970458984375 + }, + { + "x": 0.5171661376953125, + "y": -0.8792724609375 + }, + { + "x": -0.5667724609375, + "y": -0.173583984375 + }, + { + "x": 0.071929931640625, + "y": -0.526153564453125 + }, + { + "x": -1.0224609375, + "y": 0.294403076171875 + }, + { + "x": -1.9574737548828125, + "y": 1.018890380859375 + }, + { + "x": 0.757720947265625, + "y": 0.55108642578125 + }, + { + "x": 0.6812896728515625, + "y": -0.3135986328125 + }, + { + "x": -0.7664947509765625, + "y": 0.923309326171875 + }, + { + "x": 0.8318634033203125, + "y": -0.34246826171875 + }, + { + "x": -1.0723724365234375, + "y": -0.150665283203125 + }, + { + "x": -1.5472259521484375, + "y": 0.56591796875 + }, + { + "x": -2.768890380859375, + "y": 1.139434814453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.49473804669884963, + "y": 0.1430728109107924, + "z": 1.0772018087432063 + }, + "rotation": { + "quaternion": { + "W": 0.6995866057174986, + "X": 0.03638846479702134, + "Y": 0.05109991175547504, + "Z": -0.7117887746719301 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img49.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img49.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 309.5960693359375, + "y": 479.49151611328125 + }, + { + "x": 308.25872802734375, + "y": 456.14031982421875 + }, + { + "x": 306.3181457519531, + "y": 430.6617736816406 + }, + { + "x": 304.4220275878906, + "y": 406.7090148925781 + }, + { + "x": 302.19915771484375, + "y": 380.8948974609375 + }, + { + "x": 301.121826171875, + "y": 356.01971435546875 + }, + { + "x": 298.4438781738281, + "y": 329.556640625 + }, + { + "x": 334.2560729980469, + "y": 479.700439453125 + }, + { + "x": 332.5134582519531, + "y": 455.5170593261719 + }, + { + "x": 330.5606689453125, + "y": 430.5767822265625 + }, + { + "x": 329.28271484375, + "y": 405.48699951171875 + }, + { + "x": 327.8631286621094, + "y": 381.0537109375 + }, + { + "x": 325.82684326171875, + "y": 354.6431579589844 + }, + { + "x": 324.73895263671875, + "y": 329.17767333984375 + }, + { + "x": 359.4324951171875, + "y": 479.33135986328125 + }, + { + "x": 357.7013854980469, + "y": 455.485595703125 + }, + { + "x": 355.8804016113281, + "y": 430.37835693359375 + }, + { + "x": 353.3708801269531, + "y": 404.7113037109375 + }, + { + "x": 352.5748596191406, + "y": 379.59869384765625 + }, + { + "x": 351.2992858886719, + "y": 354.25140380859375 + }, + { + "x": 349.1847229003906, + "y": 328.8406982421875 + }, + { + "x": 383.90533447265625, + "y": 479.7126770019531 + }, + { + "x": 383.30078125, + "y": 453.3485412597656 + }, + { + "x": 381.2629089355469, + "y": 430.63519287109375 + }, + { + "x": 380.14044189453125, + "y": 404.4460144042969 + }, + { + "x": 378.34490966796875, + "y": 379.8683166503906 + }, + { + "x": 376.1986083984375, + "y": 354.3524475097656 + }, + { + "x": 376.0570983886719, + "y": 327.6839904785156 + }, + { + "x": 409.2430114746094, + "y": 479.0238037109375 + }, + { + "x": 407.48388671875, + "y": 454.610595703125 + }, + { + "x": 406.59967041015625, + "y": 429.5439453125 + }, + { + "x": 404.5332946777344, + "y": 404.45550537109375 + }, + { + "x": 404.22216796875, + "y": 378.58624267578125 + }, + { + "x": 403.2063903808594, + "y": 353.333740234375 + }, + { + "x": 401.7549133300781, + "y": 326.9661865234375 + }, + { + "x": 434.6338806152344, + "y": 479.4824523925781 + }, + { + "x": 433.2875671386719, + "y": 454.4181213378906 + }, + { + "x": 432.4754638671875, + "y": 429.72467041015625 + }, + { + "x": 431.8906555175781, + "y": 403.0894470214844 + }, + { + "x": 430.2341003417969, + "y": 378.59637451171875 + }, + { + "x": 429.07708740234375, + "y": 352.34954833984375 + }, + { + "x": 428.44976806640625, + "y": 326.5570983886719 + }, + { + "x": 460.3615417480469, + "y": 478.7858581542969 + }, + { + "x": 459.3545837402344, + "y": 454.4200439453125 + }, + { + "x": 458.8673095703125, + "y": 428.401611328125 + }, + { + "x": 456.3968200683594, + "y": 403.3606262207031 + }, + { + "x": 456.37811279296875, + "y": 377.8210144042969 + }, + { + "x": 455.40362548828125, + "y": 351.8550109863281 + }, + { + "x": 454.57977294921875, + "y": 326.0029296875 + } + ], + "reprojectionErrors": [ + { + "x": -0.474090576171875, + "y": 1.116973876953125 + }, + { + "x": -0.86236572265625, + "y": -0.228057861328125 + }, + { + "x": -0.6614990234375, + "y": 0.347686767578125 + }, + { + "x": -0.519378662109375, + "y": -0.811492919921875 + }, + { + "x": -0.06500244140625, + "y": -0.32098388671875 + }, + { + "x": -0.77081298828125, + "y": -0.983734130859375 + }, + { + "x": 0.10919189453125, + "y": -0.27557373046875 + }, + { + "x": 0.0191650390625, + "y": 0.504302978515625 + }, + { + "x": 0.14007568359375, + "y": -0.021881103515625 + }, + { + "x": 0.4578857421875, + "y": 0.002044677734375 + }, + { + "x": 0.08740234375, + "y": -0.03387451171875 + }, + { + "x": -0.155059814453125, + "y": -0.93817138671875 + }, + { + "x": 0.205413818359375, + "y": -0.07977294921875 + }, + { + "x": -0.396453857421875, + "y": -0.38360595703125 + }, + { + "x": -7.01904296875E-4, + "y": 0.49066162109375 + }, + { + "x": 0.21258544921875, + "y": -0.388275146484375 + }, + { + "x": 0.503326416015625, + "y": -0.212799072265625 + }, + { + "x": 1.470001220703125, + "y": 0.31292724609375 + }, + { + "x": 0.710418701171875, + "y": 0.072052001953125 + }, + { + "x": 0.41748046875, + "y": -0.14892578125 + }, + { + "x": 0.950439453125, + "y": -0.523956298828125 + }, + { + "x": 0.6920166015625, + "y": -0.252410888671875 + }, + { + "x": -0.1173095703125, + "y": 1.37005615234375 + }, + { + "x": 0.495086669921875, + "y": -0.865570068359375 + }, + { + "x": 0.180328369140625, + "y": 0.164764404296875 + }, + { + "x": 0.5267333984375, + "y": -0.62884521484375 + }, + { + "x": 1.211883544921875, + "y": -0.6993408203125 + }, + { + "x": -0.119964599609375, + "y": 0.165008544921875 + }, + { + "x": 0.53466796875, + "y": 0.095672607421875 + }, + { + "x": 0.98394775390625, + "y": -0.2515869140625 + }, + { + "x": 0.54754638671875, + "y": -0.153045654296875 + }, + { + "x": 1.28240966796875, + "y": -0.24285888671875 + }, + { + "x": 0.251007080078125, + "y": 0.235382080078125 + }, + { + "x": -0.086944580078125, + "y": -0.1185302734375 + }, + { + "x": -4.8828125E-4, + "y": 0.424560546875 + }, + { + "x": 0.3447265625, + "y": -0.682891845703125 + }, + { + "x": 0.4853515625, + "y": -0.399658203125 + }, + { + "x": 0.08184814453125, + "y": -0.695281982421875 + }, + { + "x": -0.558990478515625, + "y": 0.740386962890625 + }, + { + "x": -0.13824462890625, + "y": -0.179229736328125 + }, + { + "x": -0.22735595703125, + "y": 0.439178466796875 + }, + { + "x": -0.856597900390625, + "y": 0.384765625 + }, + { + "x": -0.1556396484375, + "y": -0.28533935546875 + }, + { + "x": -0.25, + "y": -0.723114013671875 + }, + { + "x": -0.873138427734375, + "y": 0.283416748046875 + }, + { + "x": 0.477752685546875, + "y": 0.10162353515625 + }, + { + "x": -0.6324462890625, + "y": 0.2049560546875 + }, + { + "x": -0.796295166015625, + "y": 0.5185546875 + }, + { + "x": -1.120330810546875, + "y": 0.4993896484375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2890862875332572, + "y": 0.07702422618677669, + "z": 1.1127303794991417 + }, + "rotation": { + "quaternion": { + "W": 0.6976083449624564, + "X": 0.05424513172625402, + "Y": 0.07477353614938372, + "Z": -0.71049910697654 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img50.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img50.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 495.2045593261719, + "y": 410.3787841796875 + }, + { + "x": 520.6166381835938, + "y": 411.3515930175781 + }, + { + "x": 544.4305419921875, + "y": 411.84033203125 + }, + { + "x": 567.6362915039062, + "y": 412.2072448730469 + }, + { + "x": 591.6848754882812, + "y": 414.9226379394531 + }, + { + "x": 616.5093383789062, + "y": 413.26080322265625 + }, + { + "x": 642.0208740234375, + "y": 415.6170349121094 + }, + { + "x": 498.9075012207031, + "y": 433.4759216308594 + }, + { + "x": 522.8449096679688, + "y": 433.76019287109375 + }, + { + "x": 545.5731811523438, + "y": 434.7160949707031 + }, + { + "x": 568.6934814453125, + "y": 436.5884704589844 + }, + { + "x": 593.76904296875, + "y": 436.5176086425781 + }, + { + "x": 618.5960693359375, + "y": 437.7357482910156 + }, + { + "x": 643.351318359375, + "y": 438.6590576171875 + }, + { + "x": 500.6219787597656, + "y": 455.3477783203125 + }, + { + "x": 524.0323486328125, + "y": 457.37109375 + }, + { + "x": 548.8016967773438, + "y": 456.3462219238281 + }, + { + "x": 571.9000244140625, + "y": 459.93426513671875 + }, + { + "x": 593.7424926757812, + "y": 461.14715576171875 + }, + { + "x": 619.1929321289062, + "y": 460.4938659667969 + }, + { + "x": 644.0556640625, + "y": 461.21807861328125 + }, + { + "x": 501.1446838378906, + "y": 477.48638916015625 + }, + { + "x": 525.862548828125, + "y": 478.42169189453125 + }, + { + "x": 547.70458984375, + "y": 479.3226318359375 + }, + { + "x": 573.2363891601562, + "y": 480.5765075683594 + }, + { + "x": 594.6966552734375, + "y": 481.5254821777344 + }, + { + "x": 622.340576171875, + "y": 481.837890625 + }, + { + "x": 643.1101684570312, + "y": 483.74896240234375 + }, + { + "x": 504.1297607421875, + "y": 499.4547119140625 + }, + { + "x": 525.3048095703125, + "y": 499.7059326171875 + }, + { + "x": 550.3910522460938, + "y": 501.5479736328125 + }, + { + "x": 572.909423828125, + "y": 502.685546875 + }, + { + "x": 596.6629638671875, + "y": 504.65472412109375 + }, + { + "x": 620.8258056640625, + "y": 505.34466552734375 + }, + { + "x": 646.203857421875, + "y": 505.06787109375 + }, + { + "x": 505.2529602050781, + "y": 520.5718383789062 + }, + { + "x": 527.2504272460938, + "y": 523.2951049804688 + }, + { + "x": 551.7844848632812, + "y": 523.6135864257812 + }, + { + "x": 575.0955200195312, + "y": 524.0780639648438 + }, + { + "x": 598.1475830078125, + "y": 526.1996459960938 + }, + { + "x": 621.5281982421875, + "y": 527.2435913085938 + }, + { + "x": 646.0023803710938, + "y": 528.83447265625 + }, + { + "x": 507.5670471191406, + "y": 540.5322875976562 + }, + { + "x": 529.6398315429688, + "y": 543.4609375 + }, + { + "x": 552.5286865234375, + "y": 544.6544799804688 + }, + { + "x": 575.956787109375, + "y": 546.4658203125 + }, + { + "x": 599.12451171875, + "y": 546.7388916015625 + }, + { + "x": 622.4588012695312, + "y": 548.4862060546875 + }, + { + "x": 644.4393310546875, + "y": 550.5939331054688 + } + ], + "reprojectionErrors": [ + { + "x": 1.344879150390625, + "y": -0.00396728515625 + }, + { + "x": -0.35540771484375, + "y": -0.18084716796875 + }, + { + "x": -0.24420166015625, + "y": 0.133148193359375 + }, + { + "x": 0.69122314453125, + "y": 0.5758056640625 + }, + { + "x": 1.0028076171875, + "y": -1.323028564453125 + }, + { + "x": 0.76043701171875, + "y": 1.16241455078125 + }, + { + "x": 0.05584716796875, + "y": -0.363067626953125 + }, + { + "x": -0.45526123046875, + "y": -0.431549072265625 + }, + { + "x": -0.863037109375, + "y": 0.174285888671875 + }, + { + "x": 0.14825439453125, + "y": 0.11602783203125 + }, + { + "x": 0.980224609375, + "y": -0.851043701171875 + }, + { + "x": 0.07244873046875, + "y": 0.132843017578125 + }, + { + "x": -0.36846923828125, + "y": -0.164398193359375 + }, + { + "x": -0.516357421875, + "y": -0.15887451171875 + }, + { + "x": -0.319915771484375, + "y": 0.038848876953125 + }, + { + "x": -0.3785400390625, + "y": -1.003082275390625 + }, + { + "x": -1.5894775390625, + "y": 1.011474609375 + }, + { + "x": -0.91998291015625, + "y": -1.578521728515625 + }, + { + "x": 1.21746826171875, + "y": -1.784881591796875 + }, + { + "x": -0.03814697265625, + "y": -0.116424560546875 + }, + { + "x": -0.48822021484375, + "y": 0.1832275390625 + }, + { + "x": 0.955841064453125, + "y": -0.0726318359375 + }, + { + "x": -0.58404541015625, + "y": 0.06201171875 + }, + { + "x": 0.95538330078125, + "y": 0.239990234375 + }, + { + "x": -0.98870849609375, + "y": 0.074127197265625 + }, + { + "x": 1.3475341796875, + "y": 0.22235107421875 + }, + { + "x": -2.28826904296875, + "y": 1.0164794921875 + }, + { + "x": 1.1646728515625, + "y": 0.22137451171875 + }, + { + "x": -0.28057861328125, + "y": -0.31732177734375 + }, + { + "x": 1.55255126953125, + "y": 0.587371826171875 + }, + { + "x": -0.32501220703125, + "y": -0.089141845703125 + }, + { + "x": 0.568359375, + "y": -0.051422119140625 + }, + { + "x": 0.4322509765625, + "y": -0.83544921875 + }, + { + "x": 0.09527587890625, + "y": -0.330230712890625 + }, + { + "x": -1.24591064453125, + "y": 1.151885986328125 + }, + { + "x": 0.296539306640625, + "y": -0.0030517578125 + }, + { + "x": 1.141357421875, + "y": -1.48699951171875 + }, + { + "x": -0.3529052734375, + "y": -0.55584716796875 + }, + { + "x": -0.42401123046875, + "y": 0.23974609375 + }, + { + "x": -0.0335693359375, + "y": -0.611328125 + }, + { + "x": 0.23358154296875, + "y": -0.37408447265625 + }, + { + "x": -0.38494873046875, + "y": -0.67291259765625 + }, + { + "x": -0.364166259765625, + "y": 1.186279296875 + }, + { + "x": 0.2431640625, + "y": -0.421875 + }, + { + "x": 0.22918701171875, + "y": -0.28411865234375 + }, + { + "x": -0.12689208984375, + "y": -0.75311279296875 + }, + { + "x": -0.02301025390625, + "y": 0.32733154296875 + }, + { + "x": 0.1165771484375, + "y": -0.05523681640625 + }, + { + "x": 1.814697265625, + "y": -0.78680419921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.10375497551288743, + "y": 0.006814943788238995, + "z": 1.145317350494129 + }, + "rotation": { + "quaternion": { + "W": 0.9780745021245595, + "X": 0.1815439583079305, + "Y": 0.10199210798658662, + "Z": -0.003109566551125678 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img51.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img51.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 698.1541137695312, + "y": 377.0890808105469 + }, + { + "x": 723.1089477539062, + "y": 378.5148010253906 + }, + { + "x": 746.126220703125, + "y": 380.5123291015625 + }, + { + "x": 770.0663452148438, + "y": 381.169677734375 + }, + { + "x": 793.4315185546875, + "y": 384.4300842285156 + }, + { + "x": 818.4109497070312, + "y": 384.2196960449219 + }, + { + "x": 843.1283569335938, + "y": 386.7319030761719 + }, + { + "x": 700.5565795898438, + "y": 400.2195129394531 + }, + { + "x": 723.6063232421875, + "y": 402.1884460449219 + }, + { + "x": 746.8275146484375, + "y": 403.1148376464844 + }, + { + "x": 769.921630859375, + "y": 406.1081237792969 + }, + { + "x": 794.3201293945312, + "y": 406.7082214355469 + }, + { + "x": 817.936767578125, + "y": 409.43536376953125 + }, + { + "x": 843.2388305664062, + "y": 410.6690979003906 + }, + { + "x": 701.3076171875, + "y": 423.1072692871094 + }, + { + "x": 724.3504638671875, + "y": 425.57061767578125 + }, + { + "x": 747.70849609375, + "y": 426.3174743652344 + }, + { + "x": 770.8336181640625, + "y": 428.90802001953125 + }, + { + "x": 793.5275268554688, + "y": 431.93304443359375 + }, + { + "x": 817.8236083984375, + "y": 431.8779602050781 + }, + { + "x": 842.4779052734375, + "y": 434.7859191894531 + }, + { + "x": 701.2357177734375, + "y": 446.1623229980469 + }, + { + "x": 725.1549072265625, + "y": 447.6374206542969 + }, + { + "x": 746.4746704101562, + "y": 449.08306884765625 + }, + { + "x": 771.4708862304688, + "y": 452.39605712890625 + }, + { + "x": 793.4512939453125, + "y": 453.63751220703125 + }, + { + "x": 819.7688598632812, + "y": 455.152099609375 + }, + { + "x": 841.7324829101562, + "y": 457.8061828613281 + }, + { + "x": 702.4630126953125, + "y": 468.2999572753906 + }, + { + "x": 723.3087768554688, + "y": 469.47467041015625 + }, + { + "x": 747.7210083007812, + "y": 472.8798522949219 + }, + { + "x": 770.4446411132812, + "y": 474.453857421875 + }, + { + "x": 794.4390258789062, + "y": 477.4268493652344 + }, + { + "x": 817.8754272460938, + "y": 479.16448974609375 + }, + { + "x": 842.7401123046875, + "y": 480.2637634277344 + }, + { + "x": 702.1157836914062, + "y": 490.39593505859375 + }, + { + "x": 724.3623657226562, + "y": 493.8106994628906 + }, + { + "x": 748.4317626953125, + "y": 495.4613342285156 + }, + { + "x": 771.4421997070312, + "y": 496.5283508300781 + }, + { + "x": 794.3634643554688, + "y": 499.7574768066406 + }, + { + "x": 817.6196899414062, + "y": 502.1789855957031 + }, + { + "x": 841.5640869140625, + "y": 504.67596435546875 + }, + { + "x": 703.5257568359375, + "y": 511.3643798828125 + }, + { + "x": 725.0799560546875, + "y": 514.8074951171875 + }, + { + "x": 748.1441040039062, + "y": 517.3535766601562 + }, + { + "x": 770.9152221679688, + "y": 520.0087890625 + }, + { + "x": 793.82568359375, + "y": 521.7894897460938 + }, + { + "x": 816.9520874023438, + "y": 524.3633422851562 + }, + { + "x": 840.1223754882812, + "y": 527.14013671875 + } + ], + "reprojectionErrors": [ + { + "x": 1.9927978515625, + "y": 0.561187744140625 + }, + { + "x": -0.12750244140625, + "y": 0.503936767578125 + }, + { + "x": 0.0933837890625, + "y": -0.101226806640625 + }, + { + "x": -0.19427490234375, + "y": 0.65838623046875 + }, + { + "x": 0.5184326171875, + "y": -1.15985107421875 + }, + { + "x": 0.05389404296875, + "y": 0.51861572265625 + }, + { + "x": 0.30023193359375, + "y": -0.4989013671875 + }, + { + "x": 0.19378662109375, + "y": 0.3848876953125 + }, + { + "x": -0.150634765625, + "y": -0.023895263671875 + }, + { + "x": -0.26763916015625, + "y": 0.636962890625 + }, + { + "x": 0.1519775390625, + "y": -0.741180419921875 + }, + { + "x": -0.3125, + "y": 0.30242919921875 + }, + { + "x": 0.4366455078125, + "y": -0.751617431640625 + }, + { + "x": -0.05621337890625, + "y": -0.2821044921875 + }, + { + "x": 0.013427734375, + "y": 0.20672607421875 + }, + { + "x": -0.45074462890625, + "y": -0.509033203125 + }, + { + "x": -0.83563232421875, + "y": 0.52191162109375 + }, + { + "x": -0.58294677734375, + "y": -0.259796142578125 + }, + { + "x": 0.5164794921875, + "y": -1.44415283203125 + }, + { + "x": 0.44024658203125, + "y": 0.48431396484375 + }, + { + "x": 0.4439697265625, + "y": -0.516693115234375 + }, + { + "x": 0.62384033203125, + "y": -0.374786376953125 + }, + { + "x": -0.840576171875, + "y": 0.0810546875 + }, + { + "x": 0.684326171875, + "y": 0.599578857421875 + }, + { + "x": -1.06707763671875, + "y": -0.71514892578125 + }, + { + "x": 0.60809326171875, + "y": 0.07666015625 + }, + { + "x": -1.63232421875, + "y": 0.6312255859375 + }, + { + "x": 0.91412353515625, + "y": 0.08319091796875 + }, + { + "x": -0.09637451171875, + "y": -0.266754150390625 + }, + { + "x": 1.39111328125, + "y": 0.6689453125 + }, + { + "x": -0.30218505859375, + "y": -0.589691162109375 + }, + { + "x": 0.0888671875, + "y": 0.0198974609375 + }, + { + "x": -0.3848876953125, + "y": -0.731475830078125 + }, + { + "x": 0.11614990234375, + "y": -0.208465576171875 + }, + { + "x": -0.3831787109375, + "y": 0.992950439453125 + }, + { + "x": 0.72705078125, + "y": -0.3370361328125 + }, + { + "x": 0.69476318359375, + "y": -1.46563720703125 + }, + { + "x": -0.77886962890625, + "y": -0.791168212890625 + }, + { + "x": -0.80218505859375, + "y": 0.5068359375 + }, + { + "x": -0.33477783203125, + "y": -0.31634521484375 + }, + { + "x": 0.209716796875, + "y": -0.28985595703125 + }, + { + "x": 0.48907470703125, + "y": -0.29571533203125 + }, + { + "x": -0.237060546875, + "y": 0.507904052734375 + }, + { + "x": 0.3065185546875, + "y": -0.47686767578125 + }, + { + "x": -0.282470703125, + "y": -0.52294921875 + }, + { + "x": -0.1912841796875, + "y": -0.635498046875 + }, + { + "x": 0.15765380859375, + "y": 0.1702880859375 + }, + { + "x": 0.6981201171875, + "y": 0.22784423828125 + }, + { + "x": 1.61297607421875, + "y": 0.1285400390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.11008798844818402, + "y": -0.027788829857821988, + "z": 1.1809983494378533 + }, + "rotation": { + "quaternion": { + "W": 0.9685065413290872, + "X": 0.13531879884254341, + "Y": 0.20894650722937297, + "Z": 0.005025853084409768 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img52.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img52.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 788.836669921875, + "y": 342.4340515136719 + }, + { + "x": 814.1915283203125, + "y": 343.186767578125 + }, + { + "x": 837.854736328125, + "y": 344.9497375488281 + }, + { + "x": 863.02392578125, + "y": 345.1205139160156 + }, + { + "x": 887.0181274414062, + "y": 347.4445495605469 + }, + { + "x": 912.0739135742188, + "y": 347.30218505859375 + }, + { + "x": 936.5064697265625, + "y": 349.3912658691406 + }, + { + "x": 790.4964599609375, + "y": 366.0954895019531 + }, + { + "x": 814.3805541992188, + "y": 367.8966369628906 + }, + { + "x": 839.1729736328125, + "y": 368.1809997558594 + }, + { + "x": 862.2090454101562, + "y": 370.6091003417969 + }, + { + "x": 887.6422119140625, + "y": 370.62353515625 + }, + { + "x": 911.7457275390625, + "y": 372.31695556640625 + }, + { + "x": 936.688232421875, + "y": 373.4652404785156 + }, + { + "x": 791.2783813476562, + "y": 389.88653564453125 + }, + { + "x": 815.329833984375, + "y": 391.6406555175781 + }, + { + "x": 839.8719482421875, + "y": 391.5839538574219 + }, + { + "x": 863.5137939453125, + "y": 393.9309387207031 + }, + { + "x": 886.6698608398438, + "y": 395.9915466308594 + }, + { + "x": 911.6328735351562, + "y": 396.0624694824219 + }, + { + "x": 935.7697143554688, + "y": 397.7129211425781 + }, + { + "x": 791.0690307617188, + "y": 413.53936767578125 + }, + { + "x": 815.3110961914062, + "y": 414.4370422363281 + }, + { + "x": 838.4166870117188, + "y": 415.30328369140625 + }, + { + "x": 863.402099609375, + "y": 417.8597106933594 + }, + { + "x": 886.4652709960938, + "y": 418.69464111328125 + }, + { + "x": 912.8970336914062, + "y": 418.8175354003906 + }, + { + "x": 934.7479858398438, + "y": 421.0870666503906 + }, + { + "x": 791.964111328125, + "y": 436.05950927734375 + }, + { + "x": 814.04150390625, + "y": 436.6341857910156 + }, + { + "x": 838.8123168945312, + "y": 439.5950927734375 + }, + { + "x": 862.5189819335938, + "y": 440.5072021484375 + }, + { + "x": 886.60498046875, + "y": 442.72100830078125 + }, + { + "x": 910.402099609375, + "y": 443.4791564941406 + }, + { + "x": 935.8300170898438, + "y": 443.5779724121094 + }, + { + "x": 791.4100952148438, + "y": 459.09088134765625 + }, + { + "x": 814.5744018554688, + "y": 461.60528564453125 + }, + { + "x": 839.4030151367188, + "y": 462.5711975097656 + }, + { + "x": 862.7933349609375, + "y": 463.1030578613281 + }, + { + "x": 886.2528686523438, + "y": 465.27227783203125 + }, + { + "x": 909.8926391601562, + "y": 466.9532470703125 + }, + { + "x": 934.0772094726562, + "y": 468.7615661621094 + }, + { + "x": 792.5341186523438, + "y": 480.49700927734375 + }, + { + "x": 814.569091796875, + "y": 483.29925537109375 + }, + { + "x": 838.4898071289062, + "y": 485.1873474121094 + }, + { + "x": 862.3675537109375, + "y": 486.9820556640625 + }, + { + "x": 885.871826171875, + "y": 487.8220520019531 + }, + { + "x": 909.4216918945312, + "y": 489.6737060546875 + }, + { + "x": 932.0379028320312, + "y": 492.06964111328125 + } + ], + "reprojectionErrors": [ + { + "x": 2.44378662109375, + "y": 1.539398193359375 + }, + { + "x": 0.38433837890625, + "y": 1.45159912109375 + }, + { + "x": 0.4486083984375, + "y": 0.36572265625 + }, + { + "x": -0.548828125, + "y": 0.884552001953125 + }, + { + "x": 0.08538818359375, + "y": -0.73699951171875 + }, + { + "x": 0.12774658203125, + "y": 0.121063232421875 + }, + { + "x": 1.276611328125, + "y": -1.23870849609375 + }, + { + "x": 1.00909423828125, + "y": 1.1170654296875 + }, + { + "x": 0.3143310546875, + "y": 0.190216064453125 + }, + { + "x": -0.86065673828125, + "y": 0.796112060546875 + }, + { + "x": 0.1607666015625, + "y": -0.725341796875 + }, + { + "x": -0.76251220703125, + "y": 0.1837158203125 + }, + { + "x": 0.10906982421875, + "y": -0.56884765625 + }, + { + "x": 0.62017822265625, + "y": -0.758453369140625 + }, + { + "x": 0.4285888671875, + "y": 0.367828369140625 + }, + { + "x": -0.53741455078125, + "y": -0.306304931640625 + }, + { + "x": -1.56976318359375, + "y": 0.85003662109375 + }, + { + "x": -1.265869140625, + "y": -0.377105712890625 + }, + { + "x": -0.028076171875, + "y": -1.297149658203125 + }, + { + "x": -0.1363525390625, + "y": -0.206146240234375 + }, + { + "x": 1.05548095703125, + "y": -0.672760009765625 + }, + { + "x": 0.8160400390625, + "y": -0.43353271484375 + }, + { + "x": -0.4422607421875, + "y": -0.04901123046875 + }, + { + "x": -0.1435546875, + "y": 0.390167236328125 + }, + { + "x": -1.2926025390625, + "y": -0.83697509765625 + }, + { + "x": -0.0753173828125, + "y": -0.31805419921875 + }, + { + "x": -1.77008056640625, + "y": 0.9381103515625 + }, + { + "x": 1.58538818359375, + "y": 0.073577880859375 + }, + { + "x": 0.0760498046875, + "y": -0.28570556640625 + }, + { + "x": 0.8829345703125, + "y": 0.620635986328125 + }, + { + "x": -0.5867919921875, + "y": -0.83251953125 + }, + { + "x": -0.56414794921875, + "y": -0.20941162109375 + }, + { + "x": -0.480712890625, + "y": -0.859771728515625 + }, + { + "x": 0.343994140625, + "y": -0.025482177734375 + }, + { + "x": 0.00299072265625, + "y": 1.498016357421875 + }, + { + "x": 0.7625732421875, + "y": -0.8260498046875 + }, + { + "x": 0.38507080078125, + "y": -1.663818359375 + }, + { + "x": -1.24346923828125, + "y": -0.9229736328125 + }, + { + "x": -1.00921630859375, + "y": 0.282928466796875 + }, + { + "x": -0.407958984375, + "y": -0.116729736328125 + }, + { + "x": 0.46142578125, + "y": 0.004547119140625 + }, + { + "x": 1.24688720703125, + "y": 0.032135009765625 + }, + { + "x": -0.2513427734375, + "y": 0.08837890625 + }, + { + "x": 0.4051513671875, + "y": -0.8447265625 + }, + { + "x": -0.41436767578125, + "y": -0.830169677734375 + }, + { + "x": -0.77008056640625, + "y": -0.687896728515625 + }, + { + "x": -0.31982421875, + "y": 0.4444580078125 + }, + { + "x": 0.52923583984375, + "y": 0.6014404296875 + }, + { + "x": 2.768798828125, + "y": 0.25146484375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.20913628521821698, + "y": -0.06419571815771814, + "z": 1.1917216665166876 + }, + "rotation": { + "quaternion": { + "W": 0.9695548462370105, + "X": 0.10676730931510627, + "Y": 0.2203641591674228, + "Z": 0.0019440047258433937 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img53.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img53.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 725.0858154296875, + "y": 577.7716674804688 + }, + { + "x": 724.209228515625, + "y": 557.6597290039062 + }, + { + "x": 724.4373779296875, + "y": 537.58447265625 + }, + { + "x": 723.39892578125, + "y": 516.6686401367188 + }, + { + "x": 723.7467651367188, + "y": 495.4571228027344 + }, + { + "x": 723.1912231445312, + "y": 473.80743408203125 + }, + { + "x": 721.69580078125, + "y": 452.27374267578125 + }, + { + "x": 747.0927734375, + "y": 578.5350341796875 + }, + { + "x": 746.6096801757812, + "y": 558.8945922851562 + }, + { + "x": 745.175537109375, + "y": 536.5179443359375 + }, + { + "x": 747.1940307617188, + "y": 516.5052490234375 + }, + { + "x": 746.664306640625, + "y": 495.9660949707031 + }, + { + "x": 746.214111328125, + "y": 474.27978515625 + }, + { + "x": 745.3232421875, + "y": 451.87969970703125 + }, + { + "x": 769.7212524414062, + "y": 578.68115234375 + }, + { + "x": 770.398681640625, + "y": 558.7935180664062 + }, + { + "x": 769.6553955078125, + "y": 537.9462890625 + }, + { + "x": 768.7135009765625, + "y": 516.4236450195312 + }, + { + "x": 769.87646484375, + "y": 495.0768737792969 + }, + { + "x": 769.343505859375, + "y": 473.7914733886719 + }, + { + "x": 768.6185913085938, + "y": 452.3553161621094 + }, + { + "x": 791.891845703125, + "y": 578.9530029296875 + }, + { + "x": 792.0797729492188, + "y": 558.0029296875 + }, + { + "x": 791.4518432617188, + "y": 537.3907470703125 + }, + { + "x": 792.5089111328125, + "y": 517.2696533203125 + }, + { + "x": 792.4055786132812, + "y": 495.984130859375 + }, + { + "x": 792.0684814453125, + "y": 474.6905212402344 + }, + { + "x": 791.5375366210938, + "y": 451.72137451171875 + }, + { + "x": 813.6934204101562, + "y": 578.588623046875 + }, + { + "x": 814.4420166015625, + "y": 558.5689086914062 + }, + { + "x": 814.7606201171875, + "y": 537.843505859375 + }, + { + "x": 813.7816162109375, + "y": 516.7046508789062 + }, + { + "x": 814.511962890625, + "y": 496.52520751953125 + }, + { + "x": 815.2990112304688, + "y": 474.13189697265625 + }, + { + "x": 814.3652954101562, + "y": 453.0974426269531 + }, + { + "x": 835.8527221679688, + "y": 578.7001953125 + }, + { + "x": 836.5946655273438, + "y": 558.5562744140625 + }, + { + "x": 836.562744140625, + "y": 537.5249633789062 + }, + { + "x": 838.349609375, + "y": 516.2683715820312 + }, + { + "x": 837.4650268554688, + "y": 495.41033935546875 + }, + { + "x": 838.086181640625, + "y": 474.4386901855469 + }, + { + "x": 837.68994140625, + "y": 451.3125 + }, + { + "x": 857.7443237304688, + "y": 579.0997314453125 + }, + { + "x": 858.8871459960938, + "y": 558.6602172851562 + }, + { + "x": 859.9788818359375, + "y": 537.3531494140625 + }, + { + "x": 859.1456909179688, + "y": 516.5621948242188 + }, + { + "x": 860.8185424804688, + "y": 495.4119567871094 + }, + { + "x": 861.0106201171875, + "y": 473.7145080566406 + }, + { + "x": 861.6050415039062, + "y": 451.8409423828125 + } + ], + "reprojectionErrors": [ + { + "x": -0.1673583984375, + "y": 0.52374267578125 + }, + { + "x": 0.416748046875, + "y": 0.2659912109375 + }, + { + "x": -0.10693359375, + "y": -0.2396240234375 + }, + { + "x": 0.6329345703125, + "y": -0.11895751953125 + }, + { + "x": -0.0166015625, + "y": 0.07965087890625 + }, + { + "x": 0.23406982421875, + "y": 0.495391845703125 + }, + { + "x": 1.42144775390625, + "y": 0.57061767578125 + }, + { + "x": -0.09808349609375, + "y": -0.1697998046875 + }, + { + "x": 0.20574951171875, + "y": -0.94415283203125 + }, + { + "x": 1.458740234375, + "y": 0.8056640625 + }, + { + "x": -0.7427978515625, + "y": -0.02386474609375 + }, + { + "x": -0.39801025390625, + "y": -0.5455322265625 + }, + { + "x": -0.134765625, + "y": -0.142120361328125 + }, + { + "x": 0.56719970703125, + "y": 0.74951171875 + }, + { + "x": -0.54962158203125, + "y": -0.21502685546875 + }, + { + "x": -1.29205322265625, + "y": -0.78857421875 + }, + { + "x": -0.61444091796875, + "y": -0.6156005859375 + }, + { + "x": 0.260986328125, + "y": 0.0164794921875 + }, + { + "x": -0.9691162109375, + "y": 0.252960205078125 + }, + { + "x": -0.50408935546875, + "y": 0.204986572265625 + }, + { + "x": 0.15216064453125, + "y": 0.0811767578125 + }, + { + "x": -0.4375, + "y": -0.35455322265625 + }, + { + "x": -0.5750732421875, + "y": 0.08648681640625 + }, + { + "x": 0.1036376953125, + "y": -0.0244140625 + }, + { + "x": -0.90216064453125, + "y": -0.84375 + }, + { + "x": -0.74700927734375, + "y": -0.7193603515625 + }, + { + "x": -0.357666015625, + "y": -0.811126708984375 + }, + { + "x": 0.22607421875, + "y": 0.544952392578125 + }, + { + "x": 0.15447998046875, + "y": 0.17376708984375 + }, + { + "x": -0.4273681640625, + "y": -0.36480712890625 + }, + { + "x": -0.5775146484375, + "y": -0.4127197265625 + }, + { + "x": 0.57171630859375, + "y": -0.265625 + }, + { + "x": 0.01324462890625, + "y": -1.299713134765625 + }, + { + "x": -0.60015869140625, + "y": -0.345306396484375 + }, + { + "x": 0.50897216796875, + "y": -0.97857666015625 + }, + { + "x": 0.504638671875, + "y": 0.2579345703125 + }, + { + "x": 0.04718017578125, + "y": -0.20697021484375 + }, + { + "x": 0.366455078125, + "y": -7.32421875E-4 + }, + { + "x": -1.130126953125, + "y": 0.2113037109375 + }, + { + "x": 0.04766845703125, + "y": -0.198150634765625 + }, + { + "x": -0.27716064453125, + "y": -0.720458984375 + }, + { + "x": 0.41845703125, + "y": 0.6817626953125 + }, + { + "x": 1.2437744140625, + "y": 0.08636474609375 + }, + { + "x": 0.50433349609375, + "y": -0.13507080078125 + }, + { + "x": -0.179931640625, + "y": 0.29376220703125 + }, + { + "x": 1.06494140625, + "y": -0.01409912109375 + }, + { + "x": -0.19195556640625, + "y": -0.186859130859375 + }, + { + "x": 0.0362548828125, + "y": -0.0400390625 + }, + { + "x": -0.13348388671875, + "y": 0.051666259765625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.14860089534899765, + "y": 0.2021418891602889, + "z": 1.2857007341398188 + }, + "rotation": { + "quaternion": { + "W": 0.68976886504876, + "X": 0.05096528427121681, + "Y": 0.13539085464750952, + "Z": -0.7094298901838832 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img54.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img54.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 754.0743408203125, + "y": 507.5818176269531 + }, + { + "x": 777.4288940429688, + "y": 508.1171569824219 + }, + { + "x": 799.815673828125, + "y": 508.6624450683594 + }, + { + "x": 820.5081787109375, + "y": 508.6533508300781 + }, + { + "x": 843.6318969726562, + "y": 510.7110900878906 + }, + { + "x": 865.289306640625, + "y": 509.411865234375 + }, + { + "x": 888.2061157226562, + "y": 511.6457214355469 + }, + { + "x": 754.6981201171875, + "y": 527.6788330078125 + }, + { + "x": 777.190185546875, + "y": 528.5301513671875 + }, + { + "x": 799.4041137695312, + "y": 529.2316284179688 + }, + { + "x": 820.9061889648438, + "y": 530.1690063476562 + }, + { + "x": 842.9666748046875, + "y": 530.2946166992188 + }, + { + "x": 864.9474487304688, + "y": 531.3187866210938 + }, + { + "x": 887.1207885742188, + "y": 532.1264038085938 + }, + { + "x": 754.271728515625, + "y": 547.7356567382812 + }, + { + "x": 776.568359375, + "y": 549.1577758789062 + }, + { + "x": 798.9576416015625, + "y": 548.4664306640625 + }, + { + "x": 820.81689453125, + "y": 551.48681640625 + }, + { + "x": 840.9028930664062, + "y": 551.8882446289062 + }, + { + "x": 863.1175537109375, + "y": 550.7702026367188 + }, + { + "x": 885.4275512695312, + "y": 551.4259643554688 + }, + { + "x": 753.1251831054688, + "y": 567.3869018554688 + }, + { + "x": 776.1505126953125, + "y": 567.799560546875 + }, + { + "x": 796.522216796875, + "y": 568.2965698242188 + }, + { + "x": 819.5056762695312, + "y": 569.5025024414062 + }, + { + "x": 839.4518432617188, + "y": 569.3822021484375 + }, + { + "x": 863.6657104492188, + "y": 569.7566528320312 + }, + { + "x": 882.599853515625, + "y": 571.1082763671875 + }, + { + "x": 753.3204345703125, + "y": 586.6741943359375 + }, + { + "x": 773.5263061523438, + "y": 586.5247802734375 + }, + { + "x": 796.304931640625, + "y": 588.206298828125 + }, + { + "x": 817.0914306640625, + "y": 588.39892578125 + }, + { + "x": 839.31787109375, + "y": 589.75390625 + }, + { + "x": 860.35791015625, + "y": 589.7034301757812 + }, + { + "x": 882.7930908203125, + "y": 589.7100219726562 + }, + { + "x": 751.6663818359375, + "y": 605.1378173828125 + }, + { + "x": 773.287109375, + "y": 607.4168090820312 + }, + { + "x": 795.7987670898438, + "y": 607.1685791015625 + }, + { + "x": 816.7763061523438, + "y": 607.415771484375 + }, + { + "x": 838.451416015625, + "y": 608.72998046875 + }, + { + "x": 859.2554321289062, + "y": 609.2608032226562 + }, + { + "x": 880.6118774414062, + "y": 610.1714477539062 + }, + { + "x": 751.6740112304688, + "y": 624.05517578125 + }, + { + "x": 772.914794921875, + "y": 625.3081665039062 + }, + { + "x": 794.3759765625, + "y": 625.6212158203125 + }, + { + "x": 816.348388671875, + "y": 626.6123657226562 + }, + { + "x": 836.550048828125, + "y": 626.984619140625 + }, + { + "x": 858.20361328125, + "y": 627.7322998046875 + }, + { + "x": 877.8241577148438, + "y": 628.69384765625 + } + ], + "reprojectionErrors": [ + { + "x": 1.70306396484375, + "y": 0.4737548828125 + }, + { + "x": 0.23883056640625, + "y": 0.482513427734375 + }, + { + "x": -0.18072509765625, + "y": 0.48291015625 + }, + { + "x": 1.17120361328125, + "y": 1.039276123046875 + }, + { + "x": 0.1695556640625, + "y": -0.469635009765625 + }, + { + "x": 0.71221923828125, + "y": 1.3800048828125 + }, + { + "x": 0.07379150390625, + "y": -0.301849365234375 + }, + { + "x": 0.3798828125, + "y": 0.25421142578125 + }, + { + "x": -0.355712890625, + "y": -0.0216064453125 + }, + { + "x": -0.7371826171875, + "y": -0.14593505859375 + }, + { + "x": -0.3304443359375, + "y": -0.5045166015625 + }, + { + "x": -0.405517578125, + "y": -0.04962158203125 + }, + { + "x": -0.3238525390625, + "y": -0.49169921875 + }, + { + "x": -0.35736083984375, + "y": -0.7154541015625 + }, + { + "x": 0.11846923828125, + "y": -0.13323974609375 + }, + { + "x": -0.55255126953125, + "y": -0.94915771484375 + }, + { + "x": -1.2410888671875, + "y": 0.35009765625 + }, + { + "x": -1.32421875, + "y": -2.0606689453125 + }, + { + "x": 0.441650390625, + "y": -1.8507080078125 + }, + { + "x": 0.15496826171875, + "y": -0.1195068359375 + }, + { + "x": -0.150634765625, + "y": -0.160400390625 + }, + { + "x": 0.5885009765625, + "y": -0.31591796875 + }, + { + "x": -0.9390869140625, + "y": -0.09234619140625 + }, + { + "x": 0.2611083984375, + "y": 0.048583984375 + }, + { + "x": -1.075927734375, + "y": -0.51751708984375 + }, + { + "x": 0.69915771484375, + "y": 0.24444580078125 + }, + { + "x": -1.71826171875, + "y": 0.513427734375 + }, + { + "x": 1.2196044921875, + "y": -0.19287109375 + }, + { + "x": -0.27227783203125, + "y": -0.32830810546875 + }, + { + "x": 0.89447021484375, + "y": 0.48663330078125 + }, + { + "x": -0.43817138671875, + "y": -0.52740478515625 + }, + { + "x": 0.294921875, + "y": -0.05072021484375 + }, + { + "x": -0.33795166015625, + "y": -0.7344970703125 + }, + { + "x": 0.28985595703125, + "y": -0.0108642578125 + }, + { + "x": -0.40277099609375, + "y": 0.6575927734375 + }, + { + "x": 0.72698974609375, + "y": 0.29608154296875 + }, + { + "x": 0.35650634765625, + "y": -1.28857421875 + }, + { + "x": -0.8323974609375, + "y": -0.3441162109375 + }, + { + "x": -0.41436767578125, + "y": 0.10693359375 + }, + { + "x": -0.62078857421875, + "y": -0.507080078125 + }, + { + "x": 0.1173095703125, + "y": -0.335693359375 + }, + { + "x": 0.3768310546875, + "y": -0.54217529296875 + }, + { + "x": 0.07489013671875, + "y": 0.28656005859375 + }, + { + "x": -0.0352783203125, + "y": -0.24395751953125 + }, + { + "x": -0.294189453125, + "y": 0.16748046875 + }, + { + "x": -0.99237060546875, + "y": -0.09710693359375 + }, + { + "x": 0.15252685546875, + "y": 0.25921630859375 + }, + { + "x": -0.08184814453125, + "y": 0.2421875 + }, + { + "x": 1.789794921875, + "y": 0.01336669921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.18628568986872646, + "y": 0.12200980543079425, + "z": 1.298710472269133 + }, + "rotation": { + "quaternion": { + "W": 0.9872408165316764, + "X": 0.152583866573862, + "Y": 0.04551810104448399, + "Z": 0.001355106100224823 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img55.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img55.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 751.6323852539062, + "y": 591.6427612304688 + }, + { + "x": 773.2001953125, + "y": 593.4125366210938 + }, + { + "x": 794.5787353515625, + "y": 595.4035034179688 + }, + { + "x": 814.4010009765625, + "y": 596.3378295898438 + }, + { + "x": 835.941650390625, + "y": 599.5787963867188 + }, + { + "x": 856.79931640625, + "y": 599.3924560546875 + }, + { + "x": 878.6757202148438, + "y": 602.5120239257812 + }, + { + "x": 751.4347534179688, + "y": 610.83984375 + }, + { + "x": 772.8138427734375, + "y": 612.4139404296875 + }, + { + "x": 793.66552734375, + "y": 614.7559204101562 + }, + { + "x": 813.65380859375, + "y": 616.551513671875 + }, + { + "x": 834.769775390625, + "y": 617.5573120117188 + }, + { + "x": 855.8244018554688, + "y": 619.9733276367188 + }, + { + "x": 877.3628540039062, + "y": 621.43701171875 + }, + { + "x": 750.2661743164062, + "y": 629.4024047851562 + }, + { + "x": 771.4915161132812, + "y": 632.00634765625 + }, + { + "x": 793.109619140625, + "y": 632.56884765625 + }, + { + "x": 812.6345825195312, + "y": 636.124755859375 + }, + { + "x": 832.157958984375, + "y": 637.7485961914062 + }, + { + "x": 853.9193725585938, + "y": 638.3572387695312 + }, + { + "x": 874.80810546875, + "y": 639.4195556640625 + }, + { + "x": 748.4091796875, + "y": 647.7495727539062 + }, + { + "x": 769.9754638671875, + "y": 649.4397583007812 + }, + { + "x": 789.2599487304688, + "y": 650.8742065429688 + }, + { + "x": 810.9904174804688, + "y": 653.6279907226562 + }, + { + "x": 829.6483154296875, + "y": 653.4962768554688 + }, + { + "x": 852.9297485351562, + "y": 655.8368530273438 + }, + { + "x": 871.222412109375, + "y": 657.903076171875 + }, + { + "x": 747.705322265625, + "y": 665.76611328125 + }, + { + "x": 767.164306640625, + "y": 666.6435546875 + }, + { + "x": 788.5572509765625, + "y": 669.5844116210938 + }, + { + "x": 808.1867065429688, + "y": 670.60107421875 + }, + { + "x": 829.0248413085938, + "y": 673.2285766601562 + }, + { + "x": 848.9411010742188, + "y": 673.4573364257812 + }, + { + "x": 870.4644775390625, + "y": 675.8255615234375 + }, + { + "x": 745.6034545898438, + "y": 682.5736694335938 + }, + { + "x": 766.349853515625, + "y": 686.1749267578125 + }, + { + "x": 787.3281860351562, + "y": 687.1952514648438 + }, + { + "x": 806.921875, + "y": 688.664306640625 + }, + { + "x": 827.7568969726562, + "y": 690.8287963867188 + }, + { + "x": 847.5565185546875, + "y": 692.4138793945312 + }, + { + "x": 867.7766723632812, + "y": 694.3438720703125 + }, + { + "x": 745.5962524414062, + "y": 700.0255126953125 + }, + { + "x": 764.9674072265625, + "y": 703.2470092773438 + }, + { + "x": 785.407958984375, + "y": 704.5831909179688 + }, + { + "x": 805.5274047851562, + "y": 706.5801391601562 + }, + { + "x": 825.4325561523438, + "y": 707.8037109375 + }, + { + "x": 845.4252319335938, + "y": 709.44384765625 + }, + { + "x": 864.574951171875, + "y": 711.5421752929688 + } + ], + "reprojectionErrors": [ + { + "x": 1.51397705078125, + "y": 0.8350830078125 + }, + { + "x": 0.63580322265625, + "y": 0.70404052734375 + }, + { + "x": 0.0281982421875, + "y": 0.35784912109375 + }, + { + "x": 1.05853271484375, + "y": 1.074462890625 + }, + { + "x": 0.45263671875, + "y": -0.509521484375 + }, + { + "x": 0.61224365234375, + "y": 1.34002685546875 + }, + { + "x": -0.163818359375, + "y": -0.11016845703125 + }, + { + "x": 0.2939453125, + "y": 0.1044921875 + }, + { + "x": -0.5115966796875, + "y": 0.1961669921875 + }, + { + "x": -0.70947265625, + "y": -0.473876953125 + }, + { + "x": 0.03692626953125, + "y": -0.5914306640625 + }, + { + "x": -0.26318359375, + "y": 0.08697509765625 + }, + { + "x": -0.42034912109375, + "y": -0.63861083984375 + }, + { + "x": -0.97918701171875, + "y": -0.40557861328125 + }, + { + "x": 0.06121826171875, + "y": -0.15972900390625 + }, + { + "x": -0.70428466796875, + "y": -1.0714111328125 + }, + { + "x": -1.78302001953125, + "y": 0.0645751953125 + }, + { + "x": -0.68878173828125, + "y": -1.78668212890625 + }, + { + "x": 0.4874267578125, + "y": -1.69964599609375 + }, + { + "x": -0.49371337890625, + "y": -0.59112548828125 + }, + { + "x": -0.52099609375, + "y": 0.070068359375 + }, + { + "x": 0.53271484375, + "y": -0.370849609375 + }, + { + "x": -0.6849365234375, + "y": -0.3427734375 + }, + { + "x": 0.4578857421875, + "y": -0.05267333984375 + }, + { + "x": -0.76629638671875, + "y": -1.07568359375 + }, + { + "x": 1.16156005859375, + "y": 0.7930908203125 + }, + { + "x": -1.4542236328125, + "y": 0.1959228515625 + }, + { + "x": 0.9990234375, + "y": -0.12054443359375 + }, + { + "x": -0.13360595703125, + "y": -0.407958984375 + }, + { + "x": 0.647216796875, + "y": 0.45843505859375 + }, + { + "x": -0.4281005859375, + "y": -0.7322998046875 + }, + { + "x": 0.3382568359375, + "y": 0.0074462890625 + }, + { + "x": -0.02545166015625, + "y": -0.85723876953125 + }, + { + "x": 0.61175537109375, + "y": 0.68310546875 + }, + { + "x": -0.27874755859375, + "y": 0.0904541015625 + }, + { + "x": 0.6129150390625, + "y": 0.613037109375 + }, + { + "x": -1.8310546875E-4, + "y": -1.21929931640625 + }, + { + "x": -0.7681884765625, + "y": -0.46441650390625 + }, + { + "x": -0.07415771484375, + "y": -0.15185546875 + }, + { + "x": -0.543701171875, + "y": -0.5283203125 + }, + { + "x": 0.10040283203125, + "y": -0.3189697265625 + }, + { + "x": 0.40252685546875, + "y": -0.44805908203125 + }, + { + "x": -0.7208251953125, + "y": 0.8441162109375 + }, + { + "x": -0.0628662109375, + "y": -0.58380126953125 + }, + { + "x": -0.39813232421875, + "y": -0.12005615234375 + }, + { + "x": -0.335693359375, + "y": -0.31060791015625 + }, + { + "x": 0.01806640625, + "y": 0.27862548828125 + }, + { + "x": 0.3616943359375, + "y": 0.45782470703125 + }, + { + "x": 1.6260986328125, + "y": 0.185302734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.1936234508569199, + "y": 0.23334071386189034, + "z": 1.3725964776067723 + }, + "rotation": { + "quaternion": { + "W": 0.9876408907401896, + "X": 0.14426682758855697, + "Y": 0.056820883038758124, + "Z": 0.02288974980541061 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img56.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img56.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 678.3822631835938, + "y": 620.1815185546875 + }, + { + "x": 700.3916625976562, + "y": 622.226806640625 + }, + { + "x": 721.294189453125, + "y": 624.2728271484375 + }, + { + "x": 741.5499877929688, + "y": 625.7106323242188 + }, + { + "x": 762.880859375, + "y": 628.991943359375 + }, + { + "x": 783.3900756835938, + "y": 629.3803100585938 + }, + { + "x": 805.6338500976562, + "y": 632.3826293945312 + }, + { + "x": 678.6013793945312, + "y": 638.2301635742188 + }, + { + "x": 699.8654174804688, + "y": 640.203369140625 + }, + { + "x": 720.1694946289062, + "y": 642.4526977539062 + }, + { + "x": 740.8780517578125, + "y": 644.7395629882812 + }, + { + "x": 761.572265625, + "y": 646.4791870117188 + }, + { + "x": 782.5571899414062, + "y": 648.6608276367188 + }, + { + "x": 803.8436889648438, + "y": 650.69140625 + }, + { + "x": 677.388427734375, + "y": 655.844970703125 + }, + { + "x": 698.7117309570312, + "y": 658.8026733398438 + }, + { + "x": 719.437744140625, + "y": 659.7440795898438 + }, + { + "x": 740.0364379882812, + "y": 662.9896240234375 + }, + { + "x": 759.121337890625, + "y": 665.3394775390625 + }, + { + "x": 780.3311157226562, + "y": 665.7308349609375 + }, + { + "x": 801.5077514648438, + "y": 667.7564697265625 + }, + { + "x": 676.1248168945312, + "y": 673.0745849609375 + }, + { + "x": 697.4362182617188, + "y": 675.312255859375 + }, + { + "x": 717.2000732421875, + "y": 677.37841796875 + }, + { + "x": 738.3084716796875, + "y": 679.8484497070312 + }, + { + "x": 757.1370849609375, + "y": 680.8062133789062 + }, + { + "x": 779.5038452148438, + "y": 683.4286499023438 + }, + { + "x": 797.5774536132812, + "y": 685.5064086914062 + }, + { + "x": 675.6288452148438, + "y": 690.488037109375 + }, + { + "x": 695.0491333007812, + "y": 691.534423828125 + }, + { + "x": 715.8140869140625, + "y": 694.845947265625 + }, + { + "x": 735.8130493164062, + "y": 696.33544921875 + }, + { + "x": 756.4034423828125, + "y": 699.0574340820312 + }, + { + "x": 776.802978515625, + "y": 700.3784790039062 + }, + { + "x": 797.0286865234375, + "y": 702.21240234375 + }, + { + "x": 674.0205688476562, + "y": 706.2661743164062 + }, + { + "x": 694.479736328125, + "y": 709.6978149414062 + }, + { + "x": 715.482421875, + "y": 711.3969116210938 + }, + { + "x": 734.575927734375, + "y": 713.3010864257812 + }, + { + "x": 755.27392578125, + "y": 715.3834228515625 + }, + { + "x": 774.75830078125, + "y": 717.484375 + }, + { + "x": 794.8382568359375, + "y": 719.7421875 + }, + { + "x": 673.8119506835938, + "y": 722.592041015625 + }, + { + "x": 694.10302734375, + "y": 725.6963500976562 + }, + { + "x": 713.4259643554688, + "y": 727.721435546875 + }, + { + "x": 733.91943359375, + "y": 729.832763671875 + }, + { + "x": 752.7378540039062, + "y": 731.836181640625 + }, + { + "x": 773.5255737304688, + "y": 733.900146484375 + }, + { + "x": 791.6407470703125, + "y": 735.68798828125 + } + ], + "reprojectionErrors": [ + { + "x": 1.6614990234375, + "y": 0.51239013671875 + }, + { + "x": 0.2630615234375, + "y": 0.43060302734375 + }, + { + "x": 0.05767822265625, + "y": 0.35589599609375 + }, + { + "x": 0.585693359375, + "y": 0.89715576171875 + }, + { + "x": 0.12591552734375, + "y": -0.39727783203125 + }, + { + "x": 0.575439453125, + "y": 1.20916748046875 + }, + { + "x": -0.62139892578125, + "y": 0.2095947265625 + }, + { + "x": 0.32366943359375, + "y": 0.05609130859375 + }, + { + "x": -0.47119140625, + "y": 0.069580078125 + }, + { + "x": -0.2210693359375, + "y": -0.185302734375 + }, + { + "x": -0.2899169921875, + "y": -0.4698486328125 + }, + { + "x": -0.2584228515625, + "y": -0.19927978515625 + }, + { + "x": -0.43115234375, + "y": -0.36285400390625 + }, + { + "x": -0.81842041015625, + "y": -0.36737060546875 + }, + { + "x": 0.4285888671875, + "y": -0.16375732421875 + }, + { + "x": -0.564208984375, + "y": -1.1121826171875 + }, + { + "x": -0.8758544921875, + "y": -0.0364990234375 + }, + { + "x": -0.975830078125, + "y": -1.25714111328125 + }, + { + "x": 0.52288818359375, + "y": -1.57415771484375 + }, + { + "x": -0.01800537109375, + "y": 0.07525634765625 + }, + { + "x": -0.43988037109375, + "y": 0.098388671875 + }, + { + "x": 0.594482421875, + "y": -0.1888427734375 + }, + { + "x": -0.5220947265625, + "y": -0.395263671875 + }, + { + "x": -0.00836181640625, + "y": -0.42236328125 + }, + { + "x": -0.75592041015625, + "y": -0.84539794921875 + }, + { + "x": 0.86004638671875, + "y": 0.251708984375 + }, + { + "x": -0.97796630859375, + "y": -0.307861328125 + }, + { + "x": 1.5618896484375, + "y": -0.314697265625 + }, + { + "x": 0.00262451171875, + "y": -0.58160400390625 + }, + { + "x": 0.6444091796875, + "y": 0.4246826171875 + }, + { + "x": 0.02325439453125, + "y": -0.8262939453125 + }, + { + "x": 0.250244140625, + "y": -0.247314453125 + }, + { + "x": -0.03155517578125, + "y": -0.89288330078125 + }, + { + "x": -0.0394287109375, + "y": -0.1295166015625 + }, + { + "x": 0.2100830078125, + "y": 0.1290283203125 + }, + { + "x": 0.5325927734375, + "y": 0.4835205078125 + }, + { + "x": 0.005615234375, + "y": -0.87451171875 + }, + { + "x": -0.98419189453125, + "y": -0.4920654296875 + }, + { + "x": 0.0162353515625, + "y": -0.30682373046875 + }, + { + "x": -0.5062255859375, + "y": -0.291748046875 + }, + { + "x": 0.2669677734375, + "y": -0.2872314453125 + }, + { + "x": 0.5269775390625, + "y": -0.4315185546875 + }, + { + "x": -0.32794189453125, + "y": 0.8297119140625 + }, + { + "x": -0.81390380859375, + "y": -0.1805419921875 + }, + { + "x": -0.25213623046875, + "y": -0.1036376953125 + }, + { + "x": -0.78076171875, + "y": -0.10504150390625 + }, + { + "x": 0.44610595703125, + "y": 0.00946044921875 + }, + { + "x": -0.21527099609375, + "y": 0.07147216796875 + }, + { + "x": 1.87725830078125, + "y": 0.417724609375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.10262410578796946, + "y": 0.267156147946472, + "z": 1.3670995312966019 + }, + "rotation": { + "quaternion": { + "W": 0.9813832723422563, + "X": 0.1799990913105251, + "Y": 0.06177886887230825, + "Z": 0.025895390613931903 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img57.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img57.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 675.3291625976562, + "y": 603.8845825195312 + }, + { + "x": 700.8255615234375, + "y": 604.6229858398438 + }, + { + "x": 725.989013671875, + "y": 606.5230712890625 + }, + { + "x": 750.1660766601562, + "y": 606.640380859375 + }, + { + "x": 776.37841796875, + "y": 608.8403930664062 + }, + { + "x": 800.1514892578125, + "y": 608.2224731445312 + }, + { + "x": 826.2391967773438, + "y": 610.8681640625 + }, + { + "x": 676.434326171875, + "y": 626.2816162109375 + }, + { + "x": 701.9627075195312, + "y": 627.2483520507812 + }, + { + "x": 726.1431884765625, + "y": 628.4630737304688 + }, + { + "x": 750.2374267578125, + "y": 629.8612670898438 + }, + { + "x": 775.3355102539062, + "y": 630.4528198242188 + }, + { + "x": 800.6873779296875, + "y": 631.641357421875 + }, + { + "x": 825.5721435546875, + "y": 633.1756591796875 + }, + { + "x": 677.0359497070312, + "y": 647.4370727539062 + }, + { + "x": 700.771728515625, + "y": 649.5831909179688 + }, + { + "x": 726.4502563476562, + "y": 650.1829833984375 + }, + { + "x": 750.6345825195312, + "y": 652.6633911132812 + }, + { + "x": 774.1791381835938, + "y": 653.43798828125 + }, + { + "x": 798.38037109375, + "y": 652.5209350585938 + }, + { + "x": 823.6502075195312, + "y": 653.7959594726562 + }, + { + "x": 675.4910888671875, + "y": 669.1521606445312 + }, + { + "x": 701.208740234375, + "y": 670.2449340820312 + }, + { + "x": 723.3307495117188, + "y": 670.4478149414062 + }, + { + "x": 749.724609375, + "y": 672.6572875976562 + }, + { + "x": 772.3802490234375, + "y": 673.1505126953125 + }, + { + "x": 799.5098876953125, + "y": 673.7413940429688 + }, + { + "x": 820.244140625, + "y": 674.9976196289062 + }, + { + "x": 676.3681030273438, + "y": 689.5800170898438 + }, + { + "x": 698.4507446289062, + "y": 689.7633056640625 + }, + { + "x": 724.2661743164062, + "y": 692.5497436523438 + }, + { + "x": 747.4960327148438, + "y": 693.0106201171875 + }, + { + "x": 772.3836669921875, + "y": 694.7324829101562 + }, + { + "x": 795.5889892578125, + "y": 694.4945068359375 + }, + { + "x": 821.5014038085938, + "y": 695.2434692382812 + }, + { + "x": 675.2269287109375, + "y": 709.6414184570312 + }, + { + "x": 699.13232421875, + "y": 712.252197265625 + }, + { + "x": 723.3649291992188, + "y": 712.0413208007812 + }, + { + "x": 747.7861328125, + "y": 713.450927734375 + }, + { + "x": 771.1589965820312, + "y": 715.18701171875 + }, + { + "x": 795.00390625, + "y": 715.5704345703125 + }, + { + "x": 818.924560546875, + "y": 717.0910034179688 + }, + { + "x": 676.0853271484375, + "y": 728.7078247070312 + }, + { + "x": 699.17236328125, + "y": 731.4721069335938 + }, + { + "x": 722.6742553710938, + "y": 732.60595703125 + }, + { + "x": 746.70849609375, + "y": 733.739501953125 + }, + { + "x": 769.8673095703125, + "y": 734.499755859375 + }, + { + "x": 792.9439697265625, + "y": 734.6704711914062 + }, + { + "x": 816.3333129882812, + "y": 736.479736328125 + } + ], + "reprojectionErrors": [ + { + "x": 1.787841796875, + "y": 0.9849853515625 + }, + { + "x": 0.87896728515625, + "y": 1.1898193359375 + }, + { + "x": 0.40521240234375, + "y": 0.23638916015625 + }, + { + "x": 1.0206298828125, + "y": 1.06915283203125 + }, + { + "x": -0.29595947265625, + "y": -0.17730712890625 + }, + { + "x": 0.93060302734375, + "y": 1.39764404296875 + }, + { + "x": -0.052978515625, + "y": -0.28753662109375 + }, + { + "x": 0.365478515625, + "y": 0.07269287109375 + }, + { + "x": -0.75653076171875, + "y": 0.08648681640625 + }, + { + "x": -0.42999267578125, + "y": -0.1441650390625 + }, + { + "x": 0.08404541015625, + "y": -0.55474853515625 + }, + { + "x": -0.30401611328125, + "y": -0.1551513671875 + }, + { + "x": -0.84344482421875, + "y": -0.34893798828125 + }, + { + "x": -0.81292724609375, + "y": -0.88482666015625 + }, + { + "x": -0.55096435546875, + "y": 0.1328125 + }, + { + "x": -0.05718994140625, + "y": -0.9964599609375 + }, + { + "x": -1.40704345703125, + "y": -0.5758056640625 + }, + { + "x": -1.162841796875, + "y": -2.03216552734375 + }, + { + "x": -0.1785888671875, + "y": -1.77899169921875 + }, + { + "x": 0.24981689453125, + "y": 0.1695556640625 + }, + { + "x": -0.2889404296875, + "y": -0.0703125 + }, + { + "x": 0.68133544921875, + "y": -0.6256103515625 + }, + { + "x": -0.9794921875, + "y": -0.666259765625 + }, + { + "x": 1.05322265625, + "y": 0.18670654296875 + }, + { + "x": -1.087646484375, + "y": -0.96319580078125 + }, + { + "x": 0.60858154296875, + "y": -0.39300537109375 + }, + { + "x": -2.0697021484375, + "y": 0.083251953125 + }, + { + "x": 1.747314453125, + "y": -0.10198974609375 + }, + { + "x": -0.50616455078125, + "y": -0.345947265625 + }, + { + "x": 1.29949951171875, + "y": 0.5572509765625 + }, + { + "x": -0.53118896484375, + "y": -1.138916015625 + }, + { + "x": 0.3206787109375, + "y": -0.505615234375 + }, + { + "x": -0.3878173828125, + "y": -1.12945556640625 + }, + { + "x": 0.68414306640625, + "y": 0.21044921875 + }, + { + "x": -0.8525390625, + "y": 0.56732177734375 + }, + { + "x": 0.3265380859375, + "y": 0.06036376953125 + }, + { + "x": 0.14483642578125, + "y": -1.430419921875 + }, + { + "x": -0.26898193359375, + "y": -0.095703125 + }, + { + "x": -0.77569580078125, + "y": -0.37744140625 + }, + { + "x": -0.13800048828125, + "y": -0.98175048828125 + }, + { + "x": 0.12432861328125, + "y": -0.2293701171875 + }, + { + "x": 0.40814208984375, + "y": -0.61016845703125 + }, + { + "x": -0.83837890625, + "y": 1.23089599609375 + }, + { + "x": -0.36248779296875, + "y": -0.3807373046875 + }, + { + "x": -0.2076416015625, + "y": -0.35797119140625 + }, + { + "x": -0.49078369140625, + "y": -0.330810546875 + }, + { + "x": 0.1962890625, + "y": 0.0736083984375 + }, + { + "x": 1.06097412109375, + "y": 1.07171630859375 + }, + { + "x": 1.708740234375, + "y": 0.435302734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.08322479690869651, + "y": 0.20817779045956813, + "z": 1.1491205854474393 + }, + "rotation": { + "quaternion": { + "W": 0.9852111408064359, + "X": 0.16448176849568286, + "Y": 0.04792370749406539, + "Z": 0.002841500208851967 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img58.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img58.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 873.8143920898438, + "y": 572.3555297851562 + }, + { + "x": 899.5052490234375, + "y": 574.6620483398438 + }, + { + "x": 925.3492431640625, + "y": 578.2166137695312 + }, + { + "x": 949.9110717773438, + "y": 580.2840576171875 + }, + { + "x": 975.59375, + "y": 584.3143920898438 + }, + { + "x": 1000.394287109375, + "y": 584.7576293945312 + }, + { + "x": 1026.3291015625, + "y": 589.4097900390625 + }, + { + "x": 872.4464111328125, + "y": 594.744873046875 + }, + { + "x": 898.2774047851562, + "y": 598.4256591796875 + }, + { + "x": 923.0797729492188, + "y": 600.714599609375 + }, + { + "x": 947.8877563476562, + "y": 604.79541015625 + }, + { + "x": 972.912841796875, + "y": 606.4963989257812 + }, + { + "x": 998.4312744140625, + "y": 609.72900390625 + }, + { + "x": 1022.9443359375, + "y": 612.296142578125 + }, + { + "x": 871.2512817382812, + "y": 617.7091064453125 + }, + { + "x": 895.8428955078125, + "y": 621.3453369140625 + }, + { + "x": 921.0364990234375, + "y": 623.4532470703125 + }, + { + "x": 944.9871215820312, + "y": 626.7972412109375 + }, + { + "x": 969.5357666015625, + "y": 630.7341918945312 + }, + { + "x": 995.0221557617188, + "y": 632.2402954101562 + }, + { + "x": 1019.7145385742188, + "y": 634.690673828125 + }, + { + "x": 868.4832763671875, + "y": 639.8363037109375 + }, + { + "x": 893.7369384765625, + "y": 643.0786743164062 + }, + { + "x": 916.8001708984375, + "y": 644.621337890625 + }, + { + "x": 943.678955078125, + "y": 649.2213745117188 + }, + { + "x": 966.0073852539062, + "y": 650.6935424804688 + }, + { + "x": 993.7362670898438, + "y": 653.256591796875 + }, + { + "x": 1014.4319458007812, + "y": 656.0233154296875 + }, + { + "x": 867.3939819335938, + "y": 661.5614013671875 + }, + { + "x": 890.178466796875, + "y": 663.1636962890625 + }, + { + "x": 915.7891235351562, + "y": 667.5599365234375 + }, + { + "x": 939.2244262695312, + "y": 669.5689697265625 + }, + { + "x": 964.5860595703125, + "y": 673.5507202148438 + }, + { + "x": 987.93212890625, + "y": 675.108154296875 + }, + { + "x": 1013.7261962890625, + "y": 677.2538452148438 + }, + { + "x": 864.5877075195312, + "y": 682.0047607421875 + }, + { + "x": 888.637451171875, + "y": 686.323486328125 + }, + { + "x": 913.7233276367188, + "y": 688.6561279296875 + }, + { + "x": 937.2119140625, + "y": 691.274169921875 + }, + { + "x": 961.2107543945312, + "y": 694.6743774414062 + }, + { + "x": 984.9442138671875, + "y": 696.9714965820312 + }, + { + "x": 1008.894775390625, + "y": 700.25634765625 + }, + { + "x": 862.7147216796875, + "y": 702.3887329101562 + }, + { + "x": 886.2835083007812, + "y": 706.2922973632812 + }, + { + "x": 910.7890014648438, + "y": 709.1145629882812 + }, + { + "x": 934.4755249023438, + "y": 711.9813232421875 + }, + { + "x": 958.4678955078125, + "y": 714.6129760742188 + }, + { + "x": 981.679443359375, + "y": 717.4056396484375 + }, + { + "x": 1004.198974609375, + "y": 720.6279907226562 + } + ], + "reprojectionErrors": [ + { + "x": 2.349853515625, + "y": 1.3018798828125 + }, + { + "x": 1.19854736328125, + "y": 1.55780029296875 + }, + { + "x": 0.0703125, + "y": 0.58367919921875 + }, + { + "x": 0.40228271484375, + "y": 1.11492919921875 + }, + { + "x": -0.20672607421875, + "y": -0.29833984375 + }, + { + "x": 0.24822998046875, + "y": 1.89410400390625 + }, + { + "x": -0.2474365234375, + "y": -0.103515625 + }, + { + "x": 1.3165283203125, + "y": 1.00701904296875 + }, + { + "x": -0.11602783203125, + "y": -0.04656982421875 + }, + { + "x": -0.345703125, + "y": 0.31011962890625 + }, + { + "x": -0.40496826171875, + "y": -1.10650634765625 + }, + { + "x": -0.50347900390625, + "y": -0.12451171875 + }, + { + "x": -0.91558837890625, + "y": -0.65521240234375 + }, + { + "x": -0.14068603515625, + "y": -0.50128173828125 + }, + { + "x": 0.140625, + "y": -0.06610107421875 + }, + { + "x": -0.19036865234375, + "y": -1.01153564453125 + }, + { + "x": -0.95098876953125, + "y": -0.409912109375 + }, + { + "x": -0.2945556640625, + "y": -1.02545166015625 + }, + { + "x": -0.06024169921875, + "y": -2.21484375 + }, + { + "x": -0.5859375, + "y": -0.9541015625 + }, + { + "x": -0.13800048828125, + "y": -0.6181640625 + }, + { + "x": 0.56695556640625, + "y": -0.497802734375 + }, + { + "x": -0.5606689453125, + "y": -0.9869384765625 + }, + { + "x": 0.672607421875, + "y": 0.24267578125 + }, + { + "x": -1.73748779296875, + "y": -1.56585693359375 + }, + { + "x": 0.57684326171875, + "y": -0.22711181640625 + }, + { + "x": -2.33349609375, + "y": 0.0404052734375 + }, + { + "x": 1.96697998046875, + "y": 0.12408447265625 + }, + { + "x": -0.6571044921875, + "y": -0.715576171875 + }, + { + "x": 0.552978515625, + "y": 0.49664306640625 + }, + { + "x": -0.8944091796875, + "y": -1.065673828125 + }, + { + "x": 0.00390625, + "y": -0.2213134765625 + }, + { + "x": -0.8519287109375, + "y": -1.32989501953125 + }, + { + "x": 0.48175048828125, + "y": 0.00579833984375 + }, + { + "x": -0.4569091796875, + "y": 0.7734375 + }, + { + "x": -0.13671875, + "y": 0.16748046875 + }, + { + "x": -0.3203125, + "y": -1.2764892578125 + }, + { + "x": -1.373046875, + "y": -0.71466064453125 + }, + { + "x": -0.659912109375, + "y": -0.41845703125 + }, + { + "x": -0.28668212890625, + "y": -0.88433837890625 + }, + { + "x": 0.5240478515625, + "y": -0.226806640625 + }, + { + "x": 1.29150390625, + "y": -0.53662109375 + }, + { + "x": -0.52301025390625, + "y": 0.93603515625 + }, + { + "x": -0.35107421875, + "y": -0.03350830078125 + }, + { + "x": -0.9505615234375, + "y": 0.09814453125 + }, + { + "x": -0.56414794921875, + "y": 0.20550537109375 + }, + { + "x": -0.3150634765625, + "y": 0.568359375 + }, + { + "x": 0.88525390625, + "y": 0.79071044921875 + }, + { + "x": 2.9495849609375, + "y": 0.60418701171875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.2972249015752922, + "y": 0.18042254592561843, + "z": 1.1788862108077987 + }, + "rotation": { + "quaternion": { + "W": 0.9885159594591003, + "X": 0.11944235030239114, + "Y": 0.08736408820810639, + "Z": 0.030614358403557487 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img59.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img59.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 861.2402954101562, + "y": 624.11328125 + }, + { + "x": 886.1187744140625, + "y": 626.3739624023438 + }, + { + "x": 911.9798583984375, + "y": 629.681884765625 + }, + { + "x": 935.8558959960938, + "y": 631.8780517578125 + }, + { + "x": 960.6856079101562, + "y": 635.7342529296875 + }, + { + "x": 984.7445068359375, + "y": 636.0383911132812 + }, + { + "x": 1009.6064453125, + "y": 640.3162841796875 + }, + { + "x": 860.17529296875, + "y": 644.2203979492188 + }, + { + "x": 885.298828125, + "y": 647.4575805664062 + }, + { + "x": 909.872802734375, + "y": 650.225341796875 + }, + { + "x": 934.2158203125, + "y": 653.0841064453125 + }, + { + "x": 958.3436889648438, + "y": 655.2366333007812 + }, + { + "x": 982.8893432617188, + "y": 658.2623291015625 + }, + { + "x": 1007.0823364257812, + "y": 660.9183349609375 + }, + { + "x": 858.8375854492188, + "y": 664.35205078125 + }, + { + "x": 883.58837890625, + "y": 667.6719970703125 + }, + { + "x": 907.8588256835938, + "y": 669.5196533203125 + }, + { + "x": 932.1752319335938, + "y": 673.33935546875 + }, + { + "x": 954.9418334960938, + "y": 676.0699462890625 + }, + { + "x": 979.4603881835938, + "y": 677.307861328125 + }, + { + "x": 1003.8019409179688, + "y": 679.8295288085938 + }, + { + "x": 856.8135986328125, + "y": 683.3297119140625 + }, + { + "x": 881.479736328125, + "y": 686.16162109375 + }, + { + "x": 904.7734375, + "y": 688.7704467773438 + }, + { + "x": 929.4640502929688, + "y": 692.02880859375 + }, + { + "x": 952.0215454101562, + "y": 694.2886352539062 + }, + { + "x": 977.4104614257812, + "y": 696.5131225585938 + }, + { + "x": 998.6422729492188, + "y": 698.7586669921875 + }, + { + "x": 855.7833251953125, + "y": 702.3076171875 + }, + { + "x": 878.031982421875, + "y": 703.720703125 + }, + { + "x": 902.9235229492188, + "y": 707.7958374023438 + }, + { + "x": 925.9873657226562, + "y": 709.831787109375 + }, + { + "x": 950.1865844726562, + "y": 713.1150512695312 + }, + { + "x": 973.076416015625, + "y": 714.7384643554688 + }, + { + "x": 997.4667358398438, + "y": 717.4328002929688 + }, + { + "x": 853.4232177734375, + "y": 719.1646118164062 + }, + { + "x": 876.9840698242188, + "y": 723.4876708984375 + }, + { + "x": 901.7698364257812, + "y": 726.517333984375 + }, + { + "x": 923.9317626953125, + "y": 728.3518676757812 + }, + { + "x": 947.3980712890625, + "y": 731.2510375976562 + }, + { + "x": 970.528564453125, + "y": 733.6627807617188 + }, + { + "x": 993.348388671875, + "y": 736.1415405273438 + }, + { + "x": 852.3037109375, + "y": 737.39453125 + }, + { + "x": 875.6697387695312, + "y": 740.8460693359375 + }, + { + "x": 898.58447265625, + "y": 743.3975219726562 + }, + { + "x": 921.7608642578125, + "y": 746.5599365234375 + }, + { + "x": 944.3936767578125, + "y": 748.537109375 + }, + { + "x": 967.4383544921875, + "y": 751.15380859375 + }, + { + "x": 989.14208984375, + "y": 753.752197265625 + } + ], + "reprojectionErrors": [ + { + "x": 2.1766357421875, + "y": 1.40093994140625 + }, + { + "x": 1.2821044921875, + "y": 1.5660400390625 + }, + { + "x": -0.4102783203125, + "y": 0.70208740234375 + }, + { + "x": 0.06939697265625, + "y": 0.96820068359375 + }, + { + "x": -0.21563720703125, + "y": -0.40716552734375 + }, + { + "x": 0.46142578125, + "y": 1.788330078125 + }, + { + "x": 0.52874755859375, + "y": 0.02899169921875 + }, + { + "x": 1.2803955078125, + "y": 0.69549560546875 + }, + { + "x": -0.067138671875, + "y": -0.06231689453125 + }, + { + "x": -0.683349609375, + "y": -0.332275390625 + }, + { + "x": -0.8848876953125, + "y": -0.6746826171875 + }, + { + "x": -0.68548583984375, + "y": -0.29205322265625 + }, + { + "x": -0.71600341796875, + "y": -0.7635498046875 + }, + { + "x": -0.20379638671875, + "y": -0.84613037109375 + }, + { + "x": 0.6907958984375, + "y": -0.30853271484375 + }, + { + "x": -0.48675537109375, + "y": -1.09722900390625 + }, + { + "x": -1.00531005859375, + "y": -0.39508056640625 + }, + { + "x": -1.38916015625, + "y": -1.6461181640625 + }, + { + "x": -0.04058837890625, + "y": -1.78900146484375 + }, + { + "x": -0.25921630859375, + "y": -0.419921875 + }, + { + "x": -0.11407470703125, + "y": -0.315185546875 + }, + { + "x": 0.8203125, + "y": -0.4222412109375 + }, + { + "x": -0.47052001953125, + "y": -0.67279052734375 + }, + { + "x": -0.213134765625, + "y": -0.681396484375 + }, + { + "x": -1.175048828125, + "y": -1.32049560546875 + }, + { + "x": 0.17584228515625, + "y": -0.9417724609375 + }, + { + "x": -1.12310791015625, + "y": -0.50830078125 + }, + { + "x": 1.91864013671875, + "y": -0.076171875 + }, + { + "x": -0.01226806640625, + "y": -0.79010009765625 + }, + { + "x": 0.9212646484375, + "y": 0.42681884765625 + }, + { + "x": -0.61517333984375, + "y": -0.99932861328125 + }, + { + "x": -0.14923095703125, + "y": -0.36700439453125 + }, + { + "x": -0.64190673828125, + "y": -0.96258544921875 + }, + { + "x": 0.3533935546875, + "y": 0.121337890625 + }, + { + "x": 0.02880859375, + "y": 0.15423583984375 + }, + { + "x": 0.51556396484375, + "y": 0.71856689453125 + }, + { + "x": -0.0516357421875, + "y": -0.92742919921875 + }, + { + "x": -1.67364501953125, + "y": -1.26080322265625 + }, + { + "x": -0.4998779296875, + "y": -0.379638671875 + }, + { + "x": -0.45660400390625, + "y": -0.54345703125 + }, + { + "x": 0.09814453125, + "y": -0.20001220703125 + }, + { + "x": 1.14129638671875, + "y": 0.096435546875 + }, + { + "x": -0.16766357421875, + "y": 0.61895751953125 + }, + { + "x": -0.72418212890625, + "y": -0.10980224609375 + }, + { + "x": -0.66192626953125, + "y": 0.080810546875 + }, + { + "x": -0.692138671875, + "y": -0.31988525390625 + }, + { + "x": -0.00762939453125, + "y": 0.48443603515625 + }, + { + "x": 0.43792724609375, + "y": 0.6693115234375 + }, + { + "x": 2.39923095703125, + "y": 0.89263916015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.29036464088534053, + "y": 0.24106294551143334, + "z": 1.2067588266347866 + }, + "rotation": { + "quaternion": { + "W": 0.9753064192871594, + "X": 0.19828478614820105, + "Y": 0.09612581569829705, + "Z": 0.014844515342671998 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img60.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img60.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 681.3982543945312, + "y": 494.71307373046875 + }, + { + "x": 707.9479370117188, + "y": 496.41412353515625 + }, + { + "x": 733.6917114257812, + "y": 498.8071594238281 + }, + { + "x": 758.4046630859375, + "y": 499.6073913574219 + }, + { + "x": 784.8209228515625, + "y": 503.51806640625 + }, + { + "x": 810.4490356445312, + "y": 503.1837463378906 + }, + { + "x": 837.1368408203125, + "y": 506.6190490722656 + }, + { + "x": 682.7347412109375, + "y": 518.608642578125 + }, + { + "x": 708.55224609375, + "y": 520.4765625 + }, + { + "x": 733.6033935546875, + "y": 522.17724609375 + }, + { + "x": 758.482666015625, + "y": 524.7870483398438 + }, + { + "x": 784.1890869140625, + "y": 525.8727416992188 + }, + { + "x": 810.5043334960938, + "y": 528.2472534179688 + }, + { + "x": 835.8427734375, + "y": 530.2652587890625 + }, + { + "x": 683.3050537109375, + "y": 541.3792114257812 + }, + { + "x": 707.7778930664062, + "y": 544.5316162109375 + }, + { + "x": 734.2926635742188, + "y": 545.3787841796875 + }, + { + "x": 757.67529296875, + "y": 548.3147583007812 + }, + { + "x": 782.660888671875, + "y": 550.9384155273438 + }, + { + "x": 807.8098754882812, + "y": 550.8060302734375 + }, + { + "x": 834.1973876953125, + "y": 553.6610107421875 + }, + { + "x": 681.3696899414062, + "y": 564.5509033203125 + }, + { + "x": 707.8738403320312, + "y": 566.5126953125 + }, + { + "x": 731.1011962890625, + "y": 567.93994140625 + }, + { + "x": 757.9120483398438, + "y": 570.8587646484375 + }, + { + "x": 781.0714111328125, + "y": 572.0836181640625 + }, + { + "x": 809.287109375, + "y": 574.244873046875 + }, + { + "x": 831.385009765625, + "y": 576.471923828125 + }, + { + "x": 682.5734252929688, + "y": 586.8547973632812 + }, + { + "x": 705.4313354492188, + "y": 588.44287109375 + }, + { + "x": 731.6644897460938, + "y": 591.3305053710938 + }, + { + "x": 755.38330078125, + "y": 593.0350341796875 + }, + { + "x": 780.7122802734375, + "y": 596.2351684570312 + }, + { + "x": 805.5270385742188, + "y": 597.1061401367188 + }, + { + "x": 831.6962890625, + "y": 598.7088623046875 + }, + { + "x": 681.385498046875, + "y": 608.9368286132812 + }, + { + "x": 705.7781982421875, + "y": 611.96728515625 + }, + { + "x": 730.758056640625, + "y": 613.4971313476562 + }, + { + "x": 755.5237426757812, + "y": 615.4185180664062 + }, + { + "x": 780.3634033203125, + "y": 618.1182250976562 + }, + { + "x": 804.4082641601562, + "y": 620.0494384765625 + }, + { + "x": 829.4594116210938, + "y": 622.4398193359375 + }, + { + "x": 682.2443237304688, + "y": 629.3626098632812 + }, + { + "x": 705.4147338867188, + "y": 633.1640014648438 + }, + { + "x": 730.1021728515625, + "y": 635.2528076171875 + }, + { + "x": 754.6691284179688, + "y": 637.5919189453125 + }, + { + "x": 778.6498413085938, + "y": 638.9529418945312 + }, + { + "x": 803.1691284179688, + "y": 641.24609375 + }, + { + "x": 826.3370971679688, + "y": 643.7233276367188 + } + ], + "reprojectionErrors": [ + { + "x": 2.201171875, + "y": 0.8509521484375 + }, + { + "x": 0.6417236328125, + "y": 0.875 + }, + { + "x": 0.11212158203125, + "y": 0.22216796875 + }, + { + "x": 0.84033203125, + "y": 1.177398681640625 + }, + { + "x": 0.09515380859375, + "y": -0.96234130859375 + }, + { + "x": 0.37115478515625, + "y": 1.158599853515625 + }, + { + "x": -0.17645263671875, + "y": -0.474212646484375 + }, + { + "x": 0.5123291015625, + "y": 0.09454345703125 + }, + { + "x": -0.4853515625, + "y": 0.04254150390625 + }, + { + "x": -0.4957275390625, + "y": 0.173583984375 + }, + { + "x": -0.11041259765625, + "y": -0.58856201171875 + }, + { + "x": -0.325439453125, + "y": 0.18963623046875 + }, + { + "x": -0.9195556640625, + "y": -0.30462646484375 + }, + { + "x": -0.303955078125, + "y": -0.42578125 + }, + { + "x": -0.41650390625, + "y": 0.18756103515625 + }, + { + "x": -0.23590087890625, + "y": -1.06036376953125 + }, + { + "x": -1.8792724609375, + "y": 0.01336669921875 + }, + { + "x": -0.169677734375, + "y": -0.98504638671875 + }, + { + "x": 0.16070556640625, + "y": -1.65435791015625 + }, + { + "x": 0.55438232421875, + "y": 0.44952392578125 + }, + { + "x": -0.06085205078125, + "y": -0.416748046875 + }, + { + "x": 1.1541748046875, + "y": -0.3858642578125 + }, + { + "x": -0.85906982421875, + "y": -0.3568115234375 + }, + { + "x": 0.61962890625, + "y": 0.22381591796875 + }, + { + "x": -1.2672119140625, + "y": -0.6697998046875 + }, + { + "x": 0.7181396484375, + "y": 0.14794921875 + }, + { + "x": -2.12921142578125, + "y": 0.04705810546875 + }, + { + "x": 1.3677978515625, + "y": -0.10162353515625 + }, + { + "x": -0.4202880859375, + "y": -0.346923828125 + }, + { + "x": 1.053955078125, + "y": 0.14013671875 + }, + { + "x": -0.6346435546875, + "y": -0.65472412109375 + }, + { + "x": 0.40618896484375, + "y": -0.2486572265625 + }, + { + "x": 0.05474853515625, + "y": -1.32000732421875 + }, + { + "x": 0.438232421875, + "y": -0.04388427734375 + }, + { + "x": -0.3092041015625, + "y": 0.51904296875 + }, + { + "x": 0.3907470703125, + "y": -0.33203125 + }, + { + "x": 0.17523193359375, + "y": -1.20513916015625 + }, + { + "x": -0.41778564453125, + "y": -0.559326171875 + }, + { + "x": -0.58428955078125, + "y": -0.28662109375 + }, + { + "x": -0.60968017578125, + "y": -0.77349853515625 + }, + { + "x": 0.3775634765625, + "y": -0.4730224609375 + }, + { + "x": 0.57916259765625, + "y": -0.6124267578125 + }, + { + "x": -0.85089111328125, + "y": 1.102294921875 + }, + { + "x": 0.00433349609375, + "y": -0.4613037109375 + }, + { + "x": -0.4503173828125, + "y": -0.29351806640625 + }, + { + "x": -0.5748291015625, + "y": -0.3570556640625 + }, + { + "x": 0.09930419921875, + "y": 0.57684326171875 + }, + { + "x": 0.44989013671875, + "y": 0.59808349609375 + }, + { + "x": 2.36968994140625, + "y": 0.455078125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.08803169325410366, + "y": 0.09299878860783516, + "z": 1.1246166526884862 + }, + "rotation": { + "quaternion": { + "W": 0.9839401079400766, + "X": 0.14636404405520928, + "Y": 0.10153226635346423, + "Z": 0.011429325605842245 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img61.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img61.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 636.551025390625, + "y": 450.8776550292969 + }, + { + "x": 664.3042602539062, + "y": 452.6949462890625 + }, + { + "x": 689.9047241210938, + "y": 453.9530029296875 + }, + { + "x": 715.3486938476562, + "y": 454.6510925292969 + }, + { + "x": 742.16796875, + "y": 457.9264831542969 + }, + { + "x": 768.7411499023438, + "y": 457.294189453125 + }, + { + "x": 796.2908935546875, + "y": 460.3164978027344 + }, + { + "x": 639.1085815429688, + "y": 476.1404113769531 + }, + { + "x": 665.3868408203125, + "y": 477.27691650390625 + }, + { + "x": 691.3988647460938, + "y": 479.27716064453125 + }, + { + "x": 715.6311645507812, + "y": 480.73602294921875 + }, + { + "x": 742.6167602539062, + "y": 481.70440673828125 + }, + { + "x": 769.3259887695312, + "y": 483.8215637207031 + }, + { + "x": 796.406494140625, + "y": 485.3395080566406 + }, + { + "x": 640.2276000976562, + "y": 499.8699645996094 + }, + { + "x": 665.7492065429688, + "y": 502.90545654296875 + }, + { + "x": 692.6678466796875, + "y": 502.65423583984375 + }, + { + "x": 716.6792602539062, + "y": 506.0636291503906 + }, + { + "x": 742.2462158203125, + "y": 507.9377136230469 + }, + { + "x": 768.7184448242188, + "y": 508.3404541015625 + }, + { + "x": 795.4378662109375, + "y": 510.1509094238281 + }, + { + "x": 639.47412109375, + "y": 524.2745971679688 + }, + { + "x": 666.3544921875, + "y": 525.6519775390625 + }, + { + "x": 689.7322998046875, + "y": 526.7194213867188 + }, + { + "x": 717.6849365234375, + "y": 529.5478515625 + }, + { + "x": 741.3892822265625, + "y": 530.4579467773438 + }, + { + "x": 770.6738891601562, + "y": 532.1469116210938 + }, + { + "x": 793.587890625, + "y": 534.4400634765625 + }, + { + "x": 641.59912109375, + "y": 547.5499267578125 + }, + { + "x": 664.510498046875, + "y": 548.5003662109375 + }, + { + "x": 691.757568359375, + "y": 551.3377685546875 + }, + { + "x": 716.322021484375, + "y": 552.9961547851562 + }, + { + "x": 742.2762451171875, + "y": 555.8282470703125 + }, + { + "x": 767.8436279296875, + "y": 556.9498901367188 + }, + { + "x": 795.1226806640625, + "y": 557.591552734375 + }, + { + "x": 641.3766479492188, + "y": 571.0028076171875 + }, + { + "x": 665.5516967773438, + "y": 573.9227294921875 + }, + { + "x": 691.806396484375, + "y": 574.8307495117188 + }, + { + "x": 717.348876953125, + "y": 576.3072509765625 + }, + { + "x": 742.636474609375, + "y": 579.2115478515625 + }, + { + "x": 766.947265625, + "y": 580.8849487304688 + }, + { + "x": 794.0648193359375, + "y": 583.3473510742188 + }, + { + "x": 642.4371948242188, + "y": 592.3618774414062 + }, + { + "x": 666.6785278320312, + "y": 595.8423461914062 + }, + { + "x": 692.1355590820312, + "y": 597.5801391601562 + }, + { + "x": 717.2941284179688, + "y": 600.0653076171875 + }, + { + "x": 742.2915649414062, + "y": 601.0557250976562 + }, + { + "x": 767.4868774414062, + "y": 603.5880126953125 + }, + { + "x": 791.630615234375, + "y": 605.817138671875 + } + ], + "reprojectionErrors": [ + { + "x": 2.160400390625, + "y": 0.8216552734375 + }, + { + "x": -0.08636474609375, + "y": 0.32470703125 + }, + { + "x": 0.120361328125, + "y": 0.402191162109375 + }, + { + "x": 0.78961181640625, + "y": 1.055145263671875 + }, + { + "x": 0.3948974609375, + "y": -0.853485107421875 + }, + { + "x": 0.56329345703125, + "y": 1.161590576171875 + }, + { + "x": 0.07769775390625, + "y": -0.461639404296875 + }, + { + "x": 0.2618408203125, + "y": -0.11578369140625 + }, + { + "x": -0.6826171875, + "y": 0.200408935546875 + }, + { + "x": -1.064208984375, + "y": -0.33050537109375 + }, + { + "x": 0.63568115234375, + "y": -0.303131103515625 + }, + { + "x": -0.11065673828125, + "y": 0.23193359375 + }, + { + "x": -0.26806640625, + "y": -0.3642578125 + }, + { + "x": -0.47882080078125, + "y": -0.343414306640625 + }, + { + "x": -0.22564697265625, + "y": 0.179351806640625 + }, + { + "x": -0.58209228515625, + "y": -1.274505615234375 + }, + { + "x": -2.04290771484375, + "y": 0.5762939453125 + }, + { + "x": -0.29876708984375, + "y": -1.2152099609375 + }, + { + "x": 0.192626953125, + "y": -1.4527587890625 + }, + { + "x": 0.08697509765625, + "y": -0.2000732421875 + }, + { + "x": 0.04766845703125, + "y": -0.335784912109375 + }, + { + "x": 1.132568359375, + "y": -0.489990234375 + }, + { + "x": -0.747314453125, + "y": -0.16009521484375 + }, + { + "x": 1.16412353515625, + "y": 0.49896240234375 + }, + { + "x": -1.20550537109375, + "y": -0.583251953125 + }, + { + "x": 0.971923828125, + "y": 0.27276611328125 + }, + { + "x": -2.12689208984375, + "y": 0.3702392578125 + }, + { + "x": 1.45416259765625, + "y": -0.11578369140625 + }, + { + "x": -0.41387939453125, + "y": -0.30859375 + }, + { + "x": 1.514404296875, + "y": 0.57073974609375 + }, + { + "x": -0.6080322265625, + "y": -0.4163818359375 + }, + { + "x": 0.2420654296875, + "y": -0.20355224609375 + }, + { + "x": -0.00274658203125, + "y": -1.1431884765625 + }, + { + "x": 0.43914794921875, + "y": -0.3507080078125 + }, + { + "x": -0.52545166015625, + "y": 0.9437255859375 + }, + { + "x": 0.3616943359375, + "y": -0.5728759765625 + }, + { + "x": 0.869140625, + "y": -1.54351806640625 + }, + { + "x": -0.42169189453125, + "y": -0.48052978515625 + }, + { + "x": -0.714111328125, + "y": 0.0361328125 + }, + { + "x": -0.460693359375, + "y": -0.85247802734375 + }, + { + "x": 1.0655517578125, + "y": -0.4873046875 + }, + { + "x": 0.08612060546875, + "y": -0.8878173828125 + }, + { + "x": -0.170654296875, + "y": 0.99847412109375 + }, + { + "x": 0.116943359375, + "y": -0.416015625 + }, + { + "x": -0.53326416015625, + "y": -0.06488037109375 + }, + { + "x": -0.60247802734375, + "y": -0.4378662109375 + }, + { + "x": -0.2232666015625, + "y": 0.7076416015625 + }, + { + "x": 0.250244140625, + "y": 0.3353271484375 + }, + { + "x": 2.072509765625, + "y": 0.290771484375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.0409310654095598, + "y": 0.046813271484058026, + "z": 1.0841970824366542 + }, + "rotation": { + "quaternion": { + "W": 0.9811652601008134, + "X": 0.14571106745156898, + "Y": 0.12681107479685866, + "Z": 0.0014030332472578476 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img62.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img62.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 255.3297882080078, + "y": 438.9447937011719 + }, + { + "x": 276.65411376953125, + "y": 440.1312255859375 + }, + { + "x": 296.7424621582031, + "y": 440.4964599609375 + }, + { + "x": 318.056640625, + "y": 440.48828125 + }, + { + "x": 339.67242431640625, + "y": 441.4119873046875 + }, + { + "x": 362.1496276855469, + "y": 441.3028564453125 + }, + { + "x": 385.0635986328125, + "y": 441.6375427246094 + }, + { + "x": 259.7933349609375, + "y": 462.11895751953125 + }, + { + "x": 280.1776123046875, + "y": 461.9502868652344 + }, + { + "x": 300.2054748535156, + "y": 463.1593933105469 + }, + { + "x": 320.4314270019531, + "y": 464.48492431640625 + }, + { + "x": 343.15380859375, + "y": 464.4933166503906 + }, + { + "x": 365.2601013183594, + "y": 464.7397155761719 + }, + { + "x": 387.44610595703125, + "y": 465.55780029296875 + }, + { + "x": 263.4508361816406, + "y": 483.64642333984375 + }, + { + "x": 283.17120361328125, + "y": 484.9024658203125 + }, + { + "x": 304.659423828125, + "y": 484.7564392089844 + }, + { + "x": 324.9197082519531, + "y": 486.9599609375 + }, + { + "x": 346.2798767089844, + "y": 486.78826904296875 + }, + { + "x": 368.2265930175781, + "y": 488.3749084472656 + }, + { + "x": 391.3178405761719, + "y": 487.98370361328125 + }, + { + "x": 266.2274169921875, + "y": 505.7884826660156 + }, + { + "x": 287.53436279296875, + "y": 506.3638000488281 + }, + { + "x": 306.2701416015625, + "y": 507.4237060546875 + }, + { + "x": 328.629150390625, + "y": 508.7328186035156 + }, + { + "x": 348.68927001953125, + "y": 509.728271484375 + }, + { + "x": 372.0235595703125, + "y": 510.008544921875 + }, + { + "x": 392.5960388183594, + "y": 511.5166320800781 + }, + { + "x": 271.0472717285156, + "y": 526.88427734375 + }, + { + "x": 289.2433776855469, + "y": 528.0938720703125 + }, + { + "x": 311.05474853515625, + "y": 529.0374145507812 + }, + { + "x": 331.2304992675781, + "y": 531.1852416992188 + }, + { + "x": 352.7417297363281, + "y": 531.8228149414062 + }, + { + "x": 374.0894775390625, + "y": 533.2091064453125 + }, + { + "x": 397.5462341308594, + "y": 532.3756103515625 + }, + { + "x": 273.6003112792969, + "y": 548.451904296875 + }, + { + "x": 293.0055236816406, + "y": 550.2709350585938 + }, + { + "x": 314.3133850097656, + "y": 551.5130615234375 + }, + { + "x": 335.3826904296875, + "y": 551.188720703125 + }, + { + "x": 355.5274963378906, + "y": 554.0266723632812 + }, + { + "x": 376.8328857421875, + "y": 555.3441772460938 + }, + { + "x": 399.295654296875, + "y": 556.7647094726562 + }, + { + "x": 278.22808837890625, + "y": 567.8716430664062 + }, + { + "x": 297.2725830078125, + "y": 570.9429321289062 + }, + { + "x": 317.6263122558594, + "y": 571.8173828125 + }, + { + "x": 338.0278625488281, + "y": 574.2260131835938 + }, + { + "x": 359.1729736328125, + "y": 574.55908203125 + }, + { + "x": 380.31427001953125, + "y": 576.9962158203125 + }, + { + "x": 402.2292175292969, + "y": 578.494384765625 + } + ], + "reprojectionErrors": [ + { + "x": 0.001495361328125, + "y": 0.070037841796875 + }, + { + "x": -0.54296875, + "y": -0.550933837890625 + }, + { + "x": 0.4093017578125, + "y": -0.34393310546875 + }, + { + "x": 0.40142822265625, + "y": 0.24334716796875 + }, + { + "x": 0.36260986328125, + "y": -0.094207763671875 + }, + { + "x": -0.261871337890625, + "y": 0.60821533203125 + }, + { + "x": -1.042083740234375, + "y": 0.874114990234375 + }, + { + "x": -0.5965576171875, + "y": -0.744781494140625 + }, + { + "x": -0.307342529296875, + "y": 0.12408447265625 + }, + { + "x": 0.596099853515625, + "y": -0.37646484375 + }, + { + "x": 1.56402587890625, + "y": -0.98486328125 + }, + { + "x": 0.303070068359375, + "y": -0.2674560546875 + }, + { + "x": -0.06927490234375, + "y": 0.220794677734375 + }, + { + "x": -0.24365234375, + "y": 0.146392822265625 + }, + { + "x": -0.480560302734375, + "y": -0.161376953125 + }, + { + "x": 0.3682861328125, + "y": -0.585662841796875 + }, + { + "x": -0.2957763671875, + "y": 0.402099609375 + }, + { + "x": 0.5277099609375, + "y": -0.949615478515625 + }, + { + "x": 0.515777587890625, + "y": 0.084228515625 + }, + { + "x": 0.186676025390625, + "y": -0.6297607421875 + }, + { + "x": -1.01251220703125, + "y": 0.644775390625 + }, + { + "x": 0.42669677734375, + "y": -0.43218994140625 + }, + { + "x": -0.413177490234375, + "y": -0.047149658203125 + }, + { + "x": 1.5701904296875, + "y": -0.135284423828125 + }, + { + "x": 0.18707275390625, + "y": -0.460968017578125 + }, + { + "x": 1.36431884765625, + "y": -0.46112060546875 + }, + { + "x": -0.466278076171875, + "y": 0.2659912109375 + }, + { + "x": 0.736236572265625, + "y": -0.222412109375 + }, + { + "x": -0.79656982421875, + "y": 0.11224365234375 + }, + { + "x": 1.374237060546875, + "y": -0.01129150390625 + }, + { + "x": 0.17913818359375, + "y": 0.14404296875 + }, + { + "x": 0.873565673828125, + "y": -0.8917236328125 + }, + { + "x": 0.491119384765625, + "y": -0.40386962890625 + }, + { + "x": 0.53546142578125, + "y": -0.65118408203125 + }, + { + "x": -1.260955810546875, + "y": 1.335205078125 + }, + { + "x": 0.16192626953125, + "y": -0.03790283203125 + }, + { + "x": 1.02545166015625, + "y": -0.64801025390625 + }, + { + "x": 0.233062744140625, + "y": -0.6668701171875 + }, + { + "x": -0.069610595703125, + "y": 0.895263671875 + }, + { + "x": 0.807952880859375, + "y": -0.6900634765625 + }, + { + "x": 0.785369873046875, + "y": -0.7398681640625 + }, + { + "x": -0.129302978515625, + "y": -0.87738037109375 + }, + { + "x": -1.037200927734375, + "y": 1.7449951171875 + }, + { + "x": 0.0908203125, + "y": 0.00299072265625 + }, + { + "x": 0.15374755859375, + "y": 0.47344970703125 + }, + { + "x": 0.4173583984375, + "y": -0.57440185546875 + }, + { + "x": 0.190399169921875, + "y": 0.4696044921875 + }, + { + "x": 0.224884033203125, + "y": -0.57403564453125 + }, + { + "x": -0.251922607421875, + "y": -0.66180419921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.3649110606182631, + "y": 0.03757365827189445, + "z": 1.1833892507117574 + }, + "rotation": { + "quaternion": { + "W": 0.9783887242341093, + "X": 0.14666623075858767, + "Y": 0.1450436068972719, + "Z": -0.014383085373119272 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img63.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img63.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 338.5791931152344, + "y": 499.01092529296875 + }, + { + "x": 360.12799072265625, + "y": 500.819091796875 + }, + { + "x": 380.53509521484375, + "y": 501.6949768066406 + }, + { + "x": 401.3844909667969, + "y": 502.7054443359375 + }, + { + "x": 423.0212707519531, + "y": 504.6683044433594 + }, + { + "x": 445.2901916503906, + "y": 504.718994140625 + }, + { + "x": 468.37762451171875, + "y": 506.29437255859375 + }, + { + "x": 343.3109436035156, + "y": 521.5200805664062 + }, + { + "x": 364.10137939453125, + "y": 522.127685546875 + }, + { + "x": 383.6563415527344, + "y": 524.138671875 + }, + { + "x": 404.1964416503906, + "y": 525.814697265625 + }, + { + "x": 426.4713439941406, + "y": 527.049560546875 + }, + { + "x": 448.56988525390625, + "y": 528.3441772460938 + }, + { + "x": 471.1524658203125, + "y": 529.4585571289062 + }, + { + "x": 346.821533203125, + "y": 542.6576538085938 + }, + { + "x": 366.7672424316406, + "y": 544.7625122070312 + }, + { + "x": 388.6766357421875, + "y": 544.9955444335938 + }, + { + "x": 408.5700988769531, + "y": 548.3569946289062 + }, + { + "x": 429.5187683105469, + "y": 549.3225708007812 + }, + { + "x": 451.34912109375, + "y": 550.748779296875 + }, + { + "x": 474.7790832519531, + "y": 551.6278076171875 + }, + { + "x": 349.4314880371094, + "y": 564.0324096679688 + }, + { + "x": 370.8930358886719, + "y": 565.57666015625 + }, + { + "x": 389.6249084472656, + "y": 567.3168334960938 + }, + { + "x": 412.67620849609375, + "y": 568.5653076171875 + }, + { + "x": 432.1912841796875, + "y": 571.3323364257812 + }, + { + "x": 456.2533874511719, + "y": 572.0374755859375 + }, + { + "x": 476.3766784667969, + "y": 574.51953125 + }, + { + "x": 354.6568603515625, + "y": 584.6656494140625 + }, + { + "x": 373.057373046875, + "y": 586.8529052734375 + }, + { + "x": 394.3833312988281, + "y": 588.6625366210938 + }, + { + "x": 414.4645690917969, + "y": 591.0379028320312 + }, + { + "x": 436.3893127441406, + "y": 592.6283569335938 + }, + { + "x": 457.56048583984375, + "y": 594.7039794921875 + }, + { + "x": 480.9344787597656, + "y": 594.71923828125 + }, + { + "x": 357.27630615234375, + "y": 605.7197265625 + }, + { + "x": 376.4244079589844, + "y": 608.47900390625 + }, + { + "x": 397.635009765625, + "y": 610.308349609375 + }, + { + "x": 419.1273498535156, + "y": 611.06298828125 + }, + { + "x": 439.0367736816406, + "y": 614.3064575195312 + }, + { + "x": 460.4139709472656, + "y": 616.2186889648438 + }, + { + "x": 482.6713562011719, + "y": 618.3887329101562 + }, + { + "x": 362.1693115234375, + "y": 624.386474609375 + }, + { + "x": 380.5920715332031, + "y": 628.1758422851562 + }, + { + "x": 400.9079284667969, + "y": 630.3224487304688 + }, + { + "x": 421.4604187011719, + "y": 632.9642333984375 + }, + { + "x": 441.97216796875, + "y": 634.6209716796875 + }, + { + "x": 463.283935546875, + "y": 636.6492309570312 + }, + { + "x": 484.2481994628906, + "y": 639.3073120117188 + } + ], + "reprojectionErrors": [ + { + "x": 0.463226318359375, + "y": 0.232269287109375 + }, + { + "x": -0.434967041015625, + "y": -0.343719482421875 + }, + { + "x": 0.1136474609375, + "y": 0.0303955078125 + }, + { + "x": 0.5318603515625, + "y": 0.2880859375 + }, + { + "x": 0.481536865234375, + "y": -0.388031005859375 + }, + { + "x": 0.12506103515625, + "y": 0.867034912109375 + }, + { + "x": -0.716522216796875, + "y": 0.616851806640625 + }, + { + "x": -0.41973876953125, + "y": -0.5223388671875 + }, + { + "x": -0.6702880859375, + "y": 0.252197265625 + }, + { + "x": 0.616119384765625, + "y": -0.35675048828125 + }, + { + "x": 1.2254638671875, + "y": -0.61053466796875 + }, + { + "x": 0.414886474609375, + "y": -0.40240478515625 + }, + { + "x": 0.102569580078125, + "y": -0.2327880859375 + }, + { + "x": -0.3646240234375, + "y": 0.138671875 + }, + { + "x": -0.174591064453125, + "y": -0.15948486328125 + }, + { + "x": 0.311065673828125, + "y": -0.73602294921875 + }, + { + "x": -0.869140625, + "y": 0.5811767578125 + }, + { + "x": 0.27099609375, + "y": -1.20782470703125 + }, + { + "x": 0.66693115234375, + "y": -0.578125 + }, + { + "x": 0.499176025390625, + "y": -0.38580322265625 + }, + { + "x": -0.94317626953125, + "y": 0.3775634765625 + }, + { + "x": 0.880706787109375, + "y": -0.27899169921875 + }, + { + "x": -0.255950927734375, + "y": -0.1522216796875 + }, + { + "x": 1.63140869140625, + "y": -0.19769287109375 + }, + { + "x": -0.499908447265625, + "y": 0.27276611328125 + }, + { + "x": 1.21234130859375, + "y": -0.75048828125 + }, + { + "x": -1.308380126953125, + "y": 0.31341552734375 + }, + { + "x": 0.430755615234375, + "y": -0.37371826171875 + }, + { + "x": -0.7674560546875, + "y": 0.106689453125 + }, + { + "x": 1.052459716796875, + "y": -0.2703857421875 + }, + { + "x": 0.237884521484375, + "y": -0.24420166015625 + }, + { + "x": 0.96527099609375, + "y": -0.7576904296875 + }, + { + "x": 0.152862548828125, + "y": -0.4595947265625 + }, + { + "x": 0.404327392578125, + "y": -0.61944580078125 + }, + { + "x": -1.229888916015625, + "y": 1.3089599609375 + }, + { + "x": 0.104583740234375, + "y": -0.15643310546875 + }, + { + "x": 1.074462890625, + "y": -0.96954345703125 + }, + { + "x": 0.26947021484375, + "y": -0.825439453125 + }, + { + "x": -0.523406982421875, + "y": 0.42132568359375 + }, + { + "x": 0.566741943359375, + "y": -0.792236328125 + }, + { + "x": 0.495819091796875, + "y": -0.64544677734375 + }, + { + "x": -0.141937255859375, + "y": -0.7266845703125 + }, + { + "x": -1.38037109375, + "y": 1.7479248046875 + }, + { + "x": 0.21429443359375, + "y": 0.03753662109375 + }, + { + "x": 0.200347900390625, + "y": -0.00103759765625 + }, + { + "x": 0.240234375, + "y": -0.505126953125 + }, + { + "x": 0.617584228515625, + "y": 0.00604248046875 + }, + { + "x": 0.498016357421875, + "y": 0.17669677734375 + }, + { + "x": 1.03564453125, + "y": -0.25091552734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2753573440250048, + "y": 0.10173669782174531, + "z": 1.1828724064766643 + }, + "rotation": { + "quaternion": { + "W": 0.972153586431286, + "X": 0.15902209781813456, + "Y": 0.17132711012293925, + "Z": -0.016625225749747084 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img64.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img64.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 284.1118469238281, + "y": 522.0707397460938 + }, + { + "x": 304.210205078125, + "y": 523.6314697265625 + }, + { + "x": 323.6956787109375, + "y": 524.9737548828125 + }, + { + "x": 343.51654052734375, + "y": 526.4403076171875 + }, + { + "x": 364.13629150390625, + "y": 528.2325439453125 + }, + { + "x": 385.1468200683594, + "y": 528.932373046875 + }, + { + "x": 407.2339172363281, + "y": 529.6488647460938 + }, + { + "x": 288.90557861328125, + "y": 542.92236328125 + }, + { + "x": 308.8985290527344, + "y": 543.7217407226562 + }, + { + "x": 327.3605651855469, + "y": 545.82763671875 + }, + { + "x": 346.9258728027344, + "y": 547.7286376953125 + }, + { + "x": 367.5354309082031, + "y": 548.84326171875 + }, + { + "x": 388.4627685546875, + "y": 550.5419311523438 + }, + { + "x": 409.676513671875, + "y": 551.6416015625 + }, + { + "x": 293.1551513671875, + "y": 562.5596313476562 + }, + { + "x": 312.1365661621094, + "y": 564.9664306640625 + }, + { + "x": 332.9087829589844, + "y": 565.2785034179688 + }, + { + "x": 351.5563659667969, + "y": 568.794189453125 + }, + { + "x": 371.2893371582031, + "y": 569.67333984375 + }, + { + "x": 392.096923828125, + "y": 571.4547729492188 + }, + { + "x": 413.84735107421875, + "y": 572.231201171875 + }, + { + "x": 296.336181640625, + "y": 582.4856567382812 + }, + { + "x": 316.6461181640625, + "y": 584.2861328125 + }, + { + "x": 334.57830810546875, + "y": 586.3958740234375 + }, + { + "x": 355.6931457519531, + "y": 587.972412109375 + }, + { + "x": 374.4501037597656, + "y": 590.061279296875 + }, + { + "x": 396.6930236816406, + "y": 590.8609619140625 + }, + { + "x": 415.8223571777344, + "y": 593.2769165039062 + }, + { + "x": 301.6141662597656, + "y": 601.7161865234375 + }, + { + "x": 319.19171142578125, + "y": 603.972900390625 + }, + { + "x": 339.3485107421875, + "y": 605.7302856445312 + }, + { + "x": 358.4329528808594, + "y": 608.4617919921875 + }, + { + "x": 378.7976989746094, + "y": 609.6957397460938 + }, + { + "x": 398.5325927734375, + "y": 611.931884765625 + }, + { + "x": 420.4342041015625, + "y": 612.056884765625 + }, + { + "x": 304.3153076171875, + "y": 620.8616943359375 + }, + { + "x": 323.32159423828125, + "y": 623.965576171875 + }, + { + "x": 342.7131042480469, + "y": 625.6803588867188 + }, + { + "x": 362.4620056152344, + "y": 626.5721435546875 + }, + { + "x": 381.7746887207031, + "y": 629.604248046875 + }, + { + "x": 401.16302490234375, + "y": 631.1324462890625 + }, + { + "x": 423.8941345214844, + "y": 633.6412963867188 + }, + { + "x": 309.584716796875, + "y": 638.7562866210938 + }, + { + "x": 327.2929382324219, + "y": 642.2628173828125 + }, + { + "x": 346.5908508300781, + "y": 644.1143188476562 + }, + { + "x": 365.5934143066406, + "y": 646.847900390625 + }, + { + "x": 384.1159362792969, + "y": 648.2542724609375 + }, + { + "x": 403.45001220703125, + "y": 649.0579223632812 + }, + { + "x": 427.17803955078125, + "y": 651.8148193359375 + } + ], + "reprojectionErrors": [ + { + "x": 0.405975341796875, + "y": 0.43634033203125 + }, + { + "x": -0.082000732421875, + "y": 0.2177734375 + }, + { + "x": 0.297637939453125, + "y": 0.234619140625 + }, + { + "x": 0.601593017578125, + "y": 0.14453125 + }, + { + "x": 0.371368408203125, + "y": -0.25360107421875 + }, + { + "x": 0.020355224609375, + "y": 0.45867919921875 + }, + { + "x": -1.1319580078125, + "y": 1.17266845703125 + }, + { + "x": -0.1658935546875, + "y": -0.2342529296875 + }, + { + "x": -0.660675048828125, + "y": 0.42803955078125 + }, + { + "x": 0.626953125, + "y": -0.19775390625 + }, + { + "x": 1.067596435546875, + "y": -0.59991455078125 + }, + { + "x": 0.72528076171875, + "y": -0.1966552734375 + }, + { + "x": 0.33160400390625, + "y": -0.35791015625 + }, + { + "x": -0.076934814453125, + "y": 0.09967041015625 + }, + { + "x": -0.293975830078125, + "y": 0.0628662109375 + }, + { + "x": 0.112701416015625, + "y": -0.765869140625 + }, + { + "x": -1.023101806640625, + "y": 0.51983642578125 + }, + { + "x": 0.21875, + "y": -1.3779296875 + }, + { + "x": 0.633148193359375, + "y": -0.61865234375 + }, + { + "x": 0.23583984375, + "y": -0.74078369140625 + }, + { + "x": -0.8363037109375, + "y": 0.163330078125 + }, + { + "x": 0.5489501953125, + "y": -0.166748046875 + }, + { + "x": -0.480865478515625, + "y": -0.27581787109375 + }, + { + "x": 1.112274169921875, + "y": -0.673095703125 + }, + { + "x": -0.227386474609375, + "y": -0.5157470703125 + }, + { + "x": 1.04547119140625, + "y": -0.84893798828125 + }, + { + "x": -0.908111572265625, + "y": 0.12933349609375 + }, + { + "x": 0.51641845703125, + "y": -0.48602294921875 + }, + { + "x": -0.799896240234375, + "y": 0.06951904296875 + }, + { + "x": 0.796722412109375, + "y": -0.38525390625 + }, + { + "x": 0.0562744140625, + "y": -0.31842041015625 + }, + { + "x": 0.63494873046875, + "y": -1.203125 + }, + { + "x": 0.18475341796875, + "y": -0.56707763671875 + }, + { + "x": 0.62066650390625, + "y": -0.9097900390625 + }, + { + "x": -0.8489990234375, + "y": 0.8826904296875 + }, + { + "x": 0.33587646484375, + "y": 0.16937255859375 + }, + { + "x": 0.3997802734375, + "y": -1.02484130859375 + }, + { + "x": 0.3177490234375, + "y": -0.8065185546875 + }, + { + "x": 0.122039794921875, + "y": 0.2586669921875 + }, + { + "x": 0.61090087890625, + "y": -0.79217529296875 + }, + { + "x": 1.27716064453125, + "y": -0.31427001953125 + }, + { + "x": -1.141510009765625, + "y": -0.79180908203125 + }, + { + "x": -1.18634033203125, + "y": 1.30633544921875 + }, + { + "x": 0.0736083984375, + "y": -0.1854248046875 + }, + { + "x": -0.01971435546875, + "y": 0.00244140625 + }, + { + "x": 0.423126220703125, + "y": -0.666748046875 + }, + { + "x": 1.591339111328125, + "y": 0.0167236328125 + }, + { + "x": 2.197906494140625, + "y": 1.32891845703125 + }, + { + "x": -1.334808349609375, + "y": 0.71435546875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.35060574885985774, + "y": 0.132983133499961, + "z": 1.2432320241755332 + }, + "rotation": { + "quaternion": { + "W": 0.9712832461371395, + "X": 0.17690961471277836, + "Y": 0.1583071088307454, + "Z": -0.01583361263665887 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img65.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img65.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 279.9111022949219, + "y": 647.2797241210938 + }, + { + "x": 305.3954162597656, + "y": 650.3973999023438 + }, + { + "x": 330.0572509765625, + "y": 653.606201171875 + }, + { + "x": 352.50360107421875, + "y": 657.638916015625 + }, + { + "x": 377.0902099609375, + "y": 663.2579956054688 + }, + { + "x": 402.40283203125, + "y": 664.6954956054688 + }, + { + "x": 428.6099548339844, + "y": 668.7914428710938 + }, + { + "x": 285.0377502441406, + "y": 665.7705688476562 + }, + { + "x": 310.0097351074219, + "y": 669.2492065429688 + }, + { + "x": 331.7000427246094, + "y": 673.66015625 + }, + { + "x": 355.20501708984375, + "y": 676.9774780273438 + }, + { + "x": 379.7541198730469, + "y": 680.9841918945312 + }, + { + "x": 404.7060241699219, + "y": 685.3772583007812 + }, + { + "x": 430.2770690917969, + "y": 688.7206420898438 + }, + { + "x": 288.5799255371094, + "y": 683.8511352539062 + }, + { + "x": 311.3876647949219, + "y": 688.6394653320312 + }, + { + "x": 336.1390380859375, + "y": 691.1644287109375 + }, + { + "x": 359.2289733886719, + "y": 697.5157470703125 + }, + { + "x": 380.7329406738281, + "y": 701.0003662109375 + }, + { + "x": 406.3315734863281, + "y": 703.40380859375 + }, + { + "x": 431.5374755859375, + "y": 706.203857421875 + }, + { + "x": 290.5665588378906, + "y": 701.7850952148438 + }, + { + "x": 315.0132751464844, + "y": 705.7471923828125 + }, + { + "x": 336.40216064453125, + "y": 709.843017578125 + }, + { + "x": 361.567626953125, + "y": 712.7957153320312 + }, + { + "x": 383.2554016113281, + "y": 717.7694091796875 + }, + { + "x": 410.3426513671875, + "y": 720.6031494140625 + }, + { + "x": 431.390625, + "y": 724.9877319335938 + }, + { + "x": 295.0799255371094, + "y": 720.912841796875 + }, + { + "x": 315.72894287109375, + "y": 722.5862426757812 + }, + { + "x": 340.70880126953125, + "y": 726.708740234375 + }, + { + "x": 362.3167724609375, + "y": 731.40283203125 + }, + { + "x": 386.1390686035156, + "y": 735.7314453125 + }, + { + "x": 409.8603515625, + "y": 739.151611328125 + }, + { + "x": 434.7332763671875, + "y": 741.4283447265625 + }, + { + "x": 297.1352233886719, + "y": 735.7192993164062 + }, + { + "x": 320.1337890625, + "y": 741.3989868164062 + }, + { + "x": 342.5122985839844, + "y": 744.5989379882812 + }, + { + "x": 365.2716979980469, + "y": 748.2490844726562 + }, + { + "x": 388.1785583496094, + "y": 752.4417114257812 + }, + { + "x": 411.48358154296875, + "y": 756.5914306640625 + }, + { + "x": 435.39312744140625, + "y": 760.1871948242188 + }, + { + "x": 301.6017150878906, + "y": 750.9796752929688 + }, + { + "x": 322.4427490234375, + "y": 756.7643432617188 + }, + { + "x": 344.27862548828125, + "y": 763.6527099609375 + }, + { + "x": 367.36968994140625, + "y": 764.9415893554688 + }, + { + "x": 390.4049072265625, + "y": 769.4406127929688 + }, + { + "x": 413.0600891113281, + "y": 772.4020385742188 + }, + { + "x": 435.1697998046875, + "y": 777.4483032226562 + } + ], + "reprojectionErrors": [ + { + "x": 1.608734130859375, + "y": -0.3785400390625 + }, + { + "x": -0.005157470703125, + "y": 0.241943359375 + }, + { + "x": -0.621795654296875, + "y": 0.7978515625 + }, + { + "x": 1.153656005859375, + "y": 0.5567626953125 + }, + { + "x": 0.96734619140625, + "y": -1.24359130859375 + }, + { + "x": 0.2354736328125, + "y": 1.1650390625 + }, + { + "x": -1.208526611328125, + "y": 0.9429931640625 + }, + { + "x": -0.134796142578125, + "y": -0.2491455078125 + }, + { + "x": -1.5067138671875, + "y": 0.0330810546875 + }, + { + "x": 0.573760986328125, + "y": -0.59063720703125 + }, + { + "x": 1.01214599609375, + "y": -0.093994140625 + }, + { + "x": 0.580718994140625, + "y": -0.259765625 + }, + { + "x": -0.077301025390625, + "y": -0.78466796875 + }, + { + "x": -1.1763916015625, + "y": -0.23236083984375 + }, + { + "x": -0.408721923828125, + "y": -0.08355712890625 + }, + { + "x": 0.12066650390625, + "y": -1.08990478515625 + }, + { + "x": -1.126708984375, + "y": 0.19329833984375 + }, + { + "x": -0.544036865234375, + "y": -2.32330322265625 + }, + { + "x": 1.794952392578125, + "y": -1.94647216796875 + }, + { + "x": 0.21142578125, + "y": -0.46136474609375 + }, + { + "x": -0.805419921875, + "y": 0.65447998046875 + }, + { + "x": 0.762603759765625, + "y": -0.1290283203125 + }, + { + "x": -0.602752685546875, + "y": -0.28961181640625 + }, + { + "x": 1.252838134765625, + "y": -0.55780029296875 + }, + { + "x": -0.503326416015625, + "y": 0.3433837890625 + }, + { + "x": 1.38470458984375, + "y": -0.749755859375 + }, + { + "x": -1.958465576171875, + "y": 0.32391357421875 + }, + { + "x": 0.9075927734375, + "y": -0.12615966796875 + }, + { + "x": -0.69873046875, + "y": -1.7105712890625 + }, + { + "x": 1.484649658203125, + "y": 0.435791015625 + }, + { + "x": -0.50323486328125, + "y": 0.15887451171875 + }, + { + "x": 1.04193115234375, + "y": -0.6634521484375 + }, + { + "x": 0.53558349609375, + "y": -1.0938720703125 + }, + { + "x": 0.294769287109375, + "y": -0.5892333984375 + }, + { + "x": -0.931549072265625, + "y": 1.0858154296875 + }, + { + "x": 0.1961669921875, + "y": 0.7015380859375 + }, + { + "x": -0.212371826171875, + "y": -1.1414794921875 + }, + { + "x": 0.1552734375, + "y": -0.47906494140625 + }, + { + "x": 0.299713134765625, + "y": -0.240966796875 + }, + { + "x": 0.455963134765625, + "y": -0.51904296875 + }, + { + "x": 0.37493896484375, + "y": -0.727783203125 + }, + { + "x": -0.148101806640625, + "y": -0.3558349609375 + }, + { + "x": -1.41815185546875, + "y": 2.3460693359375 + }, + { + "x": 0.094818115234375, + "y": 0.41375732421875 + }, + { + "x": 0.765777587890625, + "y": -2.5968017578125 + }, + { + "x": 0.335845947265625, + "y": 0.0179443359375 + }, + { + "x": 0.117645263671875, + "y": -0.5513916015625 + }, + { + "x": 0.436859130859375, + "y": 0.44305419921875 + }, + { + "x": 1.4605712890625, + "y": -0.6207275390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.31528100077601834, + "y": 0.2425386768351401, + "z": 1.10734449823773 + }, + "rotation": { + "quaternion": { + "W": 0.9597787574259234, + "X": 0.26341033545895054, + "Y": 0.0913586713079231, + "Z": 0.03306546754855239 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img66.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img66.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 234.66046142578125, + "y": 645.2486572265625 + }, + { + "x": 259.2382507324219, + "y": 648.52197265625 + }, + { + "x": 283.4126892089844, + "y": 651.8128662109375 + }, + { + "x": 307.2232666015625, + "y": 655.988525390625 + }, + { + "x": 332.2158203125, + "y": 659.9675903320312 + }, + { + "x": 357.66253662109375, + "y": 662.8052368164062 + }, + { + "x": 384.1130676269531, + "y": 666.4835815429688 + }, + { + "x": 239.65110778808594, + "y": 665.4783325195312 + }, + { + "x": 264.4281005859375, + "y": 668.7902221679688 + }, + { + "x": 286.10418701171875, + "y": 673.3319091796875 + }, + { + "x": 309.47821044921875, + "y": 677.3389282226562 + }, + { + "x": 334.77093505859375, + "y": 680.6473388671875 + }, + { + "x": 360.4791259765625, + "y": 684.5142211914062 + }, + { + "x": 385.2684631347656, + "y": 687.716064453125 + }, + { + "x": 243.0606689453125, + "y": 685.2163696289062 + }, + { + "x": 266.1459655761719, + "y": 689.7481689453125 + }, + { + "x": 290.7821044921875, + "y": 692.0307006835938 + }, + { + "x": 313.30133056640625, + "y": 697.7036743164062 + }, + { + "x": 336.3143005371094, + "y": 701.6564331054688 + }, + { + "x": 361.8484802246094, + "y": 704.6129150390625 + }, + { + "x": 388.2123718261719, + "y": 707.2877197265625 + }, + { + "x": 245.67393493652344, + "y": 704.7874145507812 + }, + { + "x": 270.09552001953125, + "y": 708.3580322265625 + }, + { + "x": 291.16961669921875, + "y": 712.5740356445312 + }, + { + "x": 316.593505859375, + "y": 715.764892578125 + }, + { + "x": 338.5274963378906, + "y": 720.3579711914062 + }, + { + "x": 366.2457580566406, + "y": 722.7212524414062 + }, + { + "x": 387.880126953125, + "y": 727.396728515625 + }, + { + "x": 250.13768005371094, + "y": 723.8690795898438 + }, + { + "x": 271.0240783691406, + "y": 727.453125 + }, + { + "x": 295.46197509765625, + "y": 730.6708374023438 + }, + { + "x": 317.4354248046875, + "y": 735.5289306640625 + }, + { + "x": 341.54254150390625, + "y": 739.7173461914062 + }, + { + "x": 365.64642333984375, + "y": 743.024658203125 + }, + { + "x": 391.59942626953125, + "y": 745.1989135742188 + }, + { + "x": 252.18711853027344, + "y": 741.7088623046875 + }, + { + "x": 274.5702209472656, + "y": 746.6489868164062 + }, + { + "x": 297.8537902832031, + "y": 750.1710815429688 + }, + { + "x": 320.8415222167969, + "y": 753.1270751953125 + }, + { + "x": 343.9333190917969, + "y": 757.8287963867188 + }, + { + "x": 367.7801818847656, + "y": 761.6431274414062 + }, + { + "x": 392.0909423828125, + "y": 765.56640625 + }, + { + "x": 257.1104431152344, + "y": 757.270263671875 + }, + { + "x": 277.5585021972656, + "y": 763.6502075195312 + }, + { + "x": 301.29302978515625, + "y": 767.5964965820312 + }, + { + "x": 323.150146484375, + "y": 771.837890625 + }, + { + "x": 346.26324462890625, + "y": 774.97265625 + }, + { + "x": 369.693359375, + "y": 779.2891235351562 + }, + { + "x": 392.2795104980469, + "y": 783.8047485351562 + } + ], + "reprojectionErrors": [ + { + "x": 0.9076995849609375, + "y": 0.048583984375 + }, + { + "x": 0.3565673828125, + "y": 0.427001953125 + }, + { + "x": 0.3974609375, + "y": 0.81573486328125 + }, + { + "x": 0.993011474609375, + "y": 0.34796142578125 + }, + { + "x": 0.599639892578125, + "y": 0.1053466796875 + }, + { + "x": -0.05267333984375, + "y": 1.03302001953125 + }, + { + "x": -1.51129150390625, + "y": 1.14923095703125 + }, + { + "x": -0.5135650634765625, + "y": -0.202880859375 + }, + { + "x": -1.51202392578125, + "y": 0.17425537109375 + }, + { + "x": 0.77508544921875, + "y": -0.6505126953125 + }, + { + "x": 1.551055908203125, + "y": -0.9124755859375 + }, + { + "x": 0.59716796875, + "y": -0.447265625 + }, + { + "x": -0.58111572265625, + "y": -0.51171875 + }, + { + "x": -0.647308349609375, + "y": 0.11810302734375 + }, + { + "x": -0.471038818359375, + "y": -0.33428955078125 + }, + { + "x": -0.019439697265625, + "y": -1.14178466796875 + }, + { + "x": -0.937835693359375, + "y": 0.327880859375 + }, + { + "x": 0.443511962890625, + "y": -1.5648193359375 + }, + { + "x": 1.51605224609375, + "y": -1.70880126953125 + }, + { + "x": 0.25439453125, + "y": -0.8277587890625 + }, + { + "x": -1.64788818359375, + "y": 0.36407470703125 + }, + { + "x": 0.2548980712890625, + "y": -0.6546630859375 + }, + { + "x": -0.86517333984375, + "y": -0.467529296875 + }, + { + "x": 1.539398193359375, + "y": -0.89794921875 + }, + { + "x": -0.22674560546875, + "y": -0.275146484375 + }, + { + "x": 1.678070068359375, + "y": -1.02618408203125 + }, + { + "x": -2.018218994140625, + "y": 0.4813232421875 + }, + { + "x": 0.55450439453125, + "y": -0.29437255859375 + }, + { + "x": -0.9783782958984375, + "y": -0.8267822265625 + }, + { + "x": 1.2073974609375, + "y": -0.62127685546875 + }, + { + "x": 0.015228271484375, + "y": -0.021728515625 + }, + { + "x": 1.462982177734375, + "y": -1.0345458984375 + }, + { + "x": 0.9544677734375, + "y": -1.34942626953125 + }, + { + "x": 0.628570556640625, + "y": -0.7545166015625 + }, + { + "x": -1.3651123046875, + "y": 1.00238037109375 + }, + { + "x": 0.097900390625, + "y": -0.0838623046875 + }, + { + "x": 0.563446044921875, + "y": -1.20428466796875 + }, + { + "x": 0.29864501953125, + "y": -0.87908935546875 + }, + { + "x": 0.50164794921875, + "y": 0.0401611328125 + }, + { + "x": 0.7744140625, + "y": -0.758056640625 + }, + { + "x": 0.4678955078125, + "y": -0.640380859375 + }, + { + "x": -0.124847412109375, + "y": -0.602783203125 + }, + { + "x": -1.800689697265625, + "y": 2.6240234375 + }, + { + "x": 0.3819580078125, + "y": 0.09234619140625 + }, + { + "x": -0.5550537109375, + "y": 0.02191162109375 + }, + { + "x": 0.553955078125, + "y": -0.31573486328125 + }, + { + "x": 0.577423095703125, + "y": 0.4813232421875 + }, + { + "x": 0.45611572265625, + "y": 0.12518310546875 + }, + { + "x": 1.3529052734375, + "y": -0.40142822265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.3551590177595817, + "y": 0.23689642829003119, + "z": 1.0887668333224503 + }, + "rotation": { + "quaternion": { + "W": 0.9667854308061571, + "X": 0.23577869534236198, + "Y": 0.0936551639984542, + "Z": 0.031033012422732615 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img67.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img67.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 410.5708923339844, + "y": 657.7415161132812 + }, + { + "x": 436.9247131347656, + "y": 660.9525756835938 + }, + { + "x": 462.4510803222656, + "y": 664.38916015625 + }, + { + "x": 486.14459228515625, + "y": 667.6773071289062 + }, + { + "x": 511.4256591796875, + "y": 672.6853637695312 + }, + { + "x": 537.0795288085938, + "y": 673.7659301757812 + }, + { + "x": 564.0637817382812, + "y": 678.3740844726562 + }, + { + "x": 414.3868408203125, + "y": 677.7975463867188 + }, + { + "x": 439.8650207519531, + "y": 680.7037353515625 + }, + { + "x": 463.010498046875, + "y": 684.9483032226562 + }, + { + "x": 487.1603088378906, + "y": 687.970703125 + }, + { + "x": 512.7072143554688, + "y": 691.6175537109375 + }, + { + "x": 538.6329345703125, + "y": 695.3876953125 + }, + { + "x": 564.7017211914062, + "y": 699.0398559570312 + }, + { + "x": 416.4523620605469, + "y": 696.2042236328125 + }, + { + "x": 440.27862548828125, + "y": 701.156005859375 + }, + { + "x": 465.7232666015625, + "y": 703.515380859375 + }, + { + "x": 489.9180603027344, + "y": 709.36279296875 + }, + { + "x": 512.331298828125, + "y": 712.5977783203125 + }, + { + "x": 538.0390014648438, + "y": 713.7702026367188 + }, + { + "x": 563.6704711914062, + "y": 717.2023315429688 + }, + { + "x": 417.1671447753906, + "y": 715.60546875 + }, + { + "x": 442.05712890625, + "y": 719.3040771484375 + }, + { + "x": 464.91802978515625, + "y": 722.7108764648438 + }, + { + "x": 490.7642822265625, + "y": 725.958251953125 + }, + { + "x": 513.160400390625, + "y": 729.6572265625 + }, + { + "x": 540.6671752929688, + "y": 733.0172729492188 + }, + { + "x": 562.2516479492188, + "y": 736.3772583007812 + }, + { + "x": 419.64990234375, + "y": 733.92578125 + }, + { + "x": 441.70880126953125, + "y": 736.54345703125 + }, + { + "x": 467.5752868652344, + "y": 740.60595703125 + }, + { + "x": 489.4820556640625, + "y": 744.0906372070312 + }, + { + "x": 514.39013671875, + "y": 748.7203979492188 + }, + { + "x": 538.5706176757812, + "y": 751.1157836914062 + }, + { + "x": 564.5465087890625, + "y": 753.9816284179688 + }, + { + "x": 420.5709228515625, + "y": 750.834228515625 + }, + { + "x": 444.3610534667969, + "y": 756.2760620117188 + }, + { + "x": 467.68798828125, + "y": 758.8959350585938 + }, + { + "x": 491.3672180175781, + "y": 762.5978393554688 + }, + { + "x": 514.9116821289062, + "y": 766.2861938476562 + }, + { + "x": 538.7409057617188, + "y": 769.953369140625 + }, + { + "x": 563.7108154296875, + "y": 773.1198120117188 + }, + { + "x": 423.41259765625, + "y": 767.3478393554688 + }, + { + "x": 445.49774169921875, + "y": 772.3378295898438 + }, + { + "x": 468.4577331542969, + "y": 776.8134155273438 + }, + { + "x": 492.04022216796875, + "y": 779.7852172851562 + }, + { + "x": 515.830322265625, + "y": 783.7590942382812 + }, + { + "x": 539.439208984375, + "y": 786.50927734375 + }, + { + "x": 561.7054443359375, + "y": 790.4850463867188 + } + ], + "reprojectionErrors": [ + { + "x": 1.95684814453125, + "y": 0.385986328125 + }, + { + "x": 0.272674560546875, + "y": 0.57623291015625 + }, + { + "x": -0.408935546875, + "y": 0.5643310546875 + }, + { + "x": 0.91925048828125, + "y": 0.7244873046875 + }, + { + "x": 0.838623046875, + "y": -0.81134033203125 + }, + { + "x": 0.5657958984375, + "y": 1.60443115234375 + }, + { + "x": -0.8548583984375, + "y": 0.5169677734375 + }, + { + "x": -0.066802978515625, + "y": -0.33465576171875 + }, + { + "x": -1.14599609375, + "y": 0.1898193359375 + }, + { + "x": 0.278778076171875, + "y": -0.600830078125 + }, + { + "x": 0.872222900390625, + "y": -0.14569091796875 + }, + { + "x": 0.24334716796875, + "y": -0.291259765625 + }, + { + "x": -0.58782958984375, + "y": -0.53607177734375 + }, + { + "x": -1.3836669921875, + "y": -0.63861083984375 + }, + { + "x": -0.406951904296875, + "y": 0.22576904296875 + }, + { + "x": -0.097442626953125, + "y": -1.26776123046875 + }, + { + "x": -1.23883056640625, + "y": -0.1456298828125 + }, + { + "x": -0.96112060546875, + "y": -2.48809814453125 + }, + { + "x": 1.26904296875, + "y": -2.19439697265625 + }, + { + "x": 0.37744140625, + "y": 0.185791015625 + }, + { + "x": -0.2635498046875, + "y": 0.3304443359375 + }, + { + "x": 0.539306640625, + "y": -0.56103515625 + }, + { + "x": -0.471099853515625, + "y": -0.77532958984375 + }, + { + "x": 0.711517333984375, + "y": -0.6746826171875 + }, + { + "x": -0.925628662109375, + "y": -0.39117431640625 + }, + { + "x": 1.05462646484375, + "y": -0.5357666015625 + }, + { + "x": -1.90692138671875, + "y": -0.3175048828125 + }, + { + "x": 1.2244873046875, + "y": -0.07513427734375 + }, + { + "x": -0.344451904296875, + "y": -0.60455322265625 + }, + { + "x": 1.226898193359375, + "y": 0.28668212890625 + }, + { + "x": -0.84881591796875, + "y": -0.243896484375 + }, + { + "x": 1.197235107421875, + "y": -0.17333984375 + }, + { + "x": 0.40570068359375, + "y": -1.224365234375 + }, + { + "x": 0.50701904296875, + "y": -0.017333984375 + }, + { + "x": -1.02008056640625, + "y": 0.7432861328125 + }, + { + "x": 0.273834228515625, + "y": 0.4403076171875 + }, + { + "x": -0.128814697265625, + "y": -1.46942138671875 + }, + { + "x": 0.08892822265625, + "y": -0.53424072265625 + }, + { + "x": 0.113067626953125, + "y": -0.657958984375 + }, + { + "x": 0.4322509765625, + "y": -0.74468994140625 + }, + { + "x": 0.6285400390625, + "y": -0.78662109375 + }, + { + "x": -0.1524658203125, + "y": -0.303955078125 + }, + { + "x": -1.08612060546875, + "y": 1.5699462890625 + }, + { + "x": -0.02020263671875, + "y": 0.13397216796875 + }, + { + "x": 0.3248291015625, + "y": -0.76470947265625 + }, + { + "x": 0.20281982421875, + "y": -0.1365966796875 + }, + { + "x": 0.03021240234375, + "y": -0.48724365234375 + }, + { + "x": 0.197265625, + "y": 0.4093017578125 + }, + { + "x": 1.8670654296875, + "y": 0.10400390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.1825571261422901, + "y": 0.25132190811659394, + "z": 1.0968021522074458 + }, + "rotation": { + "quaternion": { + "W": 0.9650403620144185, + "X": 0.24600223800768273, + "Y": 0.0858846646235288, + "Z": 0.028351771739974465 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img68.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img68.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 516.5707397460938, + "y": 664.7763061523438 + }, + { + "x": 542.8984375, + "y": 666.8980102539062 + }, + { + "x": 568.6189575195312, + "y": 668.770263671875 + }, + { + "x": 592.4329833984375, + "y": 671.184326171875 + }, + { + "x": 617.865966796875, + "y": 674.6177978515625 + }, + { + "x": 643.9894409179688, + "y": 675.2030639648438 + }, + { + "x": 670.3070678710938, + "y": 678.4468383789062 + }, + { + "x": 521.5181884765625, + "y": 685.4695434570312 + }, + { + "x": 547.119384765625, + "y": 687.2881469726562 + }, + { + "x": 570.3187866210938, + "y": 689.9801025390625 + }, + { + "x": 594.3505249023438, + "y": 692.5548706054688 + }, + { + "x": 620.5460815429688, + "y": 694.5986328125 + }, + { + "x": 646.6202392578125, + "y": 697.05078125 + }, + { + "x": 672.7813110351562, + "y": 699.2150268554688 + }, + { + "x": 524.8323364257812, + "y": 704.0305786132812 + }, + { + "x": 548.9393310546875, + "y": 708.4453125 + }, + { + "x": 574.4043579101562, + "y": 709.4094848632812 + }, + { + "x": 598.5836181640625, + "y": 713.5411376953125 + }, + { + "x": 621.4993896484375, + "y": 715.9685668945312 + }, + { + "x": 647.64208984375, + "y": 716.5859375 + }, + { + "x": 673.2427368164062, + "y": 718.5987548828125 + }, + { + "x": 526.7362060546875, + "y": 724.3618774414062 + }, + { + "x": 551.8466796875, + "y": 726.6190795898438 + }, + { + "x": 574.422119140625, + "y": 729.1708984375 + }, + { + "x": 600.638916015625, + "y": 731.4223022460938 + }, + { + "x": 623.5209350585938, + "y": 733.9003295898438 + }, + { + "x": 651.0508422851562, + "y": 735.8137817382812 + }, + { + "x": 673.2921752929688, + "y": 738.4689331054688 + }, + { + "x": 530.3526611328125, + "y": 743.30615234375 + }, + { + "x": 552.1885986328125, + "y": 744.6883544921875 + }, + { + "x": 578.31689453125, + "y": 747.783935546875 + }, + { + "x": 601.0640258789062, + "y": 750.4225463867188 + }, + { + "x": 625.8058471679688, + "y": 753.2488403320312 + }, + { + "x": 650.55322265625, + "y": 755.3470458984375 + }, + { + "x": 676.384765625, + "y": 756.7399291992188 + }, + { + "x": 532.4035034179688, + "y": 760.6109619140625 + }, + { + "x": 556.1075439453125, + "y": 764.6217041015625 + }, + { + "x": 580.3741455078125, + "y": 767.1670532226562 + }, + { + "x": 603.582763671875, + "y": 769.2350463867188 + }, + { + "x": 627.8216552734375, + "y": 771.7208862304688 + }, + { + "x": 651.6312866210938, + "y": 774.2806396484375 + }, + { + "x": 676.758544921875, + "y": 776.4306640625 + }, + { + "x": 536.275146484375, + "y": 777.6812744140625 + }, + { + "x": 558.8888549804688, + "y": 781.772705078125 + }, + { + "x": 582.02001953125, + "y": 784.4154663085938 + }, + { + "x": 606.041748046875, + "y": 787.2760009765625 + }, + { + "x": 629.3717041015625, + "y": 789.223876953125 + }, + { + "x": 653.3153686523438, + "y": 791.4783935546875 + }, + { + "x": 676.6300048828125, + "y": 793.7586059570312 + } + ], + "reprojectionErrors": [ + { + "x": 2.0892333984375, + "y": 0.79681396484375 + }, + { + "x": 0.3309326171875, + "y": 0.7828369140625 + }, + { + "x": -0.5513916015625, + "y": 1.04058837890625 + }, + { + "x": 0.745849609375, + "y": 0.77923583984375 + }, + { + "x": 0.7017822265625, + "y": -0.4783935546875 + }, + { + "x": 0.2493896484375, + "y": 1.13555908203125 + }, + { + "x": -0.1103515625, + "y": 0.11480712890625 + }, + { + "x": 0.13006591796875, + "y": -0.16644287109375 + }, + { + "x": -1.14349365234375, + "y": 0.20660400390625 + }, + { + "x": 0.248046875, + "y": -0.2706298828125 + }, + { + "x": 1.0748291015625, + "y": -0.607421875 + }, + { + "x": 0.0096435546875, + "y": -0.389404296875 + }, + { + "x": -0.6578369140625, + "y": -0.5556640625 + }, + { + "x": -1.13134765625, + "y": -0.40948486328125 + }, + { + "x": -0.28106689453125, + "y": 0.65338134765625 + }, + { + "x": -0.2960205078125, + "y": -1.48907470703125 + }, + { + "x": -1.410888671875, + "y": -0.157470703125 + }, + { + "x": -0.9779052734375, + "y": -1.96929931640625 + }, + { + "x": 0.9849853515625, + "y": -2.0526123046875 + }, + { + "x": -0.00836181640625, + "y": -0.30108642578125 + }, + { + "x": -0.1846923828125, + "y": 0.080078125 + }, + { + "x": 0.6361083984375, + "y": -0.631591796875 + }, + { + "x": -0.61199951171875, + "y": -0.539306640625 + }, + { + "x": 0.927978515625, + "y": -0.71746826171875 + }, + { + "x": -0.9163818359375, + "y": -0.5706787109375 + }, + { + "x": 0.83502197265625, + "y": -0.62554931640625 + }, + { + "x": -1.79620361328125, + "y": -0.090576171875 + }, + { + "x": 1.13055419921875, + "y": -0.27154541015625 + }, + { + "x": -0.23834228515625, + "y": -0.85040283203125 + }, + { + "x": 1.564208984375, + "y": 0.19110107421875 + }, + { + "x": -0.67742919921875, + "y": -0.45611572265625 + }, + { + "x": 0.71405029296875, + "y": -0.62127685546875 + }, + { + "x": 0.36676025390625, + "y": -0.94866943359375 + }, + { + "x": 0.27386474609375, + "y": -0.5220947265625 + }, + { + "x": -0.63909912109375, + "y": 0.63604736328125 + }, + { + "x": 0.37664794921875, + "y": 0.26239013671875 + }, + { + "x": 0.0927734375, + "y": -1.2532958984375 + }, + { + "x": -0.51025390625, + "y": -1.2784423828125 + }, + { + "x": 0.19183349609375, + "y": -0.80072021484375 + }, + { + "x": 0.1146240234375, + "y": -0.71490478515625 + }, + { + "x": 0.72161865234375, + "y": -0.67657470703125 + }, + { + "x": 0.26983642578125, + "y": -0.20184326171875 + }, + { + "x": -0.902587890625, + "y": 1.3143310546875 + }, + { + "x": -0.30914306640625, + "y": -0.21343994140625 + }, + { + "x": 0.0057373046875, + "y": -0.26702880859375 + }, + { + "x": -0.3275146484375, + "y": -0.5123291015625 + }, + { + "x": 0.2772216796875, + "y": 0.18145751953125 + }, + { + "x": 0.518310546875, + "y": 0.5953369140625 + }, + { + "x": 1.64227294921875, + "y": 1.0107421875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.07768549543003618, + "y": 0.2594104217970984, + "z": 1.0999047258118666 + }, + "rotation": { + "quaternion": { + "W": 0.9650003722631291, + "X": 0.23391420925391063, + "Y": 0.11764370316834169, + "Z": -0.014777799091171204 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img69.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img69.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 627.72412109375, + "y": 630.6119995117188 + }, + { + "x": 652.6846313476562, + "y": 632.9637451171875 + }, + { + "x": 677.7061157226562, + "y": 634.4408569335938 + }, + { + "x": 700.5629272460938, + "y": 636.6041259765625 + }, + { + "x": 724.9866943359375, + "y": 639.88232421875 + }, + { + "x": 749.9114379882812, + "y": 640.0997314453125 + }, + { + "x": 776.0986938476562, + "y": 643.063232421875 + }, + { + "x": 632.9892578125, + "y": 650.8670654296875 + }, + { + "x": 658.1548461914062, + "y": 652.6807250976562 + }, + { + "x": 680.362060546875, + "y": 655.3373413085938 + }, + { + "x": 703.5846557617188, + "y": 657.3085327148438 + }, + { + "x": 728.5308227539062, + "y": 659.5046997070312 + }, + { + "x": 753.3744506835938, + "y": 662.2013549804688 + }, + { + "x": 778.7570190429688, + "y": 663.8870849609375 + }, + { + "x": 637.1638793945312, + "y": 669.9446411132812 + }, + { + "x": 660.4321899414062, + "y": 673.370361328125 + }, + { + "x": 684.9435424804688, + "y": 674.4387817382812 + }, + { + "x": 708.3832397460938, + "y": 678.375244140625 + }, + { + "x": 729.9998779296875, + "y": 680.9833374023438 + }, + { + "x": 755.5121459960938, + "y": 681.5086669921875 + }, + { + "x": 780.3439331054688, + "y": 683.0302734375 + }, + { + "x": 639.7221069335938, + "y": 689.1964721679688 + }, + { + "x": 663.8702392578125, + "y": 691.5060424804688 + }, + { + "x": 686.01416015625, + "y": 693.8405151367188 + }, + { + "x": 710.446533203125, + "y": 696.3052978515625 + }, + { + "x": 732.841796875, + "y": 698.6228637695312 + }, + { + "x": 759.2399291992188, + "y": 700.4019775390625 + }, + { + "x": 781.1036987304688, + "y": 702.9028930664062 + }, + { + "x": 644.1289672851562, + "y": 708.1422729492188 + }, + { + "x": 665.2274169921875, + "y": 709.4434814453125 + }, + { + "x": 689.6649780273438, + "y": 712.7767333984375 + }, + { + "x": 711.807861328125, + "y": 714.6529541015625 + }, + { + "x": 735.827392578125, + "y": 717.64453125 + }, + { + "x": 759.6517944335938, + "y": 719.504150390625 + }, + { + "x": 784.5509033203125, + "y": 721.4154663085938 + }, + { + "x": 646.6234130859375, + "y": 724.89208984375 + }, + { + "x": 669.2808227539062, + "y": 728.9059448242188 + }, + { + "x": 693.0848999023438, + "y": 731.3229370117188 + }, + { + "x": 715.1083374023438, + "y": 733.3356323242188 + }, + { + "x": 738.5086669921875, + "y": 735.986328125 + }, + { + "x": 761.4849243164062, + "y": 738.5411987304688 + }, + { + "x": 785.8462524414062, + "y": 740.88623046875 + }, + { + "x": 650.42919921875, + "y": 741.9275512695312 + }, + { + "x": 672.8482055664062, + "y": 745.7100219726562 + }, + { + "x": 694.7207641601562, + "y": 748.3755493164062 + }, + { + "x": 718.1483764648438, + "y": 751.11865234375 + }, + { + "x": 740.4921875, + "y": 753.8314208984375 + }, + { + "x": 764.1749877929688, + "y": 756.1240844726562 + }, + { + "x": 786.0792236328125, + "y": 758.531494140625 + } + ], + "reprojectionErrors": [ + { + "x": 2.47650146484375, + "y": 1.07086181640625 + }, + { + "x": 0.81817626953125, + "y": 0.59405517578125 + }, + { + "x": -0.53521728515625, + "y": 1.0206298828125 + }, + { + "x": 0.65057373046875, + "y": 0.79058837890625 + }, + { + "x": 0.65283203125, + "y": -0.5242919921875 + }, + { + "x": 0.5467529296875, + "y": 1.25250244140625 + }, + { + "x": -0.4197998046875, + "y": 0.3148193359375 + }, + { + "x": 0.74072265625, + "y": 0.12432861328125 + }, + { + "x": -1.318603515625, + "y": 0.3165283203125 + }, + { + "x": -0.060302734375, + "y": -0.3037109375 + }, + { + "x": 0.55035400390625, + "y": -0.207275390625 + }, + { + "x": -0.1861572265625, + "y": -0.30389404296875 + }, + { + "x": -0.4349365234375, + "y": -0.8682861328125 + }, + { + "x": -0.828125, + "y": -0.38818359375 + }, + { + "x": 0.00604248046875, + "y": 0.04498291015625 + }, + { + "x": -0.3475341796875, + "y": -1.24871826171875 + }, + { + "x": -1.59124755859375, + "y": -0.1529541015625 + }, + { + "x": -1.40216064453125, + "y": -1.892333984375 + }, + { + "x": 0.97955322265625, + "y": -2.2696533203125 + }, + { + "x": -0.15625, + "y": -0.52972412109375 + }, + { + "x": -0.224365234375, + "y": 0.2491455078125 + }, + { + "x": 0.80145263671875, + "y": -0.50701904296875 + }, + { + "x": -0.61920166015625, + "y": -0.56280517578125 + }, + { + "x": 0.3111572265625, + "y": -0.60986328125 + }, + { + "x": -0.692138671875, + "y": -0.752685546875 + }, + { + "x": 0.70452880859375, + "y": -0.71307373046875 + }, + { + "x": -1.5302734375, + "y": -0.09893798828125 + }, + { + "x": 1.14935302734375, + "y": -0.16961669921875 + }, + { + "x": -0.335205078125, + "y": -1.0396728515625 + }, + { + "x": 1.11083984375, + "y": 0.03033447265625 + }, + { + "x": -0.44146728515625, + "y": -0.89654541015625 + }, + { + "x": 0.6495361328125, + "y": -0.3304443359375 + }, + { + "x": 0.220458984375, + "y": -0.84295654296875 + }, + { + "x": 0.35125732421875, + "y": -0.18585205078125 + }, + { + "x": -0.219482421875, + "y": 0.4580078125 + }, + { + "x": 0.36004638671875, + "y": 0.34783935546875 + }, + { + "x": 0.068115234375, + "y": -1.18133544921875 + }, + { + "x": -1.035400390625, + "y": -1.0771484375 + }, + { + "x": -0.01568603515625, + "y": -0.53131103515625 + }, + { + "x": -0.0224609375, + "y": -0.5853271484375 + }, + { + "x": 0.753173828125, + "y": -0.50445556640625 + }, + { + "x": 0.51031494140625, + "y": -0.17376708984375 + }, + { + "x": -0.33392333984375, + "y": 1.18450927734375 + }, + { + "x": -0.5625, + "y": -0.00372314453125 + }, + { + "x": 0.08489990234375, + "y": -0.037109375 + }, + { + "x": -0.4859619140625, + "y": -0.1094970703125 + }, + { + "x": 0.371337890625, + "y": -0.11199951171875 + }, + { + "x": 0.2418212890625, + "y": 0.345947265625 + }, + { + "x": 2.2510986328125, + "y": 0.73052978515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.03465225134205022, + "y": 0.23661377267893635, + "z": 1.1524274279809619 + }, + "rotation": { + "quaternion": { + "W": 0.9566940531313779, + "X": 0.23030159174004647, + "Y": 0.17356138307907937, + "Z": -0.03967507843387835 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img70.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img70.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 626.4224243164062, + "y": 643.0183715820312 + }, + { + "x": 652.5338134765625, + "y": 645.6941528320312 + }, + { + "x": 677.7057495117188, + "y": 647.8856811523438 + }, + { + "x": 701.0930786132812, + "y": 650.5211791992188 + }, + { + "x": 726.19873046875, + "y": 654.568359375 + }, + { + "x": 751.4608154296875, + "y": 655.31787109375 + }, + { + "x": 778.4137573242188, + "y": 659.097412109375 + }, + { + "x": 631.0057983398438, + "y": 663.521484375 + }, + { + "x": 656.6148681640625, + "y": 665.6295166015625 + }, + { + "x": 679.2974243164062, + "y": 668.7339477539062 + }, + { + "x": 703.1617431640625, + "y": 671.6547241210938 + }, + { + "x": 728.5916137695312, + "y": 674.3372192382812 + }, + { + "x": 754.1583251953125, + "y": 677.4064331054688 + }, + { + "x": 779.8123168945312, + "y": 679.98046875 + }, + { + "x": 634.337158203125, + "y": 682.4119873046875 + }, + { + "x": 658.046142578125, + "y": 686.5037841796875 + }, + { + "x": 682.9661865234375, + "y": 688.2584838867188 + }, + { + "x": 706.8353881835938, + "y": 692.7278442382812 + }, + { + "x": 729.1490478515625, + "y": 696.2722778320312 + }, + { + "x": 754.9039916992188, + "y": 696.6914672851562 + }, + { + "x": 780.4612426757812, + "y": 699.43798828125 + }, + { + "x": 636.1837158203125, + "y": 701.8275756835938 + }, + { + "x": 660.7748413085938, + "y": 704.6784057617188 + }, + { + "x": 683.3368530273438, + "y": 707.80810546875 + }, + { + "x": 708.7152099609375, + "y": 710.6682739257812 + }, + { + "x": 730.937744140625, + "y": 713.37255859375 + }, + { + "x": 758.0885009765625, + "y": 716.1575927734375 + }, + { + "x": 780.3106689453125, + "y": 719.0899658203125 + }, + { + "x": 639.7377319335938, + "y": 720.8450927734375 + }, + { + "x": 661.610107421875, + "y": 722.9116821289062 + }, + { + "x": 686.2575073242188, + "y": 726.7218627929688 + }, + { + "x": 708.8316040039062, + "y": 729.3757934570312 + }, + { + "x": 733.5773315429688, + "y": 732.7560424804688 + }, + { + "x": 757.772705078125, + "y": 735.3583984375 + }, + { + "x": 782.7177124023438, + "y": 737.5302734375 + }, + { + "x": 641.2714233398438, + "y": 737.9102172851562 + }, + { + "x": 664.7022705078125, + "y": 742.5048217773438 + }, + { + "x": 688.3207397460938, + "y": 744.8873291015625 + }, + { + "x": 711.0821533203125, + "y": 748.0653076171875 + }, + { + "x": 735.2926025390625, + "y": 751.2447509765625 + }, + { + "x": 758.4961547851562, + "y": 754.4052124023438 + }, + { + "x": 783.1798095703125, + "y": 757.1983642578125 + }, + { + "x": 644.591796875, + "y": 755.2699584960938 + }, + { + "x": 667.3074951171875, + "y": 759.5299682617188 + }, + { + "x": 689.586181640625, + "y": 762.6104736328125 + }, + { + "x": 713.4393920898438, + "y": 765.8430786132812 + }, + { + "x": 736.333251953125, + "y": 768.9337158203125 + }, + { + "x": 760.5520629882812, + "y": 771.798583984375 + }, + { + "x": 782.3795776367188, + "y": 774.8662109375 + } + ], + "reprojectionErrors": [ + { + "x": 2.62713623046875, + "y": 0.865478515625 + }, + { + "x": 0.40008544921875, + "y": 0.67437744140625 + }, + { + "x": -0.53912353515625, + "y": 1.0030517578125 + }, + { + "x": 0.6622314453125, + "y": 0.924072265625 + }, + { + "x": 0.5091552734375, + "y": -0.5294189453125 + }, + { + "x": 0.571533203125, + "y": 1.35272216796875 + }, + { + "x": -0.67669677734375, + "y": 0.24365234375 + }, + { + "x": 0.7291259765625, + "y": -0.1392822265625 + }, + { + "x": -1.21282958984375, + "y": 0.3524169921875 + }, + { + "x": 0.113525390625, + "y": -0.11541748046875 + }, + { + "x": 0.6072998046875, + "y": -0.36199951171875 + }, + { + "x": -0.10772705078125, + "y": -0.331787109375 + }, + { + "x": -0.594970703125, + "y": -0.64898681640625 + }, + { + "x": -0.7967529296875, + "y": -0.43084716796875 + }, + { + "x": 0.008544921875, + "y": 0.14349365234375 + }, + { + "x": -0.24530029296875, + "y": -1.23785400390625 + }, + { + "x": -1.37481689453125, + "y": -0.24407958984375 + }, + { + "x": -1.11090087890625, + "y": -1.926025390625 + }, + { + "x": 1.0584716796875, + "y": -2.6434326171875 + }, + { + "x": 0.14422607421875, + "y": -0.1949462890625 + }, + { + "x": -0.20697021484375, + "y": -0.03240966796875 + }, + { + "x": 0.7008056640625, + "y": -0.41082763671875 + }, + { + "x": -0.64215087890625, + "y": -0.4447021484375 + }, + { + "x": 0.37322998046875, + "y": -0.71820068359375 + }, + { + "x": -1.09149169921875, + "y": -0.6822509765625 + }, + { + "x": 0.9429931640625, + "y": -0.449462890625 + }, + { + "x": -1.5999755859375, + "y": -0.2557373046875 + }, + { + "x": 1.14404296875, + "y": -0.16668701171875 + }, + { + "x": -0.3837890625, + "y": -0.86688232421875 + }, + { + "x": 0.7899169921875, + "y": -0.013916015625 + }, + { + "x": -0.4881591796875, + "y": -0.8642578125 + }, + { + "x": 0.63714599609375, + "y": -0.51727294921875 + }, + { + "x": -0.07208251953125, + "y": -0.85467529296875 + }, + { + "x": 0.11322021484375, + "y": -0.371337890625 + }, + { + "x": -0.09954833984375, + "y": 0.58624267578125 + }, + { + "x": 0.48480224609375, + "y": 0.34136962890625 + }, + { + "x": -0.0972900390625, + "y": -1.2347412109375 + }, + { + "x": -0.549560546875, + "y": -0.55755615234375 + }, + { + "x": 0.17938232421875, + "y": -0.63372802734375 + }, + { + "x": -0.2098388671875, + "y": -0.66845703125 + }, + { + "x": 0.7457275390625, + "y": -0.64031982421875 + }, + { + "x": 0.56622314453125, + "y": -0.2000732421875 + }, + { + "x": -0.49798583984375, + "y": 0.9781494140625 + }, + { + "x": -0.55780029296875, + "y": -0.16796875 + }, + { + "x": 0.13134765625, + "y": -0.09246826171875 + }, + { + "x": -0.4356689453125, + "y": -0.1260986328125 + }, + { + "x": 0.2816162109375, + "y": 0.02618408203125 + }, + { + "x": 0.0057373046875, + "y": 0.44903564453125 + }, + { + "x": 2.45989990234375, + "y": 0.71484375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.03292771794515705, + "y": 0.24535372399616087, + "z": 1.134273764421711 + }, + "rotation": { + "quaternion": { + "W": 0.959282359149882, + "X": 0.2305132603661808, + "Y": 0.16155032854922557, + "Z": -0.023291276582173313 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img71.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img71.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 750.0061645507812, + "y": 665.2391357421875 + }, + { + "x": 775.4826049804688, + "y": 665.975341796875 + }, + { + "x": 802.000244140625, + "y": 667.3567504882812 + }, + { + "x": 825.8772583007812, + "y": 667.9789428710938 + }, + { + "x": 851.9906005859375, + "y": 670.3123168945312 + }, + { + "x": 877.2332153320312, + "y": 669.2999877929688 + }, + { + "x": 904.3104858398438, + "y": 670.8668212890625 + }, + { + "x": 753.8175048828125, + "y": 685.104248046875 + }, + { + "x": 779.84765625, + "y": 685.8585205078125 + }, + { + "x": 803.7958984375, + "y": 687.625244140625 + }, + { + "x": 828.21142578125, + "y": 688.5065307617188 + }, + { + "x": 853.56591796875, + "y": 689.2836303710938 + }, + { + "x": 879.2626342773438, + "y": 690.5560302734375 + }, + { + "x": 904.9109497070312, + "y": 690.9482421875 + }, + { + "x": 756.8377075195312, + "y": 703.544189453125 + }, + { + "x": 781.43603515625, + "y": 705.8731079101562 + }, + { + "x": 806.7066040039062, + "y": 705.8967895507812 + }, + { + "x": 831.7127685546875, + "y": 708.9827270507812 + }, + { + "x": 853.9276123046875, + "y": 710.3676147460938 + }, + { + "x": 879.7907104492188, + "y": 709.088623046875 + }, + { + "x": 905.0517578125, + "y": 709.68359375 + }, + { + "x": 758.4004516601562, + "y": 722.1693115234375 + }, + { + "x": 783.52294921875, + "y": 723.4241943359375 + }, + { + "x": 806.5613403320312, + "y": 724.650390625 + }, + { + "x": 832.1940307617188, + "y": 726.2392578125 + }, + { + "x": 855.1761474609375, + "y": 726.6239013671875 + }, + { + "x": 881.8909912109375, + "y": 727.2572021484375 + }, + { + "x": 904.3015747070312, + "y": 728.6112670898438 + }, + { + "x": 761.2546997070312, + "y": 740.2755737304688 + }, + { + "x": 783.3834228515625, + "y": 740.3438720703125 + }, + { + "x": 809.21337890625, + "y": 742.8452758789062 + }, + { + "x": 831.8995361328125, + "y": 743.2978515625 + }, + { + "x": 857.00634765625, + "y": 745.3546752929688 + }, + { + "x": 881.1143798828125, + "y": 745.595703125 + }, + { + "x": 906.266845703125, + "y": 746.1900634765625 + }, + { + "x": 762.703369140625, + "y": 756.463623046875 + }, + { + "x": 786.7481689453125, + "y": 759.20556640625 + }, + { + "x": 811.1514892578125, + "y": 760.41259765625 + }, + { + "x": 833.7073974609375, + "y": 761.3182373046875 + }, + { + "x": 857.8903198242188, + "y": 762.6286010742188 + }, + { + "x": 881.9074096679688, + "y": 763.6240234375 + }, + { + "x": 906.2599487304688, + "y": 764.760498046875 + }, + { + "x": 765.6554565429688, + "y": 773.0574340820312 + }, + { + "x": 789.0942993164062, + "y": 775.5421752929688 + }, + { + "x": 811.6022338867188, + "y": 776.841552734375 + }, + { + "x": 835.47314453125, + "y": 778.5278930664062 + }, + { + "x": 858.544921875, + "y": 779.5631713867188 + }, + { + "x": 882.72607421875, + "y": 780.4444580078125 + }, + { + "x": 905.162353515625, + "y": 781.6799926757812 + } + ], + "reprojectionErrors": [ + { + "x": 2.67718505859375, + "y": 1.375244140625 + }, + { + "x": 1.6031494140625, + "y": 1.42681884765625 + }, + { + "x": -0.2227783203125, + "y": 0.84185791015625 + }, + { + "x": 0.886474609375, + "y": 1.02496337890625 + }, + { + "x": 0.05902099609375, + "y": -0.494140625 + }, + { + "x": 0.40740966796875, + "y": 1.34161376953125 + }, + { + "x": -0.76824951171875, + "y": 0.60748291015625 + }, + { + "x": 1.0262451171875, + "y": 0.15234375 + }, + { + "x": -0.82720947265625, + "y": 0.2869873046875 + }, + { + "x": -0.31494140625, + "y": -0.58111572265625 + }, + { + "x": 0.0189208984375, + "y": -0.5538330078125 + }, + { + "x": -0.29229736328125, + "y": -0.41229248046875 + }, + { + "x": -0.6466064453125, + "y": -0.7557373046875 + }, + { + "x": -0.6480712890625, + "y": -0.20855712890625 + }, + { + "x": 0.116943359375, + "y": 0.05218505859375 + }, + { + "x": -0.52484130859375, + "y": -1.2904052734375 + }, + { + "x": -1.56036376953125, + "y": -0.3170166015625 + }, + { + "x": -2.04803466796875, + "y": -2.39483642578125 + }, + { + "x": 0.5439453125, + "y": -2.760498046875 + }, + { + "x": -0.218994140625, + "y": -0.450927734375 + }, + { + "x": -0.08123779296875, + "y": -0.0037841796875 + }, + { + "x": 0.6173095703125, + "y": -0.523681640625 + }, + { + "x": -0.76336669921875, + "y": -0.6982421875 + }, + { + "x": 0.21343994140625, + "y": -0.83233642578125 + }, + { + "x": -1.12591552734375, + "y": -1.31719970703125 + }, + { + "x": 0.46826171875, + "y": -0.585693359375 + }, + { + "x": -1.3824462890625, + "y": -0.0904541015625 + }, + { + "x": 1.36395263671875, + "y": -0.303466796875 + }, + { + "x": -0.2198486328125, + "y": -0.85968017578125 + }, + { + "x": 1.18365478515625, + "y": 0.2430419921875 + }, + { + "x": -0.84552001953125, + "y": -1.07464599609375 + }, + { + "x": 0.5421142578125, + "y": -0.3306884765625 + }, + { + "x": -0.2132568359375, + "y": -1.1778564453125 + }, + { + "x": 0.312744140625, + "y": -0.19586181640625 + }, + { + "x": 0.0816650390625, + "y": 0.4462890625 + }, + { + "x": 0.30419921875, + "y": 0.454345703125 + }, + { + "x": -0.41290283203125, + "y": -1.0289306640625 + }, + { + "x": -1.2247314453125, + "y": -0.96380615234375 + }, + { + "x": 0.07891845703125, + "y": -0.58349609375 + }, + { + "x": 0.02825927734375, + "y": -0.593994140625 + }, + { + "x": 0.4207763671875, + "y": -0.2752685546875 + }, + { + "x": 0.75994873046875, + "y": -0.08319091796875 + }, + { + "x": -0.71807861328125, + "y": 1.10491943359375 + }, + { + "x": -1.02880859375, + "y": -0.0364990234375 + }, + { + "x": -0.1495361328125, + "y": 0.02178955078125 + }, + { + "x": -0.369873046875, + "y": -0.2923583984375 + }, + { + "x": 0.47674560546875, + "y": 0.0594482421875 + }, + { + "x": 0.486328125, + "y": 0.58026123046875 + }, + { + "x": 2.51776123046875, + "y": 0.76214599609375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.1632207891870607, + "y": 0.274792787365921, + "z": 1.1605106872304345 + }, + "rotation": { + "quaternion": { + "W": 0.9625803637980588, + "X": 0.23443314842547677, + "Y": 0.127466301206601, + "Z": -0.04724917148927802 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img72.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img72.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 999.8012084960938, + "y": 639.852294921875 + }, + { + "x": 1022.9512939453125, + "y": 641.4036254882812 + }, + { + "x": 1047.543701171875, + "y": 643.5088500976562 + }, + { + "x": 1069.607177734375, + "y": 645.5555419921875 + }, + { + "x": 1092.847412109375, + "y": 647.1756591796875 + }, + { + "x": 1114.6959228515625, + "y": 645.8358764648438 + }, + { + "x": 1138.5487060546875, + "y": 648.8181762695312 + }, + { + "x": 997.7067260742188, + "y": 658.807861328125 + }, + { + "x": 1021.3804931640625, + "y": 660.528076171875 + }, + { + "x": 1043.896484375, + "y": 662.6654052734375 + }, + { + "x": 1067.399658203125, + "y": 664.0936279296875 + }, + { + "x": 1089.381591796875, + "y": 665.1716918945312 + }, + { + "x": 1111.9779052734375, + "y": 666.3648071289062 + }, + { + "x": 1133.99658203125, + "y": 667.8057250976562 + }, + { + "x": 995.2142944335938, + "y": 677.6578369140625 + }, + { + "x": 1018.5057983398438, + "y": 679.5676879882812 + }, + { + "x": 1041.5008544921875, + "y": 680.0924072265625 + }, + { + "x": 1064.7789306640625, + "y": 684.469970703125 + }, + { + "x": 1085.3236083984375, + "y": 684.2515869140625 + }, + { + "x": 1107.75537109375, + "y": 684.3082275390625 + }, + { + "x": 1130.3642578125, + "y": 685.6292114257812 + }, + { + "x": 991.9003295898438, + "y": 695.0986328125 + }, + { + "x": 1015.6298217773438, + "y": 696.9671020507812 + }, + { + "x": 1037.0513916015625, + "y": 698.7327270507812 + }, + { + "x": 1060.5848388671875, + "y": 699.86279296875 + }, + { + "x": 1081.15087890625, + "y": 701.4796142578125 + }, + { + "x": 1104.84326171875, + "y": 702.13134765625 + }, + { + "x": 1124.4036865234375, + "y": 703.1813354492188 + }, + { + "x": 989.99609375, + "y": 713.0119018554688 + }, + { + "x": 1010.73876953125, + "y": 713.6141357421875 + }, + { + "x": 1034.5428466796875, + "y": 716.3848876953125 + }, + { + "x": 1055.54541015625, + "y": 717.2201538085938 + }, + { + "x": 1078.7001953125, + "y": 718.7609252929688 + }, + { + "x": 1099.8297119140625, + "y": 719.50390625 + }, + { + "x": 1122.29736328125, + "y": 720.3603515625 + }, + { + "x": 986.5723876953125, + "y": 728.4990844726562 + }, + { + "x": 1009.2819213867188, + "y": 731.555908203125 + }, + { + "x": 1032.6846923828125, + "y": 733.7802734375 + }, + { + "x": 1053.2593994140625, + "y": 734.2957153320312 + }, + { + "x": 1074.7532958984375, + "y": 735.9371337890625 + }, + { + "x": 1096.4715576171875, + "y": 736.8123168945312 + }, + { + "x": 1117.3492431640625, + "y": 737.885986328125 + }, + { + "x": 984.8660888671875, + "y": 745.7234497070312 + }, + { + "x": 1006.8038940429688, + "y": 748.6307373046875 + }, + { + "x": 1028.36767578125, + "y": 749.4974975585938 + }, + { + "x": 1049.6190185546875, + "y": 751.321044921875 + }, + { + "x": 1071.3585205078125, + "y": 752.1068725585938 + }, + { + "x": 1092.166259765625, + "y": 753.11083984375 + }, + { + "x": 1112.4898681640625, + "y": 754.40869140625 + } + ], + "reprojectionErrors": [ + { + "x": 2.09381103515625, + "y": 1.57281494140625 + }, + { + "x": 1.4713134765625, + "y": 1.2987060546875 + }, + { + "x": -0.5074462890625, + "y": 0.47503662109375 + }, + { + "x": 0.12890625, + "y": -0.28570556640625 + }, + { + "x": -0.3245849609375, + "y": -0.615478515625 + }, + { + "x": 0.7008056640625, + "y": 2.01904296875 + }, + { + "x": -0.190185546875, + "y": 0.3359375 + }, + { + "x": 1.13629150390625, + "y": 0.7174072265625 + }, + { + "x": -0.19024658203125, + "y": 0.298828125 + }, + { + "x": -0.2744140625, + "y": -0.53253173828125 + }, + { + "x": -1.2607421875, + "y": -0.65032958984375 + }, + { + "x": -0.6405029296875, + "y": -0.41357421875 + }, + { + "x": -0.5487060546875, + "y": -0.287353515625 + }, + { + "x": 0.2071533203125, + "y": -0.4044189453125 + }, + { + "x": 0.64013671875, + "y": -0.2657470703125 + }, + { + "x": -0.4803466796875, + "y": -0.850341796875 + }, + { + "x": -1.2210693359375, + "y": -0.04541015625 + }, + { + "x": -2.1611328125, + "y": -3.08880615234375 + }, + { + "x": -0.28369140625, + "y": -1.53179931640625 + }, + { + "x": -0.208740234375, + "y": -0.24530029296875 + }, + { + "x": -0.2259521484375, + "y": -0.21856689453125 + }, + { + "x": 1.02685546875, + "y": -0.0645751953125 + }, + { + "x": -0.70361328125, + "y": -0.5848388671875 + }, + { + "x": -0.044189453125, + "y": -0.997802734375 + }, + { + "x": -1.4141845703125, + "y": -0.77069091796875 + }, + { + "x": 0.2659912109375, + "y": -1.02581787109375 + }, + { + "x": -1.096923828125, + "y": -0.31134033203125 + }, + { + "x": 1.755859375, + "y": 0.009521484375 + }, + { + "x": 0.0633544921875, + "y": -0.5526123046875 + }, + { + "x": 1.151611328125, + "y": 0.21563720703125 + }, + { + "x": -0.74072265625, + "y": -1.18011474609375 + }, + { + "x": 0.24951171875, + "y": -0.6358642578125 + }, + { + "x": -0.830810546875, + "y": -0.79254150390625 + }, + { + "x": 0.1961669921875, + "y": -0.1468505859375 + }, + { + "x": -0.03271484375, + "y": 0.3900146484375 + }, + { + "x": 0.677001953125, + "y": 1.1766357421875 + }, + { + "x": -0.36578369140625, + "y": -0.48809814453125 + }, + { + "x": -2.022216796875, + "y": -1.3157958984375 + }, + { + "x": -0.770751953125, + "y": -0.429931640625 + }, + { + "x": -0.3580322265625, + "y": -0.66552734375 + }, + { + "x": -0.0888671875, + "y": -0.13018798828125 + }, + { + "x": 1.1019287109375, + "y": 0.21124267578125 + }, + { + "x": -0.37078857421875, + "y": 0.96734619140625 + }, + { + "x": -0.8023681640625, + "y": -0.52679443359375 + }, + { + "x": -0.781494140625, + "y": 0.02423095703125 + }, + { + "x": -0.369384765625, + "y": -0.37689208984375 + }, + { + "x": -0.3662109375, + "y": 0.2642822265625 + }, + { + "x": 0.648193359375, + "y": 0.6920166015625 + }, + { + "x": 2.226806640625, + "y": 0.83050537109375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.4712149531715376, + "y": 0.2759173077520518, + "z": 1.2887664119440436 + }, + "rotation": { + "quaternion": { + "W": 0.9790712090856754, + "X": 0.19679899757122604, + "Y": 0.05109429522090621, + "Z": 0.008893542058889268 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img73.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img73.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 167.9053497314453, + "y": 575.2781982421875 + }, + { + "x": 163.1426239013672, + "y": 556.7822875976562 + }, + { + "x": 160.53871154785156, + "y": 536.7340698242188 + }, + { + "x": 155.37384033203125, + "y": 516.7662963867188 + }, + { + "x": 152.56732177734375, + "y": 496.0351867675781 + }, + { + "x": 149.31494140625, + "y": 475.5868225097656 + }, + { + "x": 144.17056274414062, + "y": 454.8656921386719 + }, + { + "x": 186.4449920654297, + "y": 576.2044067382812 + }, + { + "x": 182.2010498046875, + "y": 557.4757080078125 + }, + { + "x": 177.3466033935547, + "y": 535.339111328125 + }, + { + "x": 177.0256805419922, + "y": 515.33447265625 + }, + { + "x": 173.03753662109375, + "y": 495.62176513671875 + }, + { + "x": 169.62875366210938, + "y": 474.0063171386719 + }, + { + "x": 165.867919921875, + "y": 453.2257385253906 + }, + { + "x": 207.10635375976562, + "y": 575.1620483398438 + }, + { + "x": 203.71754455566406, + "y": 555.7846069335938 + }, + { + "x": 199.67547607421875, + "y": 535.1979370117188 + }, + { + "x": 195.2298126220703, + "y": 514.6076049804688 + }, + { + "x": 193.72987365722656, + "y": 493.2659912109375 + }, + { + "x": 189.3280792236328, + "y": 473.11907958984375 + }, + { + "x": 185.85946655273438, + "y": 451.9947814941406 + }, + { + "x": 227.0497283935547, + "y": 575.0299072265625 + }, + { + "x": 224.00790405273438, + "y": 553.2755126953125 + }, + { + "x": 219.5712890625, + "y": 534.3960571289062 + }, + { + "x": 217.4056854248047, + "y": 513.59765625 + }, + { + "x": 214.34805297851562, + "y": 494.3121032714844 + }, + { + "x": 209.22982788085938, + "y": 472.2987365722656 + }, + { + "x": 206.25912475585938, + "y": 450.2111511230469 + }, + { + "x": 247.18865966796875, + "y": 573.5836791992188 + }, + { + "x": 243.55213928222656, + "y": 554.0459594726562 + }, + { + "x": 240.2775115966797, + "y": 533.5479736328125 + }, + { + "x": 236.31602478027344, + "y": 512.5631103515625 + }, + { + "x": 234.2169189453125, + "y": 492.1537780761719 + }, + { + "x": 231.32058715820312, + "y": 470.8196105957031 + }, + { + "x": 227.6572265625, + "y": 449.95867919921875 + }, + { + "x": 267.4955749511719, + "y": 573.0245971679688 + }, + { + "x": 264.3817138671875, + "y": 552.9810180664062 + }, + { + "x": 261.5128173828125, + "y": 532.5594482421875 + }, + { + "x": 259.626220703125, + "y": 510.7306823730469 + }, + { + "x": 255.32272338867188, + "y": 490.7927551269531 + }, + { + "x": 252.30368041992188, + "y": 469.6086730957031 + }, + { + "x": 249.16629028320312, + "y": 447.466796875 + }, + { + "x": 287.3321533203125, + "y": 572.8573608398438 + }, + { + "x": 285.5982360839844, + "y": 552.1490478515625 + }, + { + "x": 283.5902404785156, + "y": 529.3353881835938 + }, + { + "x": 278.43878173828125, + "y": 510.4468078613281 + }, + { + "x": 277.2259216308594, + "y": 488.8041076660156 + }, + { + "x": 274.0394592285156, + "y": 468.2665710449219 + }, + { + "x": 271.1056823730469, + "y": 446.35601806640625 + } + ], + "reprojectionErrors": [ + { + "x": -1.6257171630859375, + "y": 1.98974609375 + }, + { + "x": -0.337127685546875, + "y": 0.40362548828125 + }, + { + "x": -1.235107421875, + "y": 0.2066650390625 + }, + { + "x": 0.3998260498046875, + "y": -0.23577880859375 + }, + { + "x": -0.352020263671875, + "y": -0.081878662109375 + }, + { + "x": -0.686737060546875, + "y": -0.3797607421875 + }, + { + "x": 0.8414459228515625, + "y": -0.575897216796875 + }, + { + "x": 0.065460205078125, + "y": 0.1171875 + }, + { + "x": 0.9101409912109375, + "y": -1.28021240234375 + }, + { + "x": 2.3381195068359375, + "y": 0.5665283203125 + }, + { + "x": -0.7949371337890625, + "y": 0.1156005859375 + }, + { + "x": -0.28863525390625, + "y": -0.795013427734375 + }, + { + "x": -0.389892578125, + "y": 0.02740478515625 + }, + { + "x": -0.167633056640625, + "y": -0.156829833984375 + }, + { + "x": -0.3160552978515625, + "y": 0.2359619140625 + }, + { + "x": -0.2513275146484375, + "y": -0.55804443359375 + }, + { + "x": 0.4399871826171875, + "y": -0.30731201171875 + }, + { + "x": 1.507904052734375, + "y": -0.2193603515625 + }, + { + "x": -0.397186279296875, + "y": 0.451416015625 + }, + { + "x": 0.571929931640625, + "y": -0.243011474609375 + }, + { + "x": 0.57989501953125, + "y": -0.132568359375 + }, + { + "x": 0.0736083984375, + "y": -0.53277587890625 + }, + { + "x": -0.1331634521484375, + "y": 1.00341796875 + }, + { + "x": 1.0287322998046875, + "y": -0.50054931640625 + }, + { + "x": -0.1068267822265625, + "y": -0.25274658203125 + }, + { + "x": -0.3770904541015625, + "y": -1.68701171875 + }, + { + "x": 1.3861541748046875, + "y": -0.564727783203125 + }, + { + "x": 0.9744720458984375, + "y": 0.458465576171875 + }, + { + "x": 0.325103759765625, + "y": 0.03533935546875 + }, + { + "x": 0.78887939453125, + "y": -0.69329833984375 + }, + { + "x": 0.86517333984375, + "y": -0.62762451171875 + }, + { + "x": 1.602447509765625, + "y": -0.2430419921875 + }, + { + "x": 0.4511566162109375, + "y": -0.60400390625 + }, + { + "x": 0.0705718994140625, + "y": -0.212188720703125 + }, + { + "x": 0.43017578125, + "y": -0.467742919921875 + }, + { + "x": 0.470306396484375, + "y": -0.260986328125 + }, + { + "x": 0.487640380859375, + "y": -0.5333251953125 + }, + { + "x": 0.2349853515625, + "y": -0.594482421875 + }, + { + "x": -1.025299072265625, + "y": 0.582855224609375 + }, + { + "x": 0.105712890625, + "y": -0.30145263671875 + }, + { + "x": -0.073699951171875, + "y": -0.112518310546875 + }, + { + "x": -0.1610107421875, + "y": 0.8592529296875 + }, + { + "x": 1.151824951171875, + "y": -0.926513671875 + }, + { + "x": -0.134124755859375, + "y": -0.58514404296875 + }, + { + "x": -1.17047119140625, + "y": 1.69403076171875 + }, + { + "x": 0.911895751953125, + "y": -0.1214599609375 + }, + { + "x": -0.96942138671875, + "y": 0.6455078125 + }, + { + "x": -0.902496337890625, + "y": 0.133575439453125 + }, + { + "x": -1.113922119140625, + "y": 0.818817138671875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.5159290195228868, + "y": 0.2074267102334137, + "z": 1.327127102223734 + }, + "rotation": { + "quaternion": { + "W": 0.6765807879145894, + "X": 0.03833172994295281, + "Y": 0.11399769348390865, + "Z": -0.726480310665611 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img74.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img74.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 292.75189208984375, + "y": 529.0761108398438 + }, + { + "x": 297.4234313964844, + "y": 549.5873413085938 + }, + { + "x": 301.7342529296875, + "y": 569.028564453125 + }, + { + "x": 305.1812438964844, + "y": 589.0320434570312 + }, + { + "x": 310.55877685546875, + "y": 606.6268920898438 + }, + { + "x": 314.2325439453125, + "y": 628.1309204101562 + }, + { + "x": 317.62115478515625, + "y": 646.5385131835938 + }, + { + "x": 271.2225646972656, + "y": 531.391845703125 + }, + { + "x": 276.12835693359375, + "y": 551.9586791992188 + }, + { + "x": 280.4454040527344, + "y": 572.5828857421875 + }, + { + "x": 285.8264465332031, + "y": 590.4281005859375 + }, + { + "x": 288.9288635253906, + "y": 611.2192993164062 + }, + { + "x": 293.3037414550781, + "y": 630.388671875 + }, + { + "x": 298.1382141113281, + "y": 649.079833984375 + }, + { + "x": 249.800537109375, + "y": 535.492919921875 + }, + { + "x": 254.75030517578125, + "y": 555.0460815429688 + }, + { + "x": 259.0938415527344, + "y": 575.3173217773438 + }, + { + "x": 263.22601318359375, + "y": 594.4528198242188 + }, + { + "x": 268.2328186035156, + "y": 613.6165771484375 + }, + { + "x": 272.9417724609375, + "y": 632.9541015625 + }, + { + "x": 277.2184753417969, + "y": 651.203857421875 + }, + { + "x": 228.43338012695312, + "y": 537.4338989257812 + }, + { + "x": 233.40992736816406, + "y": 558.1590576171875 + }, + { + "x": 239.39105224609375, + "y": 578.7086791992188 + }, + { + "x": 244.06967163085938, + "y": 596.7777709960938 + }, + { + "x": 247.47471618652344, + "y": 616.3743896484375 + }, + { + "x": 252.78143310546875, + "y": 634.1342163085938 + }, + { + "x": 257.2562561035156, + "y": 654.1510009765625 + }, + { + "x": 208.5646514892578, + "y": 539.864013671875 + }, + { + "x": 213.14610290527344, + "y": 560.6968994140625 + }, + { + "x": 219.03494262695312, + "y": 579.3380126953125 + }, + { + "x": 222.33172607421875, + "y": 599.8043823242188 + }, + { + "x": 227.58489990234375, + "y": 618.77490234375 + }, + { + "x": 232.92727661132812, + "y": 637.953125 + }, + { + "x": 237.54022216796875, + "y": 655.6708374023438 + }, + { + "x": 188.19940185546875, + "y": 543.3650512695312 + }, + { + "x": 193.31472778320312, + "y": 562.5296630859375 + }, + { + "x": 198.46083068847656, + "y": 583.5108032226562 + }, + { + "x": 203.5937042236328, + "y": 601.4752197265625 + }, + { + "x": 206.5110626220703, + "y": 621.242919921875 + }, + { + "x": 212.04344177246094, + "y": 641.2898559570312 + }, + { + "x": 217.5289306640625, + "y": 658.5848999023438 + }, + { + "x": 166.36123657226562, + "y": 546.3575439453125 + }, + { + "x": 173.14328002929688, + "y": 565.9070434570312 + }, + { + "x": 177.62330627441406, + "y": 585.5717163085938 + }, + { + "x": 182.48109436035156, + "y": 604.8302612304688 + }, + { + "x": 188.5457000732422, + "y": 623.2652587890625 + }, + { + "x": 192.45223999023438, + "y": 642.2350463867188 + }, + { + "x": 199.33975219726562, + "y": 658.3662109375 + } + ], + "reprojectionErrors": [ + { + "x": -0.901702880859375, + "y": 0.7740478515625 + }, + { + "x": -1.0361328125, + "y": 0.15069580078125 + }, + { + "x": -0.8533935546875, + "y": 0.40509033203125 + }, + { + "x": 0.1502685546875, + "y": -0.09234619140625 + }, + { + "x": -0.81890869140625, + "y": 1.6319580078125 + }, + { + "x": -0.126068115234375, + "y": -0.73712158203125 + }, + { + "x": 0.810791015625, + "y": -0.1915283203125 + }, + { + "x": -0.175262451171875, + "y": 1.07635498046875 + }, + { + "x": -0.449249267578125, + "y": 0.35821533203125 + }, + { + "x": -0.17889404296875, + "y": -0.6090087890625 + }, + { + "x": -1.016265869140625, + "y": 1.01385498046875 + }, + { + "x": 0.3818359375, + "y": -0.49554443359375 + }, + { + "x": 0.4649658203125, + "y": -0.5667724609375 + }, + { + "x": 0.046539306640625, + "y": -0.34088134765625 + }, + { + "x": 0.475982666015625, + "y": -0.38665771484375 + }, + { + "x": 0.2525634765625, + "y": -0.12908935546875 + }, + { + "x": 0.590179443359375, + "y": -0.78070068359375 + }, + { + "x": 1.094573974609375, + "y": -0.48486328125 + }, + { + "x": 0.68035888671875, + "y": -0.40301513671875 + }, + { + "x": 0.52069091796875, + "y": -0.67803955078125 + }, + { + "x": 0.750518798828125, + "y": -0.0457763671875 + }, + { + "x": 1.100372314453125, + "y": 0.330810546875 + }, + { + "x": 0.944671630859375, + "y": -0.620361328125 + }, + { + "x": -0.26165771484375, + "y": -1.58648681640625 + }, + { + "x": -0.2108917236328125, + "y": -0.25982666015625 + }, + { + "x": 1.068695068359375, + "y": -0.64581298828125 + }, + { + "x": 0.4024505615234375, + "y": 0.6224365234375 + }, + { + "x": 0.52459716796875, + "y": -0.54632568359375 + }, + { + "x": 0.2503204345703125, + "y": 0.58001708984375 + }, + { + "x": 0.5841827392578125, + "y": -0.514404296875 + }, + { + "x": -0.436248779296875, + "y": 0.39306640625 + }, + { + "x": 1.0891571044921875, + "y": -0.71197509765625 + }, + { + "x": 0.612579345703125, + "y": -0.5057373046875 + }, + { + "x": 0.001861572265625, + "y": -0.689208984375 + }, + { + "x": 0.07623291015625, + "y": 0.4083251953125 + }, + { + "x": -0.083221435546875, + "y": -0.220458984375 + }, + { + "x": -0.1887664794921875, + "y": 0.31915283203125 + }, + { + "x": -0.372833251953125, + "y": -1.14715576171875 + }, + { + "x": -0.590728759765625, + "y": 0.216552734375 + }, + { + "x": 1.3604888916015625, + "y": -0.40716552734375 + }, + { + "x": 0.6509246826171875, + "y": -1.4915771484375 + }, + { + "x": -0.0568695068359375, + "y": -0.00311279296875 + }, + { + "x": 1.072174072265625, + "y": -0.49066162109375 + }, + { + "x": -0.6055908203125, + "y": -0.3690185546875 + }, + { + "x": -0.0299072265625, + "y": -0.55145263671875 + }, + { + "x": 0.1201019287109375, + "y": -0.513916015625 + }, + { + "x": -0.983917236328125, + "y": 0.16351318359375 + }, + { + "x": 0.0235595703125, + "y": 0.1251220703125 + }, + { + "x": -1.995849609375, + "y": 2.746826171875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.36083622384289876, + "y": 0.14882085013047042, + "z": 1.3102644435417627 + }, + "rotation": { + "quaternion": { + "W": 0.7485754681557945, + "X": 0.10578793571288915, + "Y": -0.07608387406612686, + "Z": 0.6501191623387427 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img75.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img75.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 124.9587631225586, + "y": 648.7032470703125 + }, + { + "x": 142.99082946777344, + "y": 652.3838500976562 + }, + { + "x": 162.4751739501953, + "y": 653.758544921875 + }, + { + "x": 179.4983673095703, + "y": 656.7898559570312 + }, + { + "x": 199.03729248046875, + "y": 660.541259765625 + }, + { + "x": 218.296142578125, + "y": 661.9722900390625 + }, + { + "x": 239.23922729492188, + "y": 665.212158203125 + }, + { + "x": 127.30268859863281, + "y": 669.3828735351562 + }, + { + "x": 146.51937866210938, + "y": 671.5606079101562 + }, + { + "x": 163.29197692871094, + "y": 674.9153442382812 + }, + { + "x": 182.12808227539062, + "y": 677.7092895507812 + }, + { + "x": 201.0492401123047, + "y": 680.4468383789062 + }, + { + "x": 222.01809692382812, + "y": 682.7543334960938 + }, + { + "x": 240.72352600097656, + "y": 686.1401977539062 + }, + { + "x": 129.58763122558594, + "y": 689.1917724609375 + }, + { + "x": 147.57395935058594, + "y": 692.35009765625 + }, + { + "x": 163.9184112548828, + "y": 693.8386840820312 + }, + { + "x": 184.87228393554688, + "y": 698.695068359375 + }, + { + "x": 202.26742553710938, + "y": 701.6097412109375 + }, + { + "x": 222.4883575439453, + "y": 703.7539672851562 + }, + { + "x": 244.53189086914062, + "y": 704.7776489257812 + }, + { + "x": 131.76673889160156, + "y": 707.9761352539062 + }, + { + "x": 152.3140411376953, + "y": 711.2523193359375 + }, + { + "x": 168.03451538085938, + "y": 714.5271606445312 + }, + { + "x": 190.41064453125, + "y": 716.0966186523438 + }, + { + "x": 204.7874298095703, + "y": 720.1882934570312 + }, + { + "x": 228.94973754882812, + "y": 722.4104614257812 + }, + { + "x": 244.0158233642578, + "y": 725.775146484375 + }, + { + "x": 141.4451904296875, + "y": 727.6820678710938 + }, + { + "x": 151.8277587890625, + "y": 730.3001708984375 + }, + { + "x": 171.13429260253906, + "y": 732.6694946289062 + }, + { + "x": 188.35079956054688, + "y": 736.5731201171875 + }, + { + "x": 208.2930908203125, + "y": 739.6404418945312 + }, + { + "x": 226.59371948242188, + "y": 742.7083740234375 + }, + { + "x": 249.18023681640625, + "y": 743.0925903320312 + }, + { + "x": 137.01295471191406, + "y": 745.4851684570312 + }, + { + "x": 153.56817626953125, + "y": 750.7047729492188 + }, + { + "x": 172.82643127441406, + "y": 752.78857421875 + }, + { + "x": 190.5, + "y": 757.0 + }, + { + "x": 209.98167419433594, + "y": 758.9286499023438 + }, + { + "x": 230.0686798095703, + "y": 761.8321533203125 + }, + { + "x": 248.57460021972656, + "y": 765.3704833984375 + }, + { + "x": 146.01141357421875, + "y": 764.4668579101562 + }, + { + "x": 157.72288513183594, + "y": 767.9224853515625 + }, + { + "x": 176.22569274902344, + "y": 770.7642822265625 + }, + { + "x": 193.61663818359375, + "y": 774.6820068359375 + }, + { + "x": 212.17098999023438, + "y": 778.0972290039062 + }, + { + "x": 231.33982849121094, + "y": 781.2652587890625 + }, + { + "x": 249.0382080078125, + "y": 784.4246826171875 + } + ], + "reprojectionErrors": [ + { + "x": -0.12491607666015625, + "y": 0.800048828125 + }, + { + "x": 0.1663665771484375, + "y": -0.30120849609375 + }, + { + "x": -0.791290283203125, + "y": 0.931640625 + }, + { + "x": 0.918914794921875, + "y": 0.536376953125 + }, + { + "x": 0.3235015869140625, + "y": -0.54986572265625 + }, + { + "x": 0.2218017578125, + "y": 0.71380615234375 + }, + { + "x": -1.3469390869140625, + "y": 0.19873046875 + }, + { + "x": 0.3310394287109375, + "y": -0.22479248046875 + }, + { + "x": -0.6401824951171875, + "y": 0.2713623046875 + }, + { + "x": 1.034149169921875, + "y": -0.38055419921875 + }, + { + "x": 0.8497161865234375, + "y": -0.442138671875 + }, + { + "x": 0.7883453369140625, + "y": -0.4173583984375 + }, + { + "x": -1.109130859375, + "y": 0.06793212890625 + }, + { + "x": -0.5280914306640625, + "y": -0.49420166015625 + }, + { + "x": 0.7686920166015625, + "y": -0.54156494140625 + }, + { + "x": 0.951446533203125, + "y": -0.9332275390625 + }, + { + "x": 2.975677490234375, + "y": 0.37469482421875 + }, + { + "x": 0.59332275390625, + "y": -1.65484619140625 + }, + { + "x": 1.97589111328125, + "y": -1.7117919921875 + }, + { + "x": 0.74224853515625, + "y": -0.9669189453125 + }, + { + "x": -2.1009521484375, + "y": 0.93035888671875 + }, + { + "x": 1.2365570068359375, + "y": 0.0093994140625 + }, + { + "x": -1.21661376953125, + "y": -0.408935546875 + }, + { + "x": 1.3548431396484375, + "y": -0.79522705078125 + }, + { + "x": -2.528350830078125, + "y": 0.55511474609375 + }, + { + "x": 1.7920684814453125, + "y": -0.58514404296875 + }, + { + "x": -3.46539306640625, + "y": 0.1763916015625 + }, + { + "x": 0.58441162109375, + "y": -0.17181396484375 + }, + { + "x": -5.868988037109375, + "y": -0.51214599609375 + }, + { + "x": 1.769073486328125, + "y": -0.18267822265625 + }, + { + "x": 0.6791839599609375, + "y": 0.427001953125 + }, + { + "x": 1.8785247802734375, + "y": -0.46551513671875 + }, + { + "x": 0.5545196533203125, + "y": -0.4892578125 + }, + { + "x": 1.077911376953125, + "y": -0.48052978515625 + }, + { + "x": -2.4754791259765625, + "y": 2.24554443359375 + }, + { + "x": 1.063629150390625, + "y": 0.72381591796875 + }, + { + "x": 2.4569091796875, + "y": -1.46002197265625 + }, + { + "x": 1.3414764404296875, + "y": -0.47576904296875 + }, + { + "x": 2.0081787109375, + "y": -1.5863037109375 + }, + { + "x": 1.0673828125, + "y": -0.3807373046875 + }, + { + "x": -0.27484130859375, + "y": -0.11614990234375 + }, + { + "x": 0.1712188720703125, + "y": -0.45196533203125 + }, + { + "x": -5.5055084228515625, + "y": 0.64129638671875 + }, + { + "x": 0.6607818603515625, + "y": 0.30828857421875 + }, + { + "x": 0.2283935546875, + "y": 0.62213134765625 + }, + { + "x": 1.10357666015625, + "y": -0.10638427734375 + }, + { + "x": 1.01422119140625, + "y": -0.2982177734375 + }, + { + "x": 0.512481689453125, + "y": -0.20819091796875 + }, + { + "x": 1.686553955078125, + "y": -0.07427978515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.5524096693884517, + "y": 0.2869436320305305, + "z": 1.296208950675459 + }, + "rotation": { + "quaternion": { + "W": 0.9815579282911941, + "X": 0.12589143339233086, + "Y": 0.14349951826132143, + "Z": 0.010162119163441966 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img76.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img76.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 49.506675720214844, + "y": 618.9105224609375 + }, + { + "x": 71.90877532958984, + "y": 620.7828979492188 + }, + { + "x": 93.58173370361328, + "y": 623.506103515625 + }, + { + "x": 114.58500671386719, + "y": 624.9461669921875 + }, + { + "x": 137.47911071777344, + "y": 628.7059326171875 + }, + { + "x": 160.0324249267578, + "y": 628.8345336914062 + }, + { + "x": 183.81993103027344, + "y": 631.6434936523438 + }, + { + "x": 54.05643081665039, + "y": 639.99365234375 + }, + { + "x": 75.4854507446289, + "y": 641.5042114257812 + }, + { + "x": 95.67241668701172, + "y": 644.449951171875 + }, + { + "x": 116.37814331054688, + "y": 647.7911987304688 + }, + { + "x": 139.61233520507812, + "y": 648.6233520507812 + }, + { + "x": 162.70108032226562, + "y": 650.7621459960938 + }, + { + "x": 185.01309204101562, + "y": 652.6441650390625 + }, + { + "x": 55.66141891479492, + "y": 659.7771606445312 + }, + { + "x": 77.17168426513672, + "y": 662.7587890625 + }, + { + "x": 99.6191177368164, + "y": 663.3412475585938 + }, + { + "x": 120.06920623779297, + "y": 667.6837768554688 + }, + { + "x": 140.7367706298828, + "y": 669.7725219726562 + }, + { + "x": 163.50997924804688, + "y": 671.3955078125 + }, + { + "x": 187.44688415527344, + "y": 672.46142578125 + }, + { + "x": 58.272743225097656, + "y": 679.72412109375 + }, + { + "x": 80.7343978881836, + "y": 681.8136596679688 + }, + { + "x": 99.22827911376953, + "y": 683.939697265625 + }, + { + "x": 123.21797943115234, + "y": 686.6808471679688 + }, + { + "x": 142.19488525390625, + "y": 688.60498046875 + }, + { + "x": 167.99464416503906, + "y": 689.6156005859375 + }, + { + "x": 186.1868896484375, + "y": 692.7598266601562 + }, + { + "x": 63.36436462402344, + "y": 698.4959106445312 + }, + { + "x": 80.43446350097656, + "y": 700.5444946289062 + }, + { + "x": 103.51856994628906, + "y": 703.4635620117188 + }, + { + "x": 123.28018951416016, + "y": 705.9636840820312 + }, + { + "x": 144.53271484375, + "y": 709.060546875 + }, + { + "x": 166.9273223876953, + "y": 710.5113525390625 + }, + { + "x": 190.75123596191406, + "y": 710.037353515625 + }, + { + "x": 64.1656494140625, + "y": 717.8078002929688 + }, + { + "x": 82.8095474243164, + "y": 721.94970703125 + }, + { + "x": 105.5059814453125, + "y": 723.326416015625 + }, + { + "x": 126.71957397460938, + "y": 723.8072509765625 + }, + { + "x": 147.06370544433594, + "y": 727.5299072265625 + }, + { + "x": 169.1840362548828, + "y": 729.8451538085938 + }, + { + "x": 190.6649627685547, + "y": 731.77490234375 + }, + { + "x": 69.32587432861328, + "y": 733.06787109375 + }, + { + "x": 86.84928131103516, + "y": 738.9869384765625 + }, + { + "x": 108.31948852539062, + "y": 741.2896118164062 + }, + { + "x": 128.53688049316406, + "y": 743.890380859375 + }, + { + "x": 149.24412536621094, + "y": 746.0635986328125 + }, + { + "x": 170.43873596191406, + "y": 748.3950805664062 + }, + { + "x": 190.18690490722656, + "y": 751.5487670898438 + } + ], + "reprojectionErrors": [ + { + "x": 1.0814018249511719, + "y": 0.486328125 + }, + { + "x": 0.3244781494140625, + "y": 0.79205322265625 + }, + { + "x": 0.386566162109375, + "y": 0.25543212890625 + }, + { + "x": 1.2087326049804688, + "y": 1.01055908203125 + }, + { + "x": 0.23095703125, + "y": -0.54547119140625 + }, + { + "x": -0.3146209716796875, + "y": 1.53839111328125 + }, + { + "x": -2.002471923828125, + "y": 0.95062255859375 + }, + { + "x": -0.6907081604003906, + "y": -0.51348876953125 + }, + { + "x": -0.6143951416015625, + "y": 0.18048095703125 + }, + { + "x": 0.7926712036132812, + "y": -0.55218505859375 + }, + { + "x": 1.770172119140625, + "y": -1.6717529296875 + }, + { + "x": 0.30889892578125, + "y": -0.2735595703125 + }, + { + "x": -0.9167327880859375, + "y": -0.17333984375 + }, + { + "x": -1.274932861328125, + "y": 0.19244384765625 + }, + { + "x": 0.40065765380859375, + "y": -0.44097900390625 + }, + { + "x": 0.2589874267578125, + "y": -1.1922607421875 + }, + { + "x": -0.7322998046875, + "y": 0.46417236328125 + }, + { + "x": 0.36179351806640625, + "y": -1.63079833984375 + }, + { + "x": 1.326934814453125, + "y": -1.46337890625 + }, + { + "x": 0.27545166015625, + "y": -0.8214111328125 + }, + { + "x": -1.8502197265625, + "y": 0.38641357421875 + }, + { + "x": 0.40651702880859375, + "y": -0.750732421875 + }, + { + "x": -0.8202667236328125, + "y": -0.5848388671875 + }, + { + "x": 2.0071563720703125, + "y": -0.44677734375 + }, + { + "x": -0.5743255615234375, + "y": -0.91522216796875 + }, + { + "x": 1.9443817138671875, + "y": -0.557861328125 + }, + { + "x": -2.2718963623046875, + "y": 0.72174072265625 + }, + { + "x": 1.20770263671875, + "y": -0.12347412109375 + }, + { + "x": -2.1450538635253906, + "y": -0.09625244140625 + }, + { + "x": 1.8889236450195312, + "y": 0.13519287109375 + }, + { + "x": -0.00574493408203125, + "y": -0.4952392578125 + }, + { + "x": 1.5078887939453125, + "y": -0.697998046875 + }, + { + "x": 1.616912841796875, + "y": -1.48876953125 + }, + { + "x": 0.6706085205078125, + "y": -0.62469482421875 + }, + { + "x": -1.6177520751953125, + "y": 2.1729736328125 + }, + { + "x": -0.4814605712890625, + "y": -0.1849365234375 + }, + { + "x": 1.8507843017578125, + "y": -2.02288818359375 + }, + { + "x": 0.2147979736328125, + "y": -1.0869140625 + }, + { + "x": 0.14641571044921875, + "y": 0.75360107421875 + }, + { + "x": 1.03271484375, + "y": -0.638916015625 + }, + { + "x": 0.2285003662109375, + "y": -0.615234375 + }, + { + "x": 0.14984130859375, + "y": -0.1971435546875 + }, + { + "x": -3.2501068115234375, + "y": 3.58245849609375 + }, + { + "x": 0.07747650146484375, + "y": -0.0091552734375 + }, + { + "x": -0.45845794677734375, + "y": 0.0242919921875 + }, + { + "x": 0.3421478271484375, + "y": -0.23162841796875 + }, + { + "x": 0.737091064453125, + "y": -0.05120849609375 + }, + { + "x": 0.72930908203125, + "y": -0.02020263671875 + }, + { + "x": 2.2530517578125, + "y": -0.802490234375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.6058735743202163, + "y": 0.23862594484162528, + "z": 1.2284492063924741 + }, + "rotation": { + "quaternion": { + "W": 0.9852558098919848, + "X": 0.15928189019501568, + "Y": 0.05513907207176736, + "Z": 0.02932492559336825 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img77.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img77.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 48.42538070678711, + "y": 618.7006225585938 + }, + { + "x": 71.38053894042969, + "y": 620.9697265625 + }, + { + "x": 92.7255630493164, + "y": 623.1658325195312 + }, + { + "x": 113.37934112548828, + "y": 624.5540161132812 + }, + { + "x": 135.39024353027344, + "y": 629.6680908203125 + }, + { + "x": 158.5697784423828, + "y": 628.223388671875 + }, + { + "x": 182.0134735107422, + "y": 631.6409912109375 + }, + { + "x": 53.083553314208984, + "y": 639.9695434570312 + }, + { + "x": 74.8573226928711, + "y": 641.9596557617188 + }, + { + "x": 94.59858703613281, + "y": 643.886474609375 + }, + { + "x": 114.76158142089844, + "y": 647.4989013671875 + }, + { + "x": 138.84024047851562, + "y": 648.28515625 + }, + { + "x": 161.9322509765625, + "y": 650.5036010742188 + }, + { + "x": 184.25567626953125, + "y": 652.4030151367188 + }, + { + "x": 55.43781661987305, + "y": 659.6846313476562 + }, + { + "x": 76.32581329345703, + "y": 662.764404296875 + }, + { + "x": 98.881591796875, + "y": 663.123291015625 + }, + { + "x": 119.5842514038086, + "y": 667.910400390625 + }, + { + "x": 139.4505157470703, + "y": 670.6857299804688 + }, + { + "x": 163.04449462890625, + "y": 670.9642333984375 + }, + { + "x": 185.45533752441406, + "y": 672.1118774414062 + }, + { + "x": 57.308189392089844, + "y": 679.5654296875 + }, + { + "x": 79.70111083984375, + "y": 681.650390625 + }, + { + "x": 98.25634765625, + "y": 683.6030883789062 + }, + { + "x": 123.16065979003906, + "y": 685.6714477539062 + }, + { + "x": 141.22207641601562, + "y": 688.1104736328125 + }, + { + "x": 167.6717529296875, + "y": 689.5888671875 + }, + { + "x": 185.2166748046875, + "y": 692.341552734375 + }, + { + "x": 62.821224212646484, + "y": 698.6814575195312 + }, + { + "x": 79.33621215820312, + "y": 700.582763671875 + }, + { + "x": 103.10453796386719, + "y": 703.1885375976562 + }, + { + "x": 122.53266906738281, + "y": 706.1148681640625 + }, + { + "x": 143.97349548339844, + "y": 709.462158203125 + }, + { + "x": 166.2410430908203, + "y": 710.2817993164062 + }, + { + "x": 189.72010803222656, + "y": 710.0638427734375 + }, + { + "x": 63.19655227661133, + "y": 717.677978515625 + }, + { + "x": 81.09241485595703, + "y": 723.7449951171875 + }, + { + "x": 105.73074340820312, + "y": 723.774169921875 + }, + { + "x": 125.71637725830078, + "y": 723.7832641601562 + }, + { + "x": 146.1927490234375, + "y": 727.2304077148438 + }, + { + "x": 168.3201446533203, + "y": 729.660888671875 + }, + { + "x": 189.9749298095703, + "y": 731.3912963867188 + }, + { + "x": 68.71322631835938, + "y": 732.7827758789062 + }, + { + "x": 86.3878173828125, + "y": 739.23583984375 + }, + { + "x": 108.0547103881836, + "y": 740.83447265625 + }, + { + "x": 127.64451599121094, + "y": 743.788330078125 + }, + { + "x": 149.19773864746094, + "y": 745.540771484375 + }, + { + "x": 170.091064453125, + "y": 748.3426513671875 + }, + { + "x": 189.3498992919922, + "y": 751.6919555664062 + } + ], + "reprojectionErrors": [ + { + "x": 1.1739730834960938, + "y": 0.7181396484375 + }, + { + "x": -0.18912506103515625, + "y": 0.57696533203125 + }, + { + "x": 0.1513824462890625, + "y": 0.51751708984375 + }, + { + "x": 1.2771682739257812, + "y": 1.27471923828125 + }, + { + "x": 1.140411376953125, + "y": -1.6851806640625 + }, + { + "x": -0.0698394775390625, + "y": 1.92254638671875 + }, + { + "x": -1.44854736328125, + "y": 0.6768798828125 + }, + { + "x": -0.6114425659179688, + "y": -0.45697021484375 + }, + { + "x": -0.9319534301757812, + "y": -0.29052734375 + }, + { + "x": 0.8722991943359375, + "y": -0.05206298828125 + }, + { + "x": 2.3476028442382812, + "y": -1.49041748046875 + }, + { + "x": 5.79833984375E-4, + "y": -0.09381103515625 + }, + { + "x": -1.2659149169921875, + "y": -0.12042236328125 + }, + { + "x": -1.6693878173828125, + "y": 0.180908203125 + }, + { + "x": -0.17572021484375, + "y": -0.30517578125 + }, + { + "x": 0.253814697265625, + "y": -1.20050048828125 + }, + { + "x": -0.8933792114257812, + "y": 0.6337890625 + }, + { + "x": -0.095855712890625, + "y": -1.9512939453125 + }, + { + "x": 1.63018798828125, + "y": -2.5157470703125 + }, + { + "x": -0.2788238525390625, + "y": -0.57440185546875 + }, + { + "x": -0.9114990234375, + "y": 0.50677490234375 + }, + { + "x": 0.6632919311523438, + "y": -0.5377197265625 + }, + { + "x": -0.5448455810546875, + "y": -0.41107177734375 + }, + { + "x": 2.1746063232421875, + "y": -0.14337158203125 + }, + { + "x": -1.364593505859375, + "y": 0.017578125 + }, + { + "x": 2.0300445556640625, + "y": -0.1832275390625 + }, + { + "x": -2.8720855712890625, + "y": 0.5855712890625 + }, + { + "x": 1.2225341796875, + "y": 0.089111328125 + }, + { + "x": -2.218883514404297, + "y": -0.216064453125 + }, + { + "x": 2.3210678100585938, + "y": 0.12078857421875 + }, + { + "x": -0.30353546142578125, + "y": -0.238037109375 + }, + { + "x": 1.5013580322265625, + "y": -0.908447265625 + }, + { + "x": 1.3833465576171875, + "y": -1.9908447265625 + }, + { + "x": 0.5289459228515625, + "y": -0.53662109375 + }, + { + "x": -1.4461212158203125, + "y": 1.96429443359375 + }, + { + "x": -0.03987884521484375, + "y": 0.022216796875 + }, + { + "x": 2.9921875, + "y": -3.78076171875 + }, + { + "x": -0.6305160522460938, + "y": -1.5369873046875 + }, + { + "x": 0.48766326904296875, + "y": 0.73583984375 + }, + { + "x": 1.20379638671875, + "y": -0.42041015625 + }, + { + "x": 0.358123779296875, + "y": -0.55096435546875 + }, + { + "x": 0.07476806640625, + "y": 0.0277099609375 + }, + { + "x": -3.0768280029296875, + "y": 3.956787109375 + }, + { + "x": 0.05225372314453125, + "y": -0.2069091796875 + }, + { + "x": -0.7243270874023438, + "y": 0.4927978515625 + }, + { + "x": 0.663299560546875, + "y": -0.15374755859375 + }, + { + "x": 0.1751251220703125, + "y": 0.41015625 + }, + { + "x": 0.434967041015625, + "y": -0.0662841796875 + }, + { + "x": 2.41790771484375, + "y": -1.08099365234375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.6069756327920969, + "y": 0.23865236708494417, + "z": 1.2284603958018818 + }, + "rotation": { + "quaternion": { + "W": 0.9852403046899441, + "X": 0.1590504217873694, + "Y": 0.05698764983036684, + "Z": 0.027512053913469406 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img78.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img78.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 514.6188354492188, + "y": 436.3770751953125 + }, + { + "x": 539.5625610351562, + "y": 440.19476318359375 + }, + { + "x": 564.3888549804688, + "y": 444.607666015625 + }, + { + "x": 590.2053833007812, + "y": 447.4375 + }, + { + "x": 616.2786254882812, + "y": 451.8854064941406 + }, + { + "x": 643.36328125, + "y": 455.2257995605469 + }, + { + "x": 670.1817626953125, + "y": 459.62628173828125 + }, + { + "x": 516.843994140625, + "y": 463.06414794921875 + }, + { + "x": 541.4301147460938, + "y": 466.75506591796875 + }, + { + "x": 565.4854736328125, + "y": 470.4591979980469 + }, + { + "x": 589.6904296875, + "y": 475.37371826171875 + }, + { + "x": 616.9212646484375, + "y": 478.6634521484375 + }, + { + "x": 643.6615600585938, + "y": 482.5066223144531 + }, + { + "x": 670.1146850585938, + "y": 486.5011291503906 + }, + { + "x": 518.2675170898438, + "y": 488.0494079589844 + }, + { + "x": 541.629150390625, + "y": 493.12567138671875 + }, + { + "x": 567.7311401367188, + "y": 496.0611267089844 + }, + { + "x": 591.0585327148438, + "y": 500.9763488769531 + }, + { + "x": 616.6764526367188, + "y": 505.43902587890625 + }, + { + "x": 643.003662109375, + "y": 509.57562255859375 + }, + { + "x": 669.659912109375, + "y": 514.1429443359375 + }, + { + "x": 517.7018432617188, + "y": 513.8661499023438 + }, + { + "x": 543.2478637695312, + "y": 517.9500732421875 + }, + { + "x": 565.3956909179688, + "y": 521.4744262695312 + }, + { + "x": 593.0302124023438, + "y": 526.4065551757812 + }, + { + "x": 615.8140869140625, + "y": 530.700927734375 + }, + { + "x": 644.9142456054688, + "y": 535.3619995117188 + }, + { + "x": 668.5404052734375, + "y": 540.0165405273438 + }, + { + "x": 519.902587890625, + "y": 538.2665405273438 + }, + { + "x": 541.6536865234375, + "y": 542.2689208984375 + }, + { + "x": 567.5980224609375, + "y": 547.4448852539062 + }, + { + "x": 591.6073608398438, + "y": 552.3453979492188 + }, + { + "x": 616.8405151367188, + "y": 557.4971313476562 + }, + { + "x": 642.9181518554688, + "y": 561.8432006835938 + }, + { + "x": 670.0859375, + "y": 565.5284423828125 + }, + { + "x": 519.9617309570312, + "y": 562.8060302734375 + }, + { + "x": 544.1000366210938, + "y": 567.65185546875 + }, + { + "x": 567.725341796875, + "y": 572.4893798828125 + }, + { + "x": 593.857666015625, + "y": 575.634521484375 + }, + { + "x": 616.70068359375, + "y": 581.6952514648438 + }, + { + "x": 642.4874877929688, + "y": 587.167724609375 + }, + { + "x": 668.7071533203125, + "y": 591.9967651367188 + }, + { + "x": 521.8936157226562, + "y": 585.5064086914062 + }, + { + "x": 543.7625732421875, + "y": 591.1803588867188 + }, + { + "x": 569.0430908203125, + "y": 596.5601806640625 + }, + { + "x": 592.3812255859375, + "y": 601.6163940429688 + }, + { + "x": 617.705322265625, + "y": 605.6958618164062 + }, + { + "x": 642.322021484375, + "y": 611.5631713867188 + }, + { + "x": 667.963134765625, + "y": 616.4611206054688 + } + ], + "reprojectionErrors": [ + { + "x": 0.95599365234375, + "y": 0.711517333984375 + }, + { + "x": 0.468505859375, + "y": 0.4659423828125 + }, + { + "x": 0.59576416015625, + "y": -0.302642822265625 + }, + { + "x": 0.24530029296875, + "y": 0.58624267578125 + }, + { + "x": 0.16650390625, + "y": -0.066253662109375 + }, + { + "x": -0.3787841796875, + "y": 0.4678955078125 + }, + { + "x": -0.09576416015625, + "y": 0.0235595703125 + }, + { + "x": -0.18878173828125, + "y": -0.23480224609375 + }, + { + "x": -0.49853515625, + "y": -0.12469482421875 + }, + { + "x": 0.212158203125, + "y": 0.048431396484375 + }, + { + "x": 1.2779541015625, + "y": -0.9102783203125 + }, + { + "x": -0.16204833984375, + "y": -0.16326904296875 + }, + { + "x": -0.57525634765625, + "y": 0.11376953125 + }, + { + "x": -0.148193359375, + "y": 0.325531005859375 + }, + { + "x": -0.59234619140625, + "y": 0.158172607421875 + }, + { + "x": 0.1463623046875, + "y": -0.894927978515625 + }, + { + "x": -1.37286376953125, + "y": 0.272796630859375 + }, + { + "x": 0.3795166015625, + "y": -0.456787109375 + }, + { + "x": 0.353515625, + "y": -0.648834228515625 + }, + { + "x": 0.14605712890625, + "y": -0.42724609375 + }, + { + "x": 0.15386962890625, + "y": -0.5460205078125 + }, + { + "x": 0.934326171875, + "y": -0.629150390625 + }, + { + "x": -0.6834716796875, + "y": -0.474365234375 + }, + { + "x": 1.57220458984375, + "y": 0.32373046875 + }, + { + "x": -1.169189453125, + "y": -0.19976806640625 + }, + { + "x": 1.44439697265625, + "y": 0.0032958984375 + }, + { + "x": -1.73858642578125, + "y": -0.06884765625 + }, + { + "x": 1.08831787109375, + "y": -0.04010009765625 + }, + { + "x": -0.36273193359375, + "y": -0.3359375 + }, + { + "x": 1.6458740234375, + "y": 0.10980224609375 + }, + { + "x": -0.07025146484375, + "y": -0.53082275390625 + }, + { + "x": 0.6309814453125, + "y": -0.8062744140625 + }, + { + "x": 0.605224609375, + "y": -1.240478515625 + }, + { + "x": 0.2469482421875, + "y": -0.7738037109375 + }, + { + "x": -0.6739501953125, + "y": 0.451904296875 + }, + { + "x": 0.42584228515625, + "y": -0.505126953125 + }, + { + "x": -0.11761474609375, + "y": -0.69927978515625 + }, + { + "x": 0.313720703125, + "y": -0.79461669921875 + }, + { + "x": -1.2864990234375, + "y": 0.89556884765625 + }, + { + "x": 0.89208984375, + "y": -0.23394775390625 + }, + { + "x": 0.6312255859375, + "y": -0.6763916015625 + }, + { + "x": 0.45709228515625, + "y": -0.37353515625 + }, + { + "x": -0.712890625, + "y": 0.85357666015625 + }, + { + "x": 0.85162353515625, + "y": 0.02923583984375 + }, + { + "x": -0.5400390625, + "y": -0.4073486328125 + }, + { + "x": 0.47930908203125, + "y": -0.42388916015625 + }, + { + "x": -0.0047607421875, + "y": 0.63555908203125 + }, + { + "x": 0.7154541015625, + "y": 0.00933837890625 + }, + { + "x": 0.923095703125, + "y": 0.457763671875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.07502691131576482, + "y": 0.030674825701171245, + "z": 1.0219617566345711 + }, + "rotation": { + "quaternion": { + "W": 0.9651184449700774, + "X": 0.151732377382312, + "Y": 0.21166198307167958, + "Z": 0.026886386046016106 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img79.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img79.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 930.3660278320312, + "y": 290.9765625 + }, + { + "x": 961.3785400390625, + "y": 293.7288513183594 + }, + { + "x": 990.6929321289062, + "y": 299.0294494628906 + }, + { + "x": 1022.9588623046875, + "y": 301.0611572265625 + }, + { + "x": 1052.4278564453125, + "y": 305.8240661621094 + }, + { + "x": 1083.32958984375, + "y": 308.5703125 + }, + { + "x": 1112.7105712890625, + "y": 313.4051513671875 + }, + { + "x": 929.386962890625, + "y": 321.4939270019531 + }, + { + "x": 959.6175537109375, + "y": 325.67694091796875 + }, + { + "x": 990.349609375, + "y": 328.56719970703125 + }, + { + "x": 1019.3795166015625, + "y": 333.7501525878906 + }, + { + "x": 1050.7613525390625, + "y": 336.3969421386719 + }, + { + "x": 1080.8800048828125, + "y": 340.6032409667969 + }, + { + "x": 1110.436767578125, + "y": 343.9896240234375 + }, + { + "x": 926.9915161132812, + "y": 353.14569091796875 + }, + { + "x": 957.4119262695312, + "y": 356.0556945800781 + }, + { + "x": 987.4190673828125, + "y": 360.16290283203125 + }, + { + "x": 1017.0518188476562, + "y": 363.16485595703125 + }, + { + "x": 1047.731689453125, + "y": 367.9186096191406 + }, + { + "x": 1077.6824951171875, + "y": 371.39471435546875 + }, + { + "x": 1106.58251953125, + "y": 376.4652099609375 + }, + { + "x": 924.942626953125, + "y": 383.2282409667969 + }, + { + "x": 954.7986450195312, + "y": 387.3071594238281 + }, + { + "x": 984.4054565429688, + "y": 389.5014343261719 + }, + { + "x": 1015.6619873046875, + "y": 395.0074768066406 + }, + { + "x": 1044.402099609375, + "y": 398.2428894042969 + }, + { + "x": 1074.703857421875, + "y": 403.09735107421875 + }, + { + "x": 1103.9080810546875, + "y": 406.8099060058594 + }, + { + "x": 922.9452514648438, + "y": 413.4014587402344 + }, + { + "x": 952.4228515625, + "y": 416.3959655761719 + }, + { + "x": 981.878173828125, + "y": 421.65875244140625 + }, + { + "x": 1012.4044799804688, + "y": 425.173828125 + }, + { + "x": 1041.212158203125, + "y": 429.7034606933594 + }, + { + "x": 1071.56640625, + "y": 433.2108154296875 + }, + { + "x": 1100.8702392578125, + "y": 436.47442626953125 + }, + { + "x": 920.567626953125, + "y": 443.2071838378906 + }, + { + "x": 949.8967895507812, + "y": 447.3851013183594 + }, + { + "x": 979.59375, + "y": 450.51287841796875 + }, + { + "x": 1009.4346313476562, + "y": 454.16241455078125 + }, + { + "x": 1037.6029052734375, + "y": 458.2182312011719 + }, + { + "x": 1067.2652587890625, + "y": 463.4077453613281 + }, + { + "x": 1096.6783447265625, + "y": 467.0970458984375 + }, + { + "x": 917.1171875, + "y": 472.0666809082031 + }, + { + "x": 946.5089721679688, + "y": 476.3089599609375 + }, + { + "x": 976.3956909179688, + "y": 480.5552062988281 + }, + { + "x": 1005.4761352539062, + "y": 484.418701171875 + }, + { + "x": 1034.7447509765625, + "y": 487.8938293457031 + }, + { + "x": 1063.9971923828125, + "y": 492.88299560546875 + }, + { + "x": 1091.6029052734375, + "y": 497.22998046875 + } + ], + "reprojectionErrors": [ + { + "x": 3.44927978515625, + "y": 0.1939697265625 + }, + { + "x": 2.30133056640625, + "y": 1.37908935546875 + }, + { + "x": 2.767822265625, + "y": 0.005126953125 + }, + { + "x": 0.1993408203125, + "y": 1.889312744140625 + }, + { + "x": 0.3446044921875, + "y": 1.031585693359375 + }, + { + "x": -1.0257568359375, + "y": 2.179840087890625 + }, + { + "x": -0.9581298828125, + "y": 1.228851318359375 + }, + { + "x": 1.24920654296875, + "y": -0.003875732421875 + }, + { + "x": 0.93353271484375, + "y": -0.2857666015625 + }, + { + "x": 0.0323486328125, + "y": 0.71435546875 + }, + { + "x": 0.74969482421875, + "y": -0.588897705078125 + }, + { + "x": -0.9683837890625, + "y": 0.63336181640625 + }, + { + "x": -1.5064697265625, + "y": 0.285491943359375 + }, + { + "x": -1.5655517578125, + "y": 0.746917724609375 + }, + { + "x": 0.4927978515625, + "y": -1.25372314453125 + }, + { + "x": 0.04046630859375, + "y": -0.29876708984375 + }, + { + "x": -0.082763671875, + "y": -0.55169677734375 + }, + { + "x": 0.0843505859375, + "y": 0.290008544921875 + }, + { + "x": -0.87939453125, + "y": -0.630706787109375 + }, + { + "x": -1.197509765625, + "y": -0.28436279296875 + }, + { + "x": -0.548095703125, + "y": -1.542938232421875 + }, + { + "x": -0.58367919921875, + "y": -0.843017578125 + }, + { + "x": -0.41546630859375, + "y": -1.093017578125 + }, + { + "x": -0.08251953125, + "y": 0.531005859375 + }, + { + "x": -1.48358154296875, + "y": -1.1673583984375 + }, + { + "x": -0.4522705078125, + "y": -0.605621337890625 + }, + { + "x": -1.06640625, + "y": -1.673492431640625 + }, + { + "x": -0.66650390625, + "y": -1.60992431640625 + }, + { + "x": -1.68597412109375, + "y": -0.42254638671875 + }, + { + "x": -1.08013916015625, + "y": 0.37591552734375 + }, + { + "x": -0.53692626953125, + "y": -1.1044921875 + }, + { + "x": -1.14923095703125, + "y": -0.847747802734375 + }, + { + "x": -0.1273193359375, + "y": -1.616058349609375 + }, + { + "x": -0.7359619140625, + "y": -1.372589111328125 + }, + { + "x": -0.3780517578125, + "y": -0.89581298828125 + }, + { + "x": -2.38299560546875, + "y": 0.47503662109375 + }, + { + "x": -1.56658935546875, + "y": 0.054168701171875 + }, + { + "x": -1.203125, + "y": 0.672943115234375 + }, + { + "x": -1.06854248046875, + "y": 0.759429931640625 + }, + { + "x": 0.6539306640625, + "y": 0.42919921875 + }, + { + "x": 0.7979736328125, + "y": -1.045196533203125 + }, + { + "x": 1.107177734375, + "y": -1.029754638671875 + }, + { + "x": -1.98297119140625, + "y": 2.437744140625 + }, + { + "x": -1.1639404296875, + "y": 1.916717529296875 + }, + { + "x": -0.92535400390625, + "y": 1.381195068359375 + }, + { + "x": 0.0341796875, + "y": 1.217987060546875 + }, + { + "x": 0.7205810546875, + "y": 1.4327392578125 + }, + { + "x": 1.3382568359375, + "y": 0.123016357421875 + }, + { + "x": 3.518310546875, + "y": -0.554840087890625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.2792130377373481, + "y": -0.09311312274219924, + "z": 0.9179489990686261 + }, + "rotation": { + "quaternion": { + "W": 0.9972798738638626, + "X": -0.031229372272912646, + "Y": -0.027268057966688967, + "Z": 0.06094286265218682 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img80.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/e9ab514d-6f53-410a-9a59-d9329c5e4e07/imgs/1280x800/img80.png" + } + ], + "calobjectSize": { + "width": 7.0, + "height": 7.0 + }, + "calobjectSpacing": 0.0254, + "lensmodel": "LENSMODEL_OPENCV" +} diff --git a/camera_calibrations/Right_1280x720.json b/camera_calibrations/Right_1280x720.json new file mode 100644 index 0000000..038a137 --- /dev/null +++ b/camera_calibrations/Right_1280x720.json @@ -0,0 +1,40492 @@ +{ + "resolution": { + "width": 1280.0, + "height": 720.0 + }, + "cameraIntrinsics": { + "rows": 3, + "cols": 3, + "type": 6, + "data": [ + 1061.9937449640531, + 0.0, + 664.8069093801469, + 0.0, + 1063.4436764219004, + 369.85006247124863, + 0.0, + 0.0, + 1.0 + ] + }, + "distCoeffs": { + "rows": 1, + "cols": 8, + "type": 6, + "data": [ + -0.33760974372777797, + 0.231144913370197, + 0.0032113309572696746, + -0.0060673857554832695, + -0.05418216666884539, + 0.11741687279713685, + -0.06674478535794093, + 0.1343188238609792 + ] + }, + "calobjectWarp": [ + 5.501708564546856E-5, + 2.1448230330547668E-4 + ], + "observations": [ + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 527.6395263671875, + "y": 122.05289459228516 + }, + { + "x": 592.3087158203125, + "y": 125.00118255615234 + }, + { + "x": 654.3993530273438, + "y": 128.35479736328125 + }, + { + "x": 721.1061401367188, + "y": 130.09092712402344 + }, + { + "x": 779.5128173828125, + "y": 129.72813415527344 + }, + { + "x": 837.4165649414062, + "y": 138.765380859375 + }, + { + "x": 888.6566162109375, + "y": 138.79306030273438 + }, + { + "x": 523.6881713867188, + "y": 189.44129943847656 + }, + { + "x": 589.6431884765625, + "y": 190.5496826171875 + }, + { + "x": 656.8448486328125, + "y": 191.82781982421875 + }, + { + "x": 716.2142944335938, + "y": 191.74359130859375 + }, + { + "x": 775.759521484375, + "y": 194.2777099609375 + }, + { + "x": 828.7322387695312, + "y": 197.39443969726562 + }, + { + "x": 886.4410400390625, + "y": 199.34088134765625 + }, + { + "x": 523.1834716796875, + "y": 255.49620056152344 + }, + { + "x": 588.7373046875, + "y": 257.0218200683594 + }, + { + "x": 649.6158447265625, + "y": 257.25439453125 + }, + { + "x": 711.5355834960938, + "y": 253.62045288085938 + }, + { + "x": 773.4734497070312, + "y": 252.70162963867188 + }, + { + "x": 827.526611328125, + "y": 255.88633728027344 + }, + { + "x": 878.7528076171875, + "y": 258.3628845214844 + }, + { + "x": 522.8117065429688, + "y": 324.15252685546875 + }, + { + "x": 584.8034057617188, + "y": 321.1498718261719 + }, + { + "x": 649.2314453125, + "y": 318.7334899902344 + }, + { + "x": 710.0030517578125, + "y": 317.6084289550781 + }, + { + "x": 768.8069458007812, + "y": 320.345703125 + }, + { + "x": 820.6693725585938, + "y": 321.1013488769531 + }, + { + "x": 876.284912109375, + "y": 316.5057678222656 + }, + { + "x": 519.9073486328125, + "y": 385.2444763183594 + }, + { + "x": 585.2766723632812, + "y": 384.2503662109375 + }, + { + "x": 647.9061279296875, + "y": 378.7920837402344 + }, + { + "x": 707.58740234375, + "y": 380.6339416503906 + }, + { + "x": 763.9904174804688, + "y": 376.2313537597656 + }, + { + "x": 822.1382446289062, + "y": 378.0481872558594 + }, + { + "x": 867.216552734375, + "y": 375.3396911621094 + }, + { + "x": 521.3909301757812, + "y": 450.5091857910156 + }, + { + "x": 581.7570190429688, + "y": 444.0006408691406 + }, + { + "x": 635.4017333984375, + "y": 434.4478759765625 + }, + { + "x": 708.9852294921875, + "y": 430.6374816894531 + }, + { + "x": 761.4444580078125, + "y": 437.1463623046875 + }, + { + "x": 813.1947021484375, + "y": 431.1170349121094 + }, + { + "x": 866.3389282226562, + "y": 430.2642822265625 + }, + { + "x": 518.5311889648438, + "y": 505.4792175292969 + }, + { + "x": 580.9083862304688, + "y": 504.20709228515625 + }, + { + "x": 631.0260009765625, + "y": 506.7415771484375 + }, + { + "x": 707.8597412109375, + "y": 508.8584899902344 + }, + { + "x": 755.1152954101562, + "y": 489.2335205078125 + }, + { + "x": 808.8992309570312, + "y": 486.806396484375 + }, + { + "x": 863.2318115234375, + "y": 478.3351135253906 + } + ], + "reprojectionErrors": [ + { + "x": -2.0155029296875, + "y": -2.0658416748046875 + }, + { + "x": -0.017578125, + "y": -2.17633056640625 + }, + { + "x": 2.13763427734375, + "y": -2.795166015625 + }, + { + "x": -2.61090087890625, + "y": -1.8938446044921875 + }, + { + "x": -1.2230224609375, + "y": 1.0143585205078125 + }, + { + "x": -1.38067626953125, + "y": -5.56463623046875 + }, + { + "x": 3.18408203125, + "y": -3.2166595458984375 + }, + { + "x": 1.0477294921875, + "y": -0.24798583984375 + }, + { + "x": 0.82464599609375, + "y": 0.1757049560546875 + }, + { + "x": -2.99884033203125, + "y": 0.376312255859375 + }, + { + "x": -1.21575927734375, + "y": 1.8888397216796875 + }, + { + "x": -1.715087890625, + "y": 0.7352752685546875 + }, + { + "x": 2.36224365234375, + "y": -1.046112060546875 + }, + { + "x": -0.18927001953125, + "y": -1.7001190185546875 + }, + { + "x": 0.705078125, + "y": 0.9319305419921875 + }, + { + "x": -0.02130126953125, + "y": -0.295013427734375 + }, + { + "x": 1.63818359375, + "y": -0.236572265625 + }, + { + "x": 0.09002685546875, + "y": 3.68115234375 + }, + { + "x": -3.5283203125, + "y": 4.876922607421875 + }, + { + "x": -1.20751953125, + "y": 1.9626922607421875 + }, + { + "x": 2.0938720703125, + "y": -0.249542236328125 + }, + { + "x": 0.26837158203125, + "y": -2.361968994140625 + }, + { + "x": 2.2288818359375, + "y": -0.226806640625 + }, + { + "x": -0.47503662109375, + "y": 1.356536865234375 + }, + { + "x": -1.63232421875, + "y": 1.68115234375 + }, + { + "x": -2.82183837890625, + "y": -1.825653076171875 + }, + { + "x": 1.03277587890625, + "y": -3.32147216796875 + }, + { + "x": -0.6676025390625, + "y": 0.561767578125 + }, + { + "x": 2.40130615234375, + "y": 0.128753662109375 + }, + { + "x": 0.13677978515625, + "y": -0.84814453125 + }, + { + "x": -1.5572509765625, + "y": 2.71234130859375 + }, + { + "x": -2.35888671875, + "y": -0.95794677734375 + }, + { + "x": -1.83221435546875, + "y": 1.682037353515625 + }, + { + "x": -4.90155029296875, + "y": -1.83489990234375 + }, + { + "x": 3.3394775390625, + "y": -0.76715087890625 + }, + { + "x": 0.18170166015625, + "y": -3.246185302734375 + }, + { + "x": 2.09967041015625, + "y": 0.246246337890625 + }, + { + "x": 8.6256103515625, + "y": 6.891845703125 + }, + { + "x": -6.79119873046875, + "y": 7.89837646484375 + }, + { + "x": -2.98590087890625, + "y": -1.316253662109375 + }, + { + "x": -0.278564453125, + "y": 2.1004638671875 + }, + { + "x": -0.68328857421875, + "y": 0.42926025390625 + }, + { + "x": 2.3392333984375, + "y": 2.062103271484375 + }, + { + "x": 1.45068359375, + "y": -0.67254638671875 + }, + { + "x": 10.76202392578125, + "y": -7.071868896484375 + }, + { + "x": -8.5972900390625, + "y": -12.9189453125 + }, + { + "x": -0.23468017578125, + "y": 3.10382080078125 + }, + { + "x": -0.1649169921875, + "y": 2.050384521484375 + }, + { + "x": -2.32257080078125, + "y": 7.156829833984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.05173362813784425, + "y": -0.09274628514415727, + "z": 0.3947381084842873 + }, + "rotation": { + "quaternion": { + "W": 0.9821483400647776, + "X": 0.11534650479550768, + "Y": -0.1485402483743544, + "Z": 0.0039517783777788746 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img0.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img0.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 288.9128723144531, + "y": 132.26724243164062 + }, + { + "x": 359.47540283203125, + "y": 128.18338012695312 + }, + { + "x": 428.5677185058594, + "y": 125.10873413085938 + }, + { + "x": 501.2213134765625, + "y": 120.66944885253906 + }, + { + "x": 567.377197265625, + "y": 114.1919937133789 + }, + { + "x": 632.5768432617188, + "y": 119.3895263671875 + }, + { + "x": 691.5484008789062, + "y": 113.06480407714844 + }, + { + "x": 290.06591796875, + "y": 206.1060791015625 + }, + { + "x": 362.5577697753906, + "y": 200.2487030029297 + }, + { + "x": 434.5606689453125, + "y": 195.19102478027344 + }, + { + "x": 501.3009338378906, + "y": 189.14730834960938 + }, + { + "x": 567.47216796875, + "y": 186.1543731689453 + }, + { + "x": 627.2966918945312, + "y": 184.1499786376953 + }, + { + "x": 692.7333984375, + "y": 182.36087036132812 + }, + { + "x": 295.5005798339844, + "y": 279.6670837402344 + }, + { + "x": 366.4130859375, + "y": 274.089599609375 + }, + { + "x": 433.5693664550781, + "y": 268.166015625 + }, + { + "x": 501.3607177734375, + "y": 258.2043151855469 + }, + { + "x": 570.2775268554688, + "y": 250.30276489257812 + }, + { + "x": 632.4017333984375, + "y": 249.34259033203125 + }, + { + "x": 689.0652465820312, + "y": 245.27755737304688 + }, + { + "x": 302.3750915527344, + "y": 355.09210205078125 + }, + { + "x": 368.8746032714844, + "y": 345.5397644042969 + }, + { + "x": 438.6052551269531, + "y": 336.38720703125 + }, + { + "x": 505.8490295410156, + "y": 328.3931884765625 + }, + { + "x": 570.8202514648438, + "y": 325.38909912109375 + }, + { + "x": 630.6593017578125, + "y": 318.32171630859375 + }, + { + "x": 691.9068603515625, + "y": 310.8780212402344 + }, + { + "x": 305.3375549316406, + "y": 423.3321228027344 + }, + { + "x": 378.2828063964844, + "y": 415.5627136230469 + }, + { + "x": 442.8182067871094, + "y": 403.7795104980469 + }, + { + "x": 510.4461364746094, + "y": 399.2465515136719 + }, + { + "x": 571.465576171875, + "y": 387.58892822265625 + }, + { + "x": 635.8015747070312, + "y": 382.513916015625 + }, + { + "x": 687.5574340820312, + "y": 374.70904541015625 + }, + { + "x": 315.2650451660156, + "y": 493.252197265625 + }, + { + "x": 382.03363037109375, + "y": 476.626708984375 + }, + { + "x": 439.8914794921875, + "y": 466.9645690917969 + }, + { + "x": 513.0949096679688, + "y": 457.43023681640625 + }, + { + "x": 575.4937133789062, + "y": 453.6929626464844 + }, + { + "x": 632.6199340820312, + "y": 442.107666015625 + }, + { + "x": 692.4934692382812, + "y": 435.97174072265625 + }, + { + "x": 319.6531066894531, + "y": 554.759765625 + }, + { + "x": 388.02978515625, + "y": 546.6333618164062 + }, + { + "x": 446.93927001953125, + "y": 539.4658203125 + }, + { + "x": 520.5617065429688, + "y": 531.683349609375 + }, + { + "x": 575.3788452148438, + "y": 511.60015869140625 + }, + { + "x": 635.6441650390625, + "y": 503.6383056640625 + }, + { + "x": 694.564453125, + "y": 487.8082580566406 + } + ], + "reprojectionErrors": [ + { + "x": -12.861236572265625, + "y": -7.527275085449219 + }, + { + "x": -4.16943359375, + "y": -4.5478668212890625 + }, + { + "x": 1.318267822265625, + "y": -2.5122833251953125 + }, + { + "x": -1.023040771484375, + "y": 0.947662353515625 + }, + { + "x": -0.773681640625, + "y": 6.5004425048828125 + }, + { + "x": -3.15380859375, + "y": 0.42839813232421875 + }, + { + "x": -2.604736328125, + "y": 5.924774169921875 + }, + { + "x": -6.7125244140625, + "y": -3.0008544921875 + }, + { + "x": -1.501953125, + "y": -0.57379150390625 + }, + { + "x": -0.31011962890625, + "y": 1.25457763671875 + }, + { + "x": 2.0225830078125, + "y": 4.252777099609375 + }, + { + "x": 1.1456298828125, + "y": 4.368682861328125 + }, + { + "x": 3.14276123046875, + "y": 3.6508941650390625 + }, + { + "x": -3.6710205078125, + "y": 2.860443115234375 + }, + { + "x": -5.080322265625, + "y": -0.854644775390625 + }, + { + "x": 0.22222900390625, + "y": -0.87860107421875 + }, + { + "x": 4.9305419921875, + "y": -0.23309326171875 + }, + { + "x": 5.020050048828125, + "y": 4.74664306640625 + }, + { + "x": 0.32696533203125, + "y": 7.93804931640625 + }, + { + "x": -0.9385986328125, + "y": 4.438201904296875 + }, + { + "x": 0.15289306640625, + "y": 4.27392578125 + }, + { + "x": -5.109375, + "y": -3.078521728515625 + }, + { + "x": 3.179473876953125, + "y": -1.156463623046875 + }, + { + "x": 4.03521728515625, + "y": 0.79962158203125 + }, + { + "x": 3.5247802734375, + "y": 1.99505615234375 + }, + { + "x": 1.7451171875, + "y": -1.43377685546875 + }, + { + "x": 1.8345947265625, + "y": -0.462371826171875 + }, + { + "x": -2.49737548828125, + "y": 1.19647216796875 + }, + { + "x": -1.43524169921875, + "y": -0.482635498046875 + }, + { + "x": -0.961761474609375, + "y": -2.24139404296875 + }, + { + "x": 3.86004638671875, + "y": 0.54730224609375 + }, + { + "x": 1.860076904296875, + "y": -3.424163818359375 + }, + { + "x": 3.036376953125, + "y": 0.180023193359375 + }, + { + "x": -2.26983642578125, + "y": -2.382354736328125 + }, + { + "x": 2.07745361328125, + "y": -1.830291748046875 + }, + { + "x": -4.92340087890625, + "y": -1.801422119140625 + }, + { + "x": 0.410888671875, + "y": 3.518798828125 + }, + { + "x": 10.72735595703125, + "y": 2.49957275390625 + }, + { + "x": 2.08648681640625, + "y": 1.926177978515625 + }, + { + "x": 0.9219970703125, + "y": -3.9156494140625 + }, + { + "x": 1.95660400390625, + "y": -1.42132568359375 + }, + { + "x": -2.600341796875, + "y": -3.92462158203125 + }, + { + "x": -3.05853271484375, + "y": 3.178955078125 + }, + { + "x": -0.5975341796875, + "y": -1.66546630859375 + }, + { + "x": 7.528167724609375, + "y": -6.7633056640625 + }, + { + "x": -2.55938720703125, + "y": -10.59674072265625 + }, + { + "x": 2.92913818359375, + "y": -1.53033447265625 + }, + { + "x": -0.01593017578125, + "y": -4.03131103515625 + }, + { + "x": -4.38165283203125, + "y": 1.84906005859375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.1272174939615847, + "y": -0.08010123084104624, + "z": 0.347530147579888 + }, + "rotation": { + "quaternion": { + "W": 0.9668678336547477, + "X": 0.11563266993781618, + "Y": -0.22536917055786226, + "Z": -0.03169250461684138 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img1.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img1.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 574.1343383789062, + "y": 84.27487182617188 + }, + { + "x": 576.6034545898438, + "y": 156.48899841308594 + }, + { + "x": 575.6726684570312, + "y": 223.78219604492188 + }, + { + "x": 580.4825439453125, + "y": 291.4724426269531 + }, + { + "x": 580.5238037109375, + "y": 360.1572265625 + }, + { + "x": 590.547607421875, + "y": 426.3920593261719 + }, + { + "x": 596.09716796875, + "y": 478.9646301269531 + }, + { + "x": 510.6971740722656, + "y": 93.55929565429688 + }, + { + "x": 507.4277648925781, + "y": 161.12423706054688 + }, + { + "x": 515.4429931640625, + "y": 230.04110717773438 + }, + { + "x": 517.0131225585938, + "y": 302.2955322265625 + }, + { + "x": 525.3085327148438, + "y": 370.1686096191406 + }, + { + "x": 524.8421020507812, + "y": 433.496337890625 + }, + { + "x": 533.203369140625, + "y": 499.1565246582031 + }, + { + "x": 442.2825012207031, + "y": 90.15306854248047 + }, + { + "x": 443.72381591796875, + "y": 166.13368225097656 + }, + { + "x": 450.39501953125, + "y": 232.22418212890625 + }, + { + "x": 453.2516784667969, + "y": 312.6423645019531 + }, + { + "x": 457.1776123046875, + "y": 378.0325927734375 + }, + { + "x": 465.3732604980469, + "y": 448.0793762207031 + }, + { + "x": 469.4919738769531, + "y": 507.4103698730469 + }, + { + "x": 371.54583740234375, + "y": 100.38066864013672 + }, + { + "x": 375.12176513671875, + "y": 170.54351806640625 + }, + { + "x": 376.81744384765625, + "y": 244.54736328125 + }, + { + "x": 384.411376953125, + "y": 318.15008544921875 + }, + { + "x": 393.23736572265625, + "y": 392.5814514160156 + }, + { + "x": 397.7190246582031, + "y": 456.2657470703125 + }, + { + "x": 401.45819091796875, + "y": 521.7221069335938 + }, + { + "x": 296.1585693359375, + "y": 109.02688598632812 + }, + { + "x": 303.6890563964844, + "y": 180.71292114257812 + }, + { + "x": 306.2861328125, + "y": 257.82733154296875 + }, + { + "x": 314.5008544921875, + "y": 329.1162109375 + }, + { + "x": 322.50787353515625, + "y": 400.3221740722656 + }, + { + "x": 328.04156494140625, + "y": 469.2151794433594 + }, + { + "x": 338.24041748046875, + "y": 537.5968627929688 + }, + { + "x": 225.75852966308594, + "y": 114.96598815917969 + }, + { + "x": 230.66397094726562, + "y": 189.60440063476562 + }, + { + "x": 237.07044982910156, + "y": 266.4497985839844 + }, + { + "x": 242.74685668945312, + "y": 341.7121276855469 + }, + { + "x": 256.6124267578125, + "y": 414.773681640625 + }, + { + "x": 264.18841552734375, + "y": 477.6089782714844 + }, + { + "x": 277.1296691894531, + "y": 553.406494140625 + }, + { + "x": 153.11386108398438, + "y": 124.29236602783203 + }, + { + "x": 157.30532836914062, + "y": 199.38926696777344 + }, + { + "x": 164.2694854736328, + "y": 276.5769348144531 + }, + { + "x": 174.36497497558594, + "y": 354.0101318359375 + }, + { + "x": 181.3156280517578, + "y": 426.2186279296875 + }, + { + "x": 195.2245330810547, + "y": 497.6429748535156 + }, + { + "x": 203.3708953857422, + "y": 564.510498046875 + } + ], + "reprojectionErrors": [ + { + "x": -6.068603515625, + "y": 14.454910278320312 + }, + { + "x": -5.02020263671875, + "y": 9.66290283203125 + }, + { + "x": -0.66436767578125, + "y": 7.8188018798828125 + }, + { + "x": -2.13751220703125, + "y": 3.69342041015625 + }, + { + "x": 1.07366943359375, + "y": -3.227294921875 + }, + { + "x": -5.7783203125, + "y": -9.420074462890625 + }, + { + "x": -8.2332763671875, + "y": -3.59857177734375 + }, + { + "x": -3.74505615234375, + "y": 6.880882263183594 + }, + { + "x": 4.09320068359375, + "y": 8.890350341796875 + }, + { + "x": 0.5185546875, + "y": 7.4471435546875 + }, + { + "x": 3.2667236328125, + "y": 0.662994384765625 + }, + { + "x": -0.82708740234375, + "y": -3.65179443359375 + }, + { + "x": 3.72955322265625, + "y": -5.24725341796875 + }, + { + "x": -0.64794921875, + "y": -10.9202880859375 + }, + { + "x": -0.55572509765625, + "y": 12.111557006835938 + }, + { + "x": 3.75897216796875, + "y": 8.004928588867188 + }, + { + "x": 2.67303466796875, + "y": 11.546768188476562 + }, + { + "x": 5.2391357421875, + "y": -1.373565673828125 + }, + { + "x": 6.5810546875, + "y": -1.300079345703125 + }, + { + "x": 3.505584716796875, + "y": -7.823028564453125 + }, + { + "x": 4.366119384765625, + "y": -5.48162841796875 + }, + { + "x": 0.39422607421875, + "y": 3.8349456787109375 + }, + { + "x": 3.9190673828125, + "y": 8.008544921875 + }, + { + "x": 9.102874755859375, + "y": 5.9436187744140625 + }, + { + "x": 8.1781005859375, + "y": 2.00054931640625 + }, + { + "x": 5.8211669921875, + "y": -4.9398193359375 + }, + { + "x": 7.618011474609375, + "y": -3.19818115234375 + }, + { + "x": 9.97576904296875, + "y": -5.19659423828125 + }, + { + "x": 0.9158935546875, + "y": -2.7193984985351562 + }, + { + "x": 2.0146484375, + "y": 2.5743255615234375 + }, + { + "x": 7.76513671875, + "y": -0.13104248046875 + }, + { + "x": 7.6307373046875, + "y": 0.54949951171875 + }, + { + "x": 7.450164794921875, + "y": -1.00439453125 + }, + { + "x": 9.5015869140625, + "y": -2.448394775390625 + }, + { + "x": 6.658233642578125, + "y": -5.47723388671875 + }, + { + "x": -9.227447509765625, + "y": -6.409111022949219 + }, + { + "x": -3.759918212890625, + "y": -1.222991943359375 + }, + { + "x": -0.147491455078125, + "y": -1.007659912109375 + }, + { + "x": 3.859619140625, + "y": -1.827239990234375 + }, + { + "x": -0.6403961181640625, + "y": -2.928253173828125 + }, + { + "x": 0.847412109375, + "y": 3.841339111328125 + }, + { + "x": -3.316650390625, + "y": -4.58892822265625 + }, + { + "x": -23.500595092773438, + "y": -13.30926513671875 + }, + { + "x": -15.321731567382812, + "y": -5.5114898681640625 + }, + { + "x": -10.356887817382812, + "y": -2.784454345703125 + }, + { + "x": -8.940536499023438, + "y": -3.120025634765625 + }, + { + "x": -4.77410888671875, + "y": -0.89666748046875 + }, + { + "x": -7.9398651123046875, + "y": -0.414215087890625 + }, + { + "x": -5.697601318359375, + "y": 2.23089599609375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.037083420370102926, + "y": -0.10378579990497397, + "z": 0.4070899873313016 + }, + "rotation": { + "quaternion": { + "W": 0.7092412480186054, + "X": -0.11484682991417247, + "Y": -0.27341335959142277, + "Z": 0.6395562465996307 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img2.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img2.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1164.60888671875, + "y": 135.2539825439453 + }, + { + "x": 1175.4146728515625, + "y": 187.6396942138672 + }, + { + "x": 1165.7320556640625, + "y": 231.23989868164062 + }, + { + "x": 1163.4515380859375, + "y": 282.1129150390625 + }, + { + "x": 1159.455810546875, + "y": 329.6384582519531 + }, + { + "x": 1162.1982421875, + "y": 377.36944580078125 + }, + { + "x": 1164.54052734375, + "y": 413.9479675292969 + }, + { + "x": 1133.3577880859375, + "y": 135.16104125976562 + }, + { + "x": 1130.1015625, + "y": 185.04287719726562 + }, + { + "x": 1132.4608154296875, + "y": 233.43722534179688 + }, + { + "x": 1131.62646484375, + "y": 286.4267883300781 + }, + { + "x": 1128.893798828125, + "y": 334.92291259765625 + }, + { + "x": 1123.8643798828125, + "y": 382.1542053222656 + }, + { + "x": 1119.9549560546875, + "y": 427.927734375 + }, + { + "x": 1096.8277587890625, + "y": 130.9073944091797 + }, + { + "x": 1098.443115234375, + "y": 186.71011352539062 + }, + { + "x": 1099.1494140625, + "y": 232.91636657714844 + }, + { + "x": 1094.6846923828125, + "y": 292.2276916503906 + }, + { + "x": 1093.5157470703125, + "y": 339.6807861328125 + }, + { + "x": 1092.4013671875, + "y": 390.6352233886719 + }, + { + "x": 1084.7586669921875, + "y": 437.42962646484375 + }, + { + "x": 1056.7933349609375, + "y": 132.99351501464844 + }, + { + "x": 1055.9285888671875, + "y": 186.59182739257812 + }, + { + "x": 1054.83740234375, + "y": 238.4918212890625 + }, + { + "x": 1057.4903564453125, + "y": 292.9676818847656 + }, + { + "x": 1055.7291259765625, + "y": 346.240478515625 + }, + { + "x": 1052.2940673828125, + "y": 396.7183837890625 + }, + { + "x": 1052.369384765625, + "y": 448.68841552734375 + }, + { + "x": 1013.6600952148438, + "y": 133.53878784179688 + }, + { + "x": 1019.2662963867188, + "y": 189.24273681640625 + }, + { + "x": 1015.7068481445312, + "y": 245.0145721435547 + }, + { + "x": 1014.4486083984375, + "y": 296.5143127441406 + }, + { + "x": 1014.3858642578125, + "y": 351.3758239746094 + }, + { + "x": 1010.3285522460938, + "y": 402.7378845214844 + }, + { + "x": 1008.0999145507812, + "y": 454.8451232910156 + }, + { + "x": 971.22412109375, + "y": 134.07424926757812 + }, + { + "x": 970.8658447265625, + "y": 190.17474365234375 + }, + { + "x": 972.7827758789062, + "y": 248.05105590820312 + }, + { + "x": 970.5850219726562, + "y": 305.1457214355469 + }, + { + "x": 970.940185546875, + "y": 358.7054443359375 + }, + { + "x": 969.3557739257812, + "y": 409.6300048828125 + }, + { + "x": 965.3746948242188, + "y": 464.6097412109375 + }, + { + "x": 921.932373046875, + "y": 132.89064025878906 + }, + { + "x": 923.4656372070312, + "y": 192.9473114013672 + }, + { + "x": 924.1925659179688, + "y": 251.60986328125 + }, + { + "x": 924.7200927734375, + "y": 310.8279113769531 + }, + { + "x": 922.18017578125, + "y": 366.7949523925781 + }, + { + "x": 923.6683349609375, + "y": 423.3953857421875 + }, + { + "x": 917.855712890625, + "y": 474.8355712890625 + } + ], + "reprojectionErrors": [ + { + "x": 7.8704833984375, + "y": -6.805084228515625 + }, + { + "x": -5.2242431640625, + "y": -7.453857421875 + }, + { + "x": 2.2242431640625, + "y": -0.220794677734375 + }, + { + "x": 2.32421875, + "y": -1.13848876953125 + }, + { + "x": 4.191162109375, + "y": 0.438079833984375 + }, + { + "x": -0.62939453125, + "y": 0.97979736328125 + }, + { + "x": -5.000732421875, + "y": 11.8675537109375 + }, + { + "x": 1.9544677734375, + "y": -5.4229888916015625 + }, + { + "x": 3.2110595703125, + "y": -2.5714263916015625 + }, + { + "x": -1.097412109375, + "y": 0.82879638671875 + }, + { + "x": -2.1634521484375, + "y": -1.27783203125 + }, + { + "x": -1.28369140625, + "y": 0.22344970703125 + }, + { + "x": 1.93896484375, + "y": 2.12921142578125 + }, + { + "x": 4.086669921875, + "y": 4.6566162109375 + }, + { + "x": -0.1163330078125, + "y": 0.1677703857421875 + }, + { + "x": -3.417236328125, + "y": -1.8626708984375 + }, + { + "x": -5.7640380859375, + "y": 4.7271728515625 + }, + { + "x": -2.896240234375, + "y": -2.7354736328125 + }, + { + "x": -3.28173828125, + "y": 0.740325927734375 + }, + { + "x": -3.6805419921875, + "y": -0.178436279296875 + }, + { + "x": 2.4891357421875, + "y": 2.195220947265625 + }, + { + "x": -0.211669921875, + "y": -0.5300750732421875 + }, + { + "x": -0.6915283203125, + "y": 0.72796630859375 + }, + { + "x": -0.906005859375, + "y": 2.66839599609375 + }, + { + "x": -4.8267822265625, + "y": 1.047454833984375 + }, + { + "x": -4.296630859375, + "y": -0.32659912109375 + }, + { + "x": -2.056884765625, + "y": 0.166168212890625 + }, + { + "x": -3.29296875, + "y": -1.7342529296875 + }, + { + "x": 1.158447265625, + "y": 0.3675689697265625 + }, + { + "x": -5.421630859375, + "y": 0.652252197265625 + }, + { + "x": -2.803955078125, + "y": -0.1892852783203125 + }, + { + "x": -2.45635986328125, + "y": 2.21527099609375 + }, + { + "x": -3.2740478515625, + "y": 0.26312255859375 + }, + { + "x": -0.06781005859375, + "y": 0.84527587890625 + }, + { + "x": 1.33831787109375, + "y": -0.2542724609375 + }, + { + "x": 0.084228515625, + "y": 1.3334808349609375 + }, + { + "x": -0.12786865234375, + "y": 2.4053497314453125 + }, + { + "x": -2.5908203125, + "y": 0.59783935546875 + }, + { + "x": -0.9156494140625, + "y": -1.497222900390625 + }, + { + "x": -1.77044677734375, + "y": -1.093597412109375 + }, + { + "x": -0.66357421875, + "y": 0.940582275390625 + }, + { + "x": 2.861572265625, + "y": -2.054656982421875 + }, + { + "x": 3.99420166015625, + "y": 4.0811004638671875 + }, + { + "x": 2.33038330078125, + "y": 2.4355621337890625 + }, + { + "x": 1.48834228515625, + "y": 1.0322113037109375 + }, + { + "x": 0.860595703125, + "y": -2.0419921875 + }, + { + "x": 3.314697265625, + "y": -2.945465087890625 + }, + { + "x": 1.75482177734375, + "y": -5.52899169921875 + }, + { + "x": 7.5093994140625, + "y": -3.96673583984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.2532666030285099, + "y": -0.12026551870724858, + "z": 0.5298052405618344 + }, + "rotation": { + "quaternion": { + "W": 0.7168644476802293, + "X": -0.08939922221682045, + "Y": -0.21085856715685164, + "Z": 0.6585224425755792 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img3.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img3.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 862.4827270507812, + "y": 100.164306640625 + }, + { + "x": 915.3857421875, + "y": 99.34715270996094 + }, + { + "x": 964.8074951171875, + "y": 100.82874298095703 + }, + { + "x": 1017.24755859375, + "y": 100.47425079345703 + }, + { + "x": 1063.408935546875, + "y": 98.32102966308594 + }, + { + "x": 1108.4593505859375, + "y": 104.17828369140625 + }, + { + "x": 1149.8590087890625, + "y": 102.77023315429688 + }, + { + "x": 865.5853881835938, + "y": 153.28424072265625 + }, + { + "x": 919.2855224609375, + "y": 153.37814331054688 + }, + { + "x": 971.3991088867188, + "y": 152.57373046875 + }, + { + "x": 1019.1412353515625, + "y": 151.60658264160156 + }, + { + "x": 1065.96875, + "y": 152.74940490722656 + }, + { + "x": 1108.43505859375, + "y": 153.35194396972656 + }, + { + "x": 1153.131103515625, + "y": 154.3297576904297 + }, + { + "x": 869.86083984375, + "y": 209.06947326660156 + }, + { + "x": 922.5567016601562, + "y": 207.33958435058594 + }, + { + "x": 971.5775756835938, + "y": 207.7742919921875 + }, + { + "x": 1020.578857421875, + "y": 203.3419952392578 + }, + { + "x": 1069.2559814453125, + "y": 201.47027587890625 + }, + { + "x": 1112.353759765625, + "y": 203.38143920898438 + }, + { + "x": 1152.9061279296875, + "y": 204.07200622558594 + }, + { + "x": 874.302978515625, + "y": 265.2547302246094 + }, + { + "x": 923.4259643554688, + "y": 263.0458984375 + }, + { + "x": 974.9732666015625, + "y": 258.4825744628906 + }, + { + "x": 1023.8388671875, + "y": 257.124267578125 + }, + { + "x": 1070.3167724609375, + "y": 257.6234130859375 + }, + { + "x": 1112.4903564453125, + "y": 257.2571105957031 + }, + { + "x": 1155.951416015625, + "y": 254.17532348632812 + }, + { + "x": 873.4586791992188, + "y": 318.4670104980469 + }, + { + "x": 928.1954345703125, + "y": 315.584716796875 + }, + { + "x": 976.1703491210938, + "y": 312.1906433105469 + }, + { + "x": 1025.569091796875, + "y": 310.5464172363281 + }, + { + "x": 1070.4537353515625, + "y": 306.6777038574219 + }, + { + "x": 1116.379638671875, + "y": 306.31805419921875 + }, + { + "x": 1153.4180908203125, + "y": 304.39984130859375 + }, + { + "x": 876.254150390625, + "y": 370.8089294433594 + }, + { + "x": 929.6314697265625, + "y": 363.46783447265625 + }, + { + "x": 974.521240234375, + "y": 361.1351623535156 + }, + { + "x": 1022.8172607421875, + "y": 362.6635437011719 + }, + { + "x": 1070.2353515625, + "y": 357.5430908203125 + }, + { + "x": 1112.9837646484375, + "y": 354.1813049316406 + }, + { + "x": 1155.4010009765625, + "y": 352.4627685546875 + }, + { + "x": 874.5916137695312, + "y": 423.61102294921875 + }, + { + "x": 927.7318115234375, + "y": 418.53021240234375 + }, + { + "x": 977.50634765625, + "y": 413.0760803222656 + }, + { + "x": 1022.4254760742188, + "y": 410.19549560546875 + }, + { + "x": 1069.690185546875, + "y": 405.2062683105469 + }, + { + "x": 1112.693115234375, + "y": 403.56884765625 + }, + { + "x": 1155.344970703125, + "y": 397.36376953125 + } + ], + "reprojectionErrors": [ + { + "x": 6.55029296875, + "y": 0.62469482421875 + }, + { + "x": 3.4547119140625, + "y": 1.337371826171875 + }, + { + "x": 2.81884765625, + "y": -0.25031280517578125 + }, + { + "x": -1.82318115234375, + "y": -0.00350189208984375 + }, + { + "x": -1.1419677734375, + "y": 2.0405044555664062 + }, + { + "x": -0.274169921875, + "y": -3.927459716796875 + }, + { + "x": 3.3494873046875, + "y": -2.6315765380859375 + }, + { + "x": 5.16741943359375, + "y": 1.831451416015625 + }, + { + "x": 1.11065673828125, + "y": 1.0670623779296875 + }, + { + "x": -2.37481689453125, + "y": 1.2119598388671875 + }, + { + "x": -2.47052001953125, + "y": 1.530181884765625 + }, + { + "x": -2.6011962890625, + "y": -0.251312255859375 + }, + { + "x": 0.7103271484375, + "y": -1.48260498046875 + }, + { + "x": 0.9024658203125, + "y": -3.0796051025390625 + }, + { + "x": 2.631103515625, + "y": 0.04400634765625 + }, + { + "x": -0.5814208984375, + "y": 0.5440521240234375 + }, + { + "x": -1.12799072265625, + "y": -1.09716796875 + }, + { + "x": -2.6307373046875, + "y": 2.1511993408203125 + }, + { + "x": -4.75341796875, + "y": 2.86083984375 + }, + { + "x": -2.2103271484375, + "y": -0.1912994384765625 + }, + { + "x": 1.9937744140625, + "y": -2.00238037109375 + }, + { + "x": -0.05224609375, + "y": -2.45855712890625 + }, + { + "x": 0.15203857421875, + "y": -2.0325927734375 + }, + { + "x": -3.0709228515625, + "y": 0.783355712890625 + }, + { + "x": -4.58233642578125, + "y": 0.428680419921875 + }, + { + "x": -4.64453125, + "y": -1.7502288818359375 + }, + { + "x": -1.3109130859375, + "y": -3.031524658203125 + }, + { + "x": -0.14404296875, + "y": -1.566192626953125 + }, + { + "x": 2.57049560546875, + "y": -2.289764404296875 + }, + { + "x": -2.990966796875, + "y": -1.737335205078125 + }, + { + "x": -2.787841796875, + "y": -0.6256103515625 + }, + { + "x": -4.97308349609375, + "y": -1.217803955078125 + }, + { + "x": -3.577392578125, + "y": 0.458953857421875 + }, + { + "x": -4.1263427734375, + "y": -1.330291748046875 + }, + { + "x": 3.3375244140625, + "y": -1.51934814453125 + }, + { + "x": 1.573486328125, + "y": -1.5389404296875 + }, + { + "x": -2.7767333984375, + "y": 2.9310302734375 + }, + { + "x": 0.36895751953125, + "y": 2.451873779296875 + }, + { + "x": -0.85064697265625, + "y": -1.8309326171875 + }, + { + "x": -2.1204833984375, + "y": 0.590606689453125 + }, + { + "x": 0.3809814453125, + "y": 1.307220458984375 + }, + { + "x": 2.3436279296875, + "y": 0.4326171875 + }, + { + "x": 5.05462646484375, + "y": -1.523712158203125 + }, + { + "x": 0.797119140625, + "y": 0.150177001953125 + }, + { + "x": -1.080810546875, + "y": 2.268310546875 + }, + { + "x": 0.94281005859375, + "y": 1.881561279296875 + }, + { + "x": -0.3023681640625, + "y": 3.669830322265625 + }, + { + "x": 1.8206787109375, + "y": 2.170623779296875 + }, + { + "x": 3.4293212890625, + "y": 5.301361083984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.09649451342164402, + "y": -0.12695495172529425, + "z": 0.5017799314023117 + }, + "rotation": { + "quaternion": { + "W": 0.9938370516588422, + "X": 0.024896514624503024, + "Y": -0.10511027569792503, + "Z": -0.024897956790027823 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img4.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img4.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 663.2252807617188, + "y": 106.90042877197266 + }, + { + "x": 726.2308959960938, + "y": 105.90438079833984 + }, + { + "x": 784.396728515625, + "y": 106.25455474853516 + }, + { + "x": 847.9312133789062, + "y": 104.3387451171875 + }, + { + "x": 902.5261840820312, + "y": 100.64196014404297 + }, + { + "x": 956.358154296875, + "y": 106.13582611083984 + }, + { + "x": 1004.5671997070312, + "y": 104.13064575195312 + }, + { + "x": 664.65087890625, + "y": 170.26560974121094 + }, + { + "x": 728.6992797851562, + "y": 168.2459716796875 + }, + { + "x": 791.2526245117188, + "y": 166.10601806640625 + }, + { + "x": 846.8466186523438, + "y": 164.91946411132812 + }, + { + "x": 904.1818237304688, + "y": 163.2940216064453 + }, + { + "x": 953.82177734375, + "y": 163.6278839111328 + }, + { + "x": 1006.9886474609375, + "y": 162.53639221191406 + }, + { + "x": 669.1851806640625, + "y": 234.4925079345703 + }, + { + "x": 731.6923217773438, + "y": 231.603515625 + }, + { + "x": 789.8865356445312, + "y": 229.8604736328125 + }, + { + "x": 848.2701416015625, + "y": 222.86277770996094 + }, + { + "x": 906.0256958007812, + "y": 219.68849182128906 + }, + { + "x": 957.613525390625, + "y": 220.0262908935547 + }, + { + "x": 1005.30615234375, + "y": 219.412353515625 + }, + { + "x": 674.01123046875, + "y": 300.3370056152344 + }, + { + "x": 732.4998779296875, + "y": 294.0554504394531 + }, + { + "x": 794.5383911132812, + "y": 289.181396484375 + }, + { + "x": 850.9596557617188, + "y": 285.0967102050781 + }, + { + "x": 906.2792358398438, + "y": 283.296630859375 + }, + { + "x": 955.9644165039062, + "y": 281.3122253417969 + }, + { + "x": 1007.4235229492188, + "y": 275.4427795410156 + }, + { + "x": 676.2208251953125, + "y": 357.7523193359375 + }, + { + "x": 737.9573364257812, + "y": 355.5637512207031 + }, + { + "x": 795.0891723632812, + "y": 348.4430847167969 + }, + { + "x": 853.357421875, + "y": 346.0769348144531 + }, + { + "x": 905.6276245117188, + "y": 339.0730285644531 + }, + { + "x": 959.5913696289062, + "y": 336.31292724609375 + }, + { + "x": 1002.5696411132812, + "y": 333.1623229980469 + }, + { + "x": 679.948486328125, + "y": 423.3951110839844 + }, + { + "x": 738.5722045898438, + "y": 410.7406311035156 + }, + { + "x": 793.21337890625, + "y": 405.78607177734375 + }, + { + "x": 849.48486328125, + "y": 403.8179016113281 + }, + { + "x": 904.4107055664062, + "y": 395.7279357910156 + }, + { + "x": 954.8735961914062, + "y": 390.5963134765625 + }, + { + "x": 1004.562255859375, + "y": 385.6016845703125 + }, + { + "x": 678.3868408203125, + "y": 477.4100646972656 + }, + { + "x": 734.2027587890625, + "y": 467.2608947753906 + }, + { + "x": 796.93603515625, + "y": 461.642578125 + }, + { + "x": 851.3978881835938, + "y": 459.6617126464844 + }, + { + "x": 901.913818359375, + "y": 451.1875305175781 + }, + { + "x": 953.485595703125, + "y": 444.116455078125 + }, + { + "x": 1003.8545532226562, + "y": 434.9117126464844 + } + ], + "reprojectionErrors": [ + { + "x": 4.3853759765625, + "y": 0.8736190795898438 + }, + { + "x": 2.05047607421875, + "y": 0.3136749267578125 + }, + { + "x": 2.9642333984375, + "y": -1.5533523559570312 + }, + { + "x": -3.01629638671875, + "y": -1.1168594360351562 + }, + { + "x": -1.52105712890625, + "y": 1.1366043090820312 + }, + { + "x": -0.66802978515625, + "y": -5.766014099121094 + }, + { + "x": 4.4583740234375, + "y": -5.136405944824219 + }, + { + "x": 5.5345458984375, + "y": 2.01513671875 + }, + { + "x": 1.5118408203125, + "y": 1.6419219970703125 + }, + { + "x": -2.57427978515625, + "y": 1.4508209228515625 + }, + { + "x": -1.1959228515625, + "y": 0.3656158447265625 + }, + { + "x": -2.99365234375, + "y": -0.223785400390625 + }, + { + "x": 1.5260009765625, + "y": -2.7178497314453125 + }, + { + "x": 1.19476318359375, + "y": -3.734039306640625 + }, + { + "x": 3.54388427734375, + "y": 0.9944000244140625 + }, + { + "x": 0.4351806640625, + "y": 0.6871185302734375 + }, + { + "x": 0.1124267578125, + "y": -0.682952880859375 + }, + { + "x": -1.86505126953125, + "y": 3.28143310546875 + }, + { + "x": -4.6214599609375, + "y": 3.4990234375 + }, + { + "x": -2.56170654296875, + "y": 0.27813720703125 + }, + { + "x": 2.0941162109375, + "y": -1.9202423095703125 + }, + { + "x": 1.231689453125, + "y": -2.891204833984375 + }, + { + "x": 1.5313720703125, + "y": -0.577728271484375 + }, + { + "x": -3.21551513671875, + "y": 0.431488037109375 + }, + { + "x": -3.78192138671875, + "y": 0.750518798828125 + }, + { + "x": -4.626708984375, + "y": -1.119873046875 + }, + { + "x": -1.16339111328125, + "y": -2.71441650390625 + }, + { + "x": -0.7491455078125, + "y": -0.335906982421875 + }, + { + "x": 1.5076904296875, + "y": 0.455657958984375 + }, + { + "x": -2.03411865234375, + "y": -2.0657958984375 + }, + { + "x": -2.438720703125, + "y": 0.46710205078125 + }, + { + "x": -5.38909912109375, + "y": -1.637176513671875 + }, + { + "x": -3.69549560546875, + "y": 1.00909423828125 + }, + { + "x": -4.99725341796875, + "y": -0.480010986328125 + }, + { + "x": 3.434326171875, + "y": -1.47430419921875 + }, + { + "x": 0.23876953125, + "y": -5.573486328125 + }, + { + "x": -0.76806640625, + "y": 1.65728759765625 + }, + { + "x": 0.76837158203125, + "y": 1.3282470703125 + }, + { + "x": -0.7083740234375, + "y": -1.85260009765625 + }, + { + "x": -2.16851806640625, + "y": 1.217742919921875 + }, + { + "x": -0.44384765625, + "y": 1.45416259765625 + }, + { + "x": 0.82525634765625, + "y": 1.67333984375 + }, + { + "x": 4.23358154296875, + "y": -1.07757568359375 + }, + { + "x": 5.4720458984375, + "y": 2.960906982421875 + }, + { + "x": -1.61907958984375, + "y": 2.625518798828125 + }, + { + "x": -1.7958984375, + "y": -1.196441650390625 + }, + { + "x": 0.66827392578125, + "y": 1.619964599609375 + }, + { + "x": 0.8212890625, + "y": 3.1728515625 + }, + { + "x": 0.9688720703125, + "y": 6.9937744140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.00112340374740371, + "y": -0.10486552097269478, + "z": 0.42551995400907744 + }, + "rotation": { + "quaternion": { + "W": 0.9893283498445197, + "X": 0.08163062490792887, + "Y": -0.11661727276369778, + "Z": -0.031084867125630054 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img5.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img5.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 658.4905395507812, + "y": 107.50597381591797 + }, + { + "x": 721.48486328125, + "y": 106.16187286376953 + }, + { + "x": 779.6463012695312, + "y": 106.17109680175781 + }, + { + "x": 842.9149169921875, + "y": 104.1554946899414 + }, + { + "x": 897.6620483398438, + "y": 100.15550994873047 + }, + { + "x": 951.6285400390625, + "y": 105.61931610107422 + }, + { + "x": 1000.1746826171875, + "y": 103.27242279052734 + }, + { + "x": 660.3667602539062, + "y": 170.2178955078125 + }, + { + "x": 724.280517578125, + "y": 168.099365234375 + }, + { + "x": 786.2722778320312, + "y": 165.6949462890625 + }, + { + "x": 842.493896484375, + "y": 164.2239532470703 + }, + { + "x": 899.5811157226562, + "y": 162.76441955566406 + }, + { + "x": 948.7617797851562, + "y": 163.31430053710938 + }, + { + "x": 1002.6355590820312, + "y": 161.65872192382812 + }, + { + "x": 665.197265625, + "y": 234.18930053710938 + }, + { + "x": 727.6243286132812, + "y": 231.29811096191406 + }, + { + "x": 785.6425170898438, + "y": 229.23622131347656 + }, + { + "x": 843.833984375, + "y": 222.41220092773438 + }, + { + "x": 901.6704711914062, + "y": 218.75929260253906 + }, + { + "x": 953.4222412109375, + "y": 219.3240966796875 + }, + { + "x": 1000.9424438476562, + "y": 218.42787170410156 + }, + { + "x": 670.3162231445312, + "y": 299.5232238769531 + }, + { + "x": 728.4932250976562, + "y": 293.40289306640625 + }, + { + "x": 790.3441772460938, + "y": 288.27435302734375 + }, + { + "x": 846.748046875, + "y": 284.0056457519531 + }, + { + "x": 902.0874633789062, + "y": 282.3678894042969 + }, + { + "x": 951.8243408203125, + "y": 280.1921081542969 + }, + { + "x": 1003.5244750976562, + "y": 274.4207763671875 + }, + { + "x": 673.2110595703125, + "y": 356.3155212402344 + }, + { + "x": 733.9874877929688, + "y": 354.41680908203125 + }, + { + "x": 791.11865234375, + "y": 347.376708984375 + }, + { + "x": 849.518310546875, + "y": 345.11541748046875 + }, + { + "x": 901.2182006835938, + "y": 338.27392578125 + }, + { + "x": 955.685302734375, + "y": 335.0248107910156 + }, + { + "x": 998.9928588867188, + "y": 331.7190856933594 + }, + { + "x": 676.958251953125, + "y": 422.66998291015625 + }, + { + "x": 734.2830200195312, + "y": 410.0458984375 + }, + { + "x": 789.57177734375, + "y": 404.4788513183594 + }, + { + "x": 845.7024536132812, + "y": 402.6014709472656 + }, + { + "x": 900.641845703125, + "y": 394.3885498046875 + }, + { + "x": 951.354736328125, + "y": 388.91851806640625 + }, + { + "x": 1001.1490478515625, + "y": 384.44873046875 + }, + { + "x": 675.4929809570312, + "y": 475.4901123046875 + }, + { + "x": 730.5990600585938, + "y": 465.4403381347656 + }, + { + "x": 793.7318725585938, + "y": 459.71392822265625 + }, + { + "x": 848.01904296875, + "y": 458.16424560546875 + }, + { + "x": 898.8092651367188, + "y": 449.34326171875 + }, + { + "x": 950.03662109375, + "y": 442.7514343261719 + }, + { + "x": 1000.5696411132812, + "y": 433.5993957519531 + } + ], + "reprojectionErrors": [ + { + "x": 4.64263916015625, + "y": 0.6987457275390625 + }, + { + "x": 2.1336669921875, + "y": 0.30110931396484375 + }, + { + "x": 2.92840576171875, + "y": -1.4075088500976562 + }, + { + "x": -2.85235595703125, + "y": -1.0506515502929688 + }, + { + "x": -1.5223388671875, + "y": 1.3296356201171875 + }, + { + "x": -0.76751708984375, + "y": -5.716331481933594 + }, + { + "x": 4.1036376953125, + "y": -4.915519714355469 + }, + { + "x": 5.55908203125, + "y": 2.0927886962890625 + }, + { + "x": 1.49688720703125, + "y": 1.6702423095703125 + }, + { + "x": -2.14166259765625, + "y": 1.5968475341796875 + }, + { + "x": -1.44921875, + "y": 0.6507720947265625 + }, + { + "x": -3.005615234375, + "y": -0.248382568359375 + }, + { + "x": 2.0146484375, + "y": -3.100799560546875 + }, + { + "x": 1.0623779296875, + "y": -3.693756103515625 + }, + { + "x": 3.48565673828125, + "y": 0.9581298828125 + }, + { + "x": 0.293701171875, + "y": 0.5403289794921875 + }, + { + "x": 0.04205322265625, + "y": -0.6238250732421875 + }, + { + "x": -1.7940673828125, + "y": 3.0538787841796875 + }, + { + "x": -4.63177490234375, + "y": 3.6371002197265625 + }, + { + "x": -2.68975830078125, + "y": 0.0763397216796875 + }, + { + "x": 2.22808837890625, + "y": -1.95245361328125 + }, + { + "x": 1.08984375, + "y": -2.756744384765625 + }, + { + "x": 1.54815673828125, + "y": -0.68365478515625 + }, + { + "x": -3.1072998046875, + "y": 0.49920654296875 + }, + { + "x": -3.6998291015625, + "y": 0.919830322265625 + }, + { + "x": -4.5589599609375, + "y": -1.19659423828125 + }, + { + "x": -1.09625244140625, + "y": -2.684661865234375 + }, + { + "x": -0.829833984375, + "y": -0.490234375 + }, + { + "x": 0.8858642578125, + "y": 0.901275634765625 + }, + { + "x": -1.83892822265625, + "y": -1.9573974609375 + }, + { + "x": -2.3306884765625, + "y": 0.44439697265625 + }, + { + "x": -5.44891357421875, + "y": -1.818115234375 + }, + { + "x": -3.17376708984375, + "y": 0.609771728515625 + }, + { + "x": -4.92327880859375, + "y": -0.44866943359375 + }, + { + "x": 3.27587890625, + "y": -1.348388671875 + }, + { + "x": -0.20135498046875, + "y": -6.125 + }, + { + "x": -0.04266357421875, + "y": 1.05810546875 + }, + { + "x": 0.76641845703125, + "y": 1.31982421875 + }, + { + "x": -0.59912109375, + "y": -1.9776611328125 + }, + { + "x": -2.05596923828125, + "y": 1.186004638671875 + }, + { + "x": -0.52130126953125, + "y": 1.727691650390625 + }, + { + "x": 0.742431640625, + "y": 1.385650634765625 + }, + { + "x": 3.89453125, + "y": -0.694732666015625 + }, + { + "x": 5.7186279296875, + "y": 3.255615234375 + }, + { + "x": -1.8438720703125, + "y": 3.033905029296875 + }, + { + "x": -1.869140625, + "y": -1.218963623046875 + }, + { + "x": 0.3428955078125, + "y": 1.939666748046875 + }, + { + "x": 0.90472412109375, + "y": 3.004119873046875 + }, + { + "x": 0.9918212890625, + "y": 6.758941650390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -6.747260084550017E-4, + "y": -0.10533096697482158, + "z": 0.4281121487640643 + }, + "rotation": { + "quaternion": { + "W": 0.989800605706246, + "X": 0.08048488381083936, + "Y": -0.11306264407027887, + "Z": -0.0321524950406952 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img6.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img6.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 659.0302124023438, + "y": 107.86631774902344 + }, + { + "x": 721.8092651367188, + "y": 106.50900268554688 + }, + { + "x": 780.1903076171875, + "y": 106.80245208740234 + }, + { + "x": 843.31591796875, + "y": 104.54913330078125 + }, + { + "x": 898.4196166992188, + "y": 100.74739074707031 + }, + { + "x": 952.6558837890625, + "y": 107.05975341796875 + }, + { + "x": 1001.3839721679688, + "y": 104.01634216308594 + }, + { + "x": 661.1370849609375, + "y": 170.57232666015625 + }, + { + "x": 724.7479248046875, + "y": 168.60191345214844 + }, + { + "x": 786.8839721679688, + "y": 166.27682495117188 + }, + { + "x": 843.0725708007812, + "y": 164.6664276123047 + }, + { + "x": 900.0547485351562, + "y": 163.37559509277344 + }, + { + "x": 949.4993896484375, + "y": 163.60321044921875 + }, + { + "x": 1003.753173828125, + "y": 163.28443908691406 + }, + { + "x": 665.5471801757812, + "y": 234.43702697753906 + }, + { + "x": 728.6123657226562, + "y": 232.21139526367188 + }, + { + "x": 785.7056884765625, + "y": 229.8968048095703 + }, + { + "x": 843.921875, + "y": 222.83763122558594 + }, + { + "x": 901.898193359375, + "y": 219.40008544921875 + }, + { + "x": 954.1533813476562, + "y": 220.30430603027344 + }, + { + "x": 1001.384033203125, + "y": 219.206787109375 + }, + { + "x": 670.4830932617188, + "y": 299.90093994140625 + }, + { + "x": 728.6747436523438, + "y": 294.05291748046875 + }, + { + "x": 789.5534057617188, + "y": 288.170654296875 + }, + { + "x": 846.6863403320312, + "y": 284.7842102050781 + }, + { + "x": 902.4369506835938, + "y": 283.6290588378906 + }, + { + "x": 951.8510131835938, + "y": 281.5398864746094 + }, + { + "x": 1003.4081420898438, + "y": 275.36480712890625 + }, + { + "x": 673.3831787109375, + "y": 356.216796875 + }, + { + "x": 733.94140625, + "y": 354.5985412597656 + }, + { + "x": 790.810302734375, + "y": 348.0809631347656 + }, + { + "x": 849.3583984375, + "y": 345.6253967285156 + }, + { + "x": 901.3821411132812, + "y": 338.6204528808594 + }, + { + "x": 955.7484130859375, + "y": 336.13262939453125 + }, + { + "x": 998.7774658203125, + "y": 332.5841064453125 + }, + { + "x": 676.8338012695312, + "y": 423.3804931640625 + }, + { + "x": 733.715576171875, + "y": 411.1390380859375 + }, + { + "x": 789.460205078125, + "y": 405.1048278808594 + }, + { + "x": 845.869384765625, + "y": 402.06243896484375 + }, + { + "x": 901.0877685546875, + "y": 395.3795471191406 + }, + { + "x": 951.181884765625, + "y": 389.4006652832031 + }, + { + "x": 1001.4844360351562, + "y": 386.24444580078125 + }, + { + "x": 675.0328369140625, + "y": 475.6142883300781 + }, + { + "x": 729.9822387695312, + "y": 465.4416809082031 + }, + { + "x": 793.5932006835938, + "y": 459.7913818359375 + }, + { + "x": 847.9345703125, + "y": 458.7582702636719 + }, + { + "x": 898.3373413085938, + "y": 449.77398681640625 + }, + { + "x": 949.9735717773438, + "y": 443.3020935058594 + }, + { + "x": 1000.7283325195312, + "y": 433.6111755371094 + } + ], + "reprojectionErrors": [ + { + "x": 4.65869140625, + "y": 0.764312744140625 + }, + { + "x": 2.39794921875, + "y": 0.460113525390625 + }, + { + "x": 3.02239990234375, + "y": -1.454925537109375 + }, + { + "x": -2.55096435546875, + "y": -0.78485107421875 + }, + { + "x": -1.4990234375, + "y": 1.4704971313476562 + }, + { + "x": -0.92266845703125, + "y": -6.3528289794921875 + }, + { + "x": 3.86993408203125, + "y": -4.7863006591796875 + }, + { + "x": 5.19171142578125, + "y": 2.154144287109375 + }, + { + "x": 1.45648193359375, + "y": 1.67279052734375 + }, + { + "x": -2.28582763671875, + "y": 1.6064910888671875 + }, + { + "x": -1.5045166015625, + "y": 0.8835296630859375 + }, + { + "x": -2.8858642578125, + "y": -0.1031951904296875 + }, + { + "x": 1.95355224609375, + "y": -2.5546875 + }, + { + "x": 0.71649169921875, + "y": -4.40814208984375 + }, + { + "x": 3.3878173828125, + "y": 1.0938873291015625 + }, + { + "x": -0.4267578125, + "y": 0.1090850830078125 + }, + { + "x": 0.278564453125, + "y": -0.70709228515625 + }, + { + "x": -1.53460693359375, + "y": 3.2978973388671875 + }, + { + "x": -4.4503173828125, + "y": 3.754913330078125 + }, + { + "x": -2.9365234375, + "y": -0.0589447021484375 + }, + { + "x": 2.3582763671875, + "y": -1.8028106689453125 + }, + { + "x": 1.0260009765625, + "y": -2.804168701171875 + }, + { + "x": 1.47698974609375, + "y": -0.8953857421875 + }, + { + "x": -2.18218994140625, + "y": 1.14544677734375 + }, + { + "x": -3.46405029296875, + "y": 0.784576416015625 + }, + { + "x": -4.6802978515625, + "y": -1.71710205078125 + }, + { + "x": -0.82733154296875, + "y": -3.197601318359375 + }, + { + "x": -0.33795166015625, + "y": -0.508270263671875 + }, + { + "x": 0.66937255859375, + "y": 1.25738525390625 + }, + { + "x": -1.8377685546875, + "y": -1.76416015625 + }, + { + "x": -2.0509033203125, + "y": 0.228546142578125 + }, + { + "x": -5.2855224609375, + "y": -1.730194091796875 + }, + { + "x": -3.28765869140625, + "y": 0.966888427734375 + }, + { + "x": -4.876220703125, + "y": -0.750640869140625 + }, + { + "x": 3.674072265625, + "y": -1.308746337890625 + }, + { + "x": -0.2669677734375, + "y": -6.6695556640625 + }, + { + "x": 0.32666015625, + "y": 0.2581787109375 + }, + { + "x": 0.68878173828125, + "y": 1.109771728515625 + }, + { + "x": -0.9305419921875, + "y": -0.904296875 + }, + { + "x": -2.6270751953125, + "y": 0.8436279296875 + }, + { + "x": -0.42059326171875, + "y": 2.0045166015625 + }, + { + "x": 0.4005126953125, + "y": 0.455535888671875 + }, + { + "x": 4.02056884765625, + "y": -0.761932373046875 + }, + { + "x": 5.98602294921875, + "y": 3.448333740234375 + }, + { + "x": -2.0528564453125, + "y": 3.282623291015625 + }, + { + "x": -2.11474609375, + "y": -1.359405517578125 + }, + { + "x": 0.51715087890625, + "y": 2.085418701171875 + }, + { + "x": 0.7161865234375, + "y": 3.14862060546875 + }, + { + "x": 0.64044189453125, + "y": 7.556884765625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -4.5079719056964016E-4, + "y": -0.10518330183088974, + "z": 0.42820901842246784 + }, + "rotation": { + "quaternion": { + "W": 0.9898380759166767, + "X": 0.08224093677194955, + "Y": -0.11177055912563798, + "Z": -0.03105404799999117 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img7.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img7.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 656.4290161132812, + "y": 103.25554656982422 + }, + { + "x": 719.97314453125, + "y": 103.18120574951172 + }, + { + "x": 779.2750244140625, + "y": 104.06727600097656 + }, + { + "x": 843.1010131835938, + "y": 103.05892944335938 + }, + { + "x": 897.7703247070312, + "y": 100.46137237548828 + }, + { + "x": 952.0844116210938, + "y": 106.63220977783203 + }, + { + "x": 1000.5175170898438, + "y": 104.5345458984375 + }, + { + "x": 656.551513671875, + "y": 168.04336547851562 + }, + { + "x": 721.5264282226562, + "y": 166.95895385742188 + }, + { + "x": 784.9052734375, + "y": 165.18865966796875 + }, + { + "x": 841.804443359375, + "y": 164.0707244873047 + }, + { + "x": 898.7417602539062, + "y": 163.59771728515625 + }, + { + "x": 947.8585205078125, + "y": 165.16497802734375 + }, + { + "x": 1002.0918579101562, + "y": 164.2159881591797 + }, + { + "x": 659.9281005859375, + "y": 234.0309295654297 + }, + { + "x": 724.0411376953125, + "y": 231.51756286621094 + }, + { + "x": 782.8207397460938, + "y": 229.85313415527344 + }, + { + "x": 841.761962890625, + "y": 223.73248291015625 + }, + { + "x": 899.9014282226562, + "y": 220.75592041015625 + }, + { + "x": 951.3983764648438, + "y": 221.5890350341797 + }, + { + "x": 998.885009765625, + "y": 221.61026000976562 + }, + { + "x": 664.0188598632812, + "y": 300.68658447265625 + }, + { + "x": 723.6671752929688, + "y": 295.0819091796875 + }, + { + "x": 787.1454467773438, + "y": 290.9690856933594 + }, + { + "x": 843.6514282226562, + "y": 286.4581298828125 + }, + { + "x": 898.9561157226562, + "y": 285.2514343261719 + }, + { + "x": 948.8377685546875, + "y": 283.56280517578125 + }, + { + "x": 1000.4343872070312, + "y": 278.3253173828125 + }, + { + "x": 663.9579467773438, + "y": 361.1806945800781 + }, + { + "x": 728.3430786132812, + "y": 357.6171569824219 + }, + { + "x": 786.23779296875, + "y": 350.609130859375 + }, + { + "x": 844.7728271484375, + "y": 348.58282470703125 + }, + { + "x": 897.1482543945312, + "y": 342.15203857421875 + }, + { + "x": 950.8857421875, + "y": 338.6363525390625 + }, + { + "x": 994.6912841796875, + "y": 336.13800048828125 + }, + { + "x": 667.3988647460938, + "y": 424.84808349609375 + }, + { + "x": 727.991455078125, + "y": 414.00640869140625 + }, + { + "x": 781.4269409179688, + "y": 407.2624206542969 + }, + { + "x": 840.29296875, + "y": 406.9396667480469 + }, + { + "x": 895.39306640625, + "y": 399.061767578125 + }, + { + "x": 945.8047485351562, + "y": 394.29302978515625 + }, + { + "x": 994.7366333007812, + "y": 388.1190490722656 + }, + { + "x": 665.6796264648438, + "y": 481.9114990234375 + }, + { + "x": 724.1458129882812, + "y": 472.7333679199219 + }, + { + "x": 787.560302734375, + "y": 464.5548095703125 + }, + { + "x": 841.3297729492188, + "y": 463.89178466796875 + }, + { + "x": 891.9932250976562, + "y": 455.30303955078125 + }, + { + "x": 943.1828002929688, + "y": 447.5096435546875 + }, + { + "x": 993.7625122070312, + "y": 439.4223937988281 + } + ], + "reprojectionErrors": [ + { + "x": 3.61993408203125, + "y": 0.8014373779296875 + }, + { + "x": 1.90667724609375, + "y": 0.06098175048828125 + }, + { + "x": 2.5968017578125, + "y": -1.617034912109375 + }, + { + "x": -2.9913330078125, + "y": -1.37884521484375 + }, + { + "x": -1.09747314453125, + "y": 0.46936798095703125 + }, + { + "x": -0.44830322265625, + "y": -6.430938720703125 + }, + { + "x": 4.5523681640625, + "y": -5.0437469482421875 + }, + { + "x": 5.3123779296875, + "y": 2.205169677734375 + }, + { + "x": 1.44171142578125, + "y": 1.4917755126953125 + }, + { + "x": -2.62969970703125, + "y": 1.51715087890625 + }, + { + "x": -1.93646240234375, + "y": 0.9406585693359375 + }, + { + "x": -2.91949462890625, + "y": -0.2325286865234375 + }, + { + "x": 2.35235595703125, + "y": -3.39990234375 + }, + { + "x": 1.01007080078125, + "y": -4.006927490234375 + }, + { + "x": 3.73223876953125, + "y": 0.9107818603515625 + }, + { + "x": 0.01800537109375, + "y": 0.6873016357421875 + }, + { + "x": -0.1192626953125, + "y": -0.30413818359375 + }, + { + "x": -2.0955810546875, + "y": 3.23797607421875 + }, + { + "x": -4.873046875, + "y": 3.7099151611328125 + }, + { + "x": -2.54083251953125, + "y": 0.442840576171875 + }, + { + "x": 2.3350830078125, + "y": -1.9447174072265625 + }, + { + "x": 1.42034912109375, + "y": -2.48492431640625 + }, + { + "x": 1.48583984375, + "y": -0.5147705078125 + }, + { + "x": -3.99652099609375, + "y": 0.070770263671875 + }, + { + "x": -4.1478271484375, + "y": 1.15692138671875 + }, + { + "x": -4.6668701171875, + "y": -0.963226318359375 + }, + { + "x": -1.2640380859375, + "y": -2.507720947265625 + }, + { + "x": -1.01312255859375, + "y": -0.41363525390625 + }, + { + "x": 3.24371337890625, + "y": -1.0906982421875 + }, + { + "x": -2.09326171875, + "y": -2.020416259765625 + }, + { + "x": -2.62042236328125, + "y": 0.626190185546875 + }, + { + "x": -5.3944091796875, + "y": -1.58294677734375 + }, + { + "x": -3.5452880859375, + "y": 0.732940673828125 + }, + { + "x": -4.52874755859375, + "y": 0.24908447265625 + }, + { + "x": 3.01129150390625, + "y": -1.141632080078125 + }, + { + "x": 1.54962158203125, + "y": -4.1829833984375 + }, + { + "x": -0.64166259765625, + "y": 1.3433837890625 + }, + { + "x": 2.67926025390625, + "y": 2.9268798828125 + }, + { + "x": -1.00335693359375, + "y": -1.762786865234375 + }, + { + "x": -2.4251708984375, + "y": 1.244354248046875 + }, + { + "x": -0.59979248046875, + "y": 1.278045654296875 + }, + { + "x": 1.3245849609375, + "y": 2.846954345703125 + }, + { + "x": 5.00103759765625, + "y": -1.92926025390625 + }, + { + "x": 4.3072509765625, + "y": 1.146026611328125 + }, + { + "x": -2.94537353515625, + "y": 3.398162841796875 + }, + { + "x": -2.09368896484375, + "y": -1.696533203125 + }, + { + "x": 0.3890380859375, + "y": 1.29608154296875 + }, + { + "x": 0.93280029296875, + "y": 3.648101806640625 + }, + { + "x": 0.73223876953125, + "y": 6.442352294921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.0018594923662512144, + "y": -0.10373540465113196, + "z": 0.41504753112117665 + }, + "rotation": { + "quaternion": { + "W": 0.9870923368365478, + "X": 0.09071391765486524, + "Y": -0.12933484484105146, + "Z": -0.026309724669989088 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img8.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img8.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 646.5121459960938, + "y": 98.51638793945312 + }, + { + "x": 710.1950073242188, + "y": 97.44509887695312 + }, + { + "x": 769.3375854492188, + "y": 98.32972717285156 + }, + { + "x": 832.6422729492188, + "y": 96.33746337890625 + }, + { + "x": 887.9025268554688, + "y": 93.71321868896484 + }, + { + "x": 942.653564453125, + "y": 100.02608489990234 + }, + { + "x": 991.6659545898438, + "y": 96.5517807006836 + }, + { + "x": 647.4439697265625, + "y": 162.4167938232422 + }, + { + "x": 712.6796875, + "y": 161.25808715820312 + }, + { + "x": 775.757568359375, + "y": 159.0718994140625 + }, + { + "x": 832.6588745117188, + "y": 157.3375701904297 + }, + { + "x": 889.2986450195312, + "y": 156.31591796875 + }, + { + "x": 938.7859497070312, + "y": 157.6327362060547 + }, + { + "x": 992.4557495117188, + "y": 156.25119018554688 + }, + { + "x": 652.2096557617188, + "y": 228.2829132080078 + }, + { + "x": 715.4411010742188, + "y": 225.55555725097656 + }, + { + "x": 774.35986328125, + "y": 223.68563842773438 + }, + { + "x": 832.934814453125, + "y": 216.93792724609375 + }, + { + "x": 891.2646484375, + "y": 213.504638671875 + }, + { + "x": 942.6441650390625, + "y": 214.10215759277344 + }, + { + "x": 990.3410034179688, + "y": 213.5753173828125 + }, + { + "x": 656.2667236328125, + "y": 295.1857604980469 + }, + { + "x": 715.932373046875, + "y": 289.1539306640625 + }, + { + "x": 777.8558349609375, + "y": 283.69097900390625 + }, + { + "x": 835.5465698242188, + "y": 279.65631103515625 + }, + { + "x": 890.8950805664062, + "y": 278.4112854003906 + }, + { + "x": 940.70556640625, + "y": 276.59820556640625 + }, + { + "x": 991.9169311523438, + "y": 270.5467529296875 + }, + { + "x": 656.3001098632812, + "y": 356.2051696777344 + }, + { + "x": 721.3630981445312, + "y": 351.56866455078125 + }, + { + "x": 778.5617065429688, + "y": 344.5768127441406 + }, + { + "x": 837.3851928710938, + "y": 341.81768798828125 + }, + { + "x": 889.4412841796875, + "y": 335.1637268066406 + }, + { + "x": 942.8779296875, + "y": 330.89404296875 + }, + { + "x": 987.2864379882812, + "y": 328.40179443359375 + }, + { + "x": 660.444091796875, + "y": 418.97265625 + }, + { + "x": 721.8739624023438, + "y": 407.01470947265625 + }, + { + "x": 775.8263549804688, + "y": 401.9126281738281 + }, + { + "x": 833.2735595703125, + "y": 400.664306640625 + }, + { + "x": 889.0017700195312, + "y": 392.0362548828125 + }, + { + "x": 938.7332153320312, + "y": 387.09820556640625 + }, + { + "x": 988.2992553710938, + "y": 381.1974792480469 + }, + { + "x": 659.1714477539062, + "y": 476.8874816894531 + }, + { + "x": 718.0875854492188, + "y": 466.5321960449219 + }, + { + "x": 781.749267578125, + "y": 457.6161193847656 + }, + { + "x": 834.9252319335938, + "y": 457.2178649902344 + }, + { + "x": 885.7837524414062, + "y": 448.17767333984375 + }, + { + "x": 937.2545166015625, + "y": 440.18792724609375 + }, + { + "x": 988.2425537109375, + "y": 431.0841979980469 + } + ], + "reprojectionErrors": [ + { + "x": 3.70379638671875, + "y": 0.2553558349609375 + }, + { + "x": 1.8173828125, + "y": 0.09600067138671875 + }, + { + "x": 2.6400146484375, + "y": -1.9843673706054688 + }, + { + "x": -2.44659423828125, + "y": -1.1545486450195312 + }, + { + "x": -1.15704345703125, + "y": 0.33905029296875 + }, + { + "x": -0.95233154296875, + "y": -7.074089050292969 + }, + { + "x": 3.4669189453125, + "y": -4.671012878417969 + }, + { + "x": 5.24969482421875, + "y": 2.4285430908203125 + }, + { + "x": 1.08648681640625, + "y": 1.3833160400390625 + }, + { + "x": -2.70867919921875, + "y": 1.4300079345703125 + }, + { + "x": -2.035888671875, + "y": 1.0863494873046875 + }, + { + "x": -2.73370361328125, + "y": 0.088775634765625 + }, + { + "x": 2.1607666015625, + "y": -3.19110107421875 + }, + { + "x": 1.38018798828125, + "y": -3.7188720703125 + }, + { + "x": 2.92852783203125, + "y": 1.165069580078125 + }, + { + "x": 0.066650390625, + "y": 0.7581024169921875 + }, + { + "x": -0.2325439453125, + "y": -0.41424560546875 + }, + { + "x": -1.859375, + "y": 3.379119873046875 + }, + { + "x": -4.8385009765625, + "y": 3.9420928955078125 + }, + { + "x": -2.39501953125, + "y": 0.55462646484375 + }, + { + "x": 2.26904296875, + "y": -1.6315765380859375 + }, + { + "x": 1.28436279296875, + "y": -2.542694091796875 + }, + { + "x": 1.30560302734375, + "y": -0.53521728515625 + }, + { + "x": -2.64276123046875, + "y": 1.021270751953125 + }, + { + "x": -3.99420166015625, + "y": 1.26214599609375 + }, + { + "x": -4.5673828125, + "y": -1.178863525390625 + }, + { + "x": -1.0989990234375, + "y": -2.948760986328125 + }, + { + "x": -0.46417236328125, + "y": -0.381561279296875 + }, + { + "x": 3.63385009765625, + "y": -1.714630126953125 + }, + { + "x": -2.405517578125, + "y": -1.95452880859375 + }, + { + "x": -2.25567626953125, + "y": 0.303070068359375 + }, + { + "x": -5.33203125, + "y": -1.53619384765625 + }, + { + "x": -3.17291259765625, + "y": 0.64935302734375 + }, + { + "x": -3.86065673828125, + "y": 0.575042724609375 + }, + { + "x": 3.07537841796875, + "y": -1.157501220703125 + }, + { + "x": 1.84429931640625, + "y": -3.9254150390625 + }, + { + "x": -1.2066650390625, + "y": 2.33990478515625 + }, + { + "x": 1.5799560546875, + "y": 1.914215087890625 + }, + { + "x": -0.69647216796875, + "y": -2.207611083984375 + }, + { + "x": -2.75482177734375, + "y": 1.201171875 + }, + { + "x": -0.253662109375, + "y": 1.064453125 + }, + { + "x": 1.03582763671875, + "y": 2.028839111328125 + }, + { + "x": 5.4442138671875, + "y": -2.520477294921875 + }, + { + "x": 4.2801513671875, + "y": 1.359771728515625 + }, + { + "x": -3.2353515625, + "y": 3.986907958984375 + }, + { + "x": -1.8016357421875, + "y": -1.7257080078125 + }, + { + "x": 0.478515625, + "y": 1.374114990234375 + }, + { + "x": 0.73724365234375, + "y": 3.58685302734375 + }, + { + "x": 0.12786865234375, + "y": 7.0701904296875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.005716444498320361, + "y": -0.10605802522101357, + "z": 0.4160669752112588 + }, + "rotation": { + "quaternion": { + "W": 0.9871363386396291, + "X": 0.08871081265411022, + "Y": -0.12947746538562205, + "Z": -0.03046024643219297 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img9.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img9.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 946.207763671875, + "y": 99.01875305175781 + }, + { + "x": 946.6198120117188, + "y": 172.02645874023438 + }, + { + "x": 940.7496948242188, + "y": 235.05477905273438 + }, + { + "x": 940.78515625, + "y": 300.04779052734375 + }, + { + "x": 935.1778564453125, + "y": 364.5578308105469 + }, + { + "x": 937.6068115234375, + "y": 427.1475830078125 + }, + { + "x": 936.5850219726562, + "y": 477.2730712890625 + }, + { + "x": 884.9432983398438, + "y": 104.35665130615234 + }, + { + "x": 878.4135131835938, + "y": 171.13829040527344 + }, + { + "x": 884.056640625, + "y": 236.55508422851562 + }, + { + "x": 878.6900024414062, + "y": 307.2449951171875 + }, + { + "x": 882.2796020507812, + "y": 369.8539123535156 + }, + { + "x": 880.6657104492188, + "y": 423.3768310546875 + }, + { + "x": 882.82470703125, + "y": 495.2821350097656 + }, + { + "x": 817.5416870117188, + "y": 98.48193359375 + }, + { + "x": 818.6846923828125, + "y": 169.30947875976562 + }, + { + "x": 819.8985595703125, + "y": 234.9416046142578 + }, + { + "x": 819.4581298828125, + "y": 309.4433898925781 + }, + { + "x": 817.9030151367188, + "y": 370.9263610839844 + }, + { + "x": 810.4452514648438, + "y": 430.79412841796875 + }, + { + "x": 818.3552856445312, + "y": 489.2833251953125 + }, + { + "x": 751.22607421875, + "y": 101.19231414794922 + }, + { + "x": 751.1372680664062, + "y": 169.75921630859375 + }, + { + "x": 750.0969848632812, + "y": 239.16477966308594 + }, + { + "x": 752.5874633789062, + "y": 309.7975158691406 + }, + { + "x": 754.7255859375, + "y": 379.55853271484375 + }, + { + "x": 748.1134033203125, + "y": 446.8938903808594 + }, + { + "x": 744.4033813476562, + "y": 495.2512512207031 + }, + { + "x": 675.3875122070312, + "y": 104.18241119384766 + }, + { + "x": 682.1005859375, + "y": 173.156982421875 + }, + { + "x": 680.2672119140625, + "y": 246.2686309814453 + }, + { + "x": 684.78759765625, + "y": 314.524169921875 + }, + { + "x": 685.5286254882812, + "y": 380.91680908203125 + }, + { + "x": 686.5208129882812, + "y": 448.13323974609375 + }, + { + "x": 691.3524780273438, + "y": 503.6986389160156 + }, + { + "x": 605.2114868164062, + "y": 104.05706787109375 + }, + { + "x": 607.9021606445312, + "y": 176.18650817871094 + }, + { + "x": 611.5086669921875, + "y": 249.28158569335938 + }, + { + "x": 612.8202514648438, + "y": 318.6751403808594 + }, + { + "x": 618.8828125, + "y": 389.19110107421875 + }, + { + "x": 618.4283447265625, + "y": 452.0986328125 + }, + { + "x": 613.556884765625, + "y": 511.5353698730469 + }, + { + "x": 532.3162231445312, + "y": 105.54753875732422 + }, + { + "x": 534.0033569335938, + "y": 179.6163787841797 + }, + { + "x": 538.5432739257812, + "y": 251.60472106933594 + }, + { + "x": 540.0592041015625, + "y": 324.3968200683594 + }, + { + "x": 540.8088989257812, + "y": 396.15679931640625 + }, + { + "x": 550.0139770507812, + "y": 462.1116638183594 + }, + { + "x": 549.7811889648438, + "y": 523.456298828125 + } + ], + "reprojectionErrors": [ + { + "x": 4.21807861328125, + "y": -4.6162872314453125 + }, + { + "x": 0.77227783203125, + "y": -7.093505859375 + }, + { + "x": 3.7164306640625, + "y": -1.8558807373046875 + }, + { + "x": 0.8575439453125, + "y": -0.73583984375 + }, + { + "x": 3.739013671875, + "y": -1.18133544921875 + }, + { + "x": -1.3228759765625, + "y": -1.6572265625 + }, + { + "x": -2.84539794921875, + "y": 8.47210693359375 + }, + { + "x": -0.3214111328125, + "y": -8.196647644042969 + }, + { + "x": 4.2283935546875, + "y": -3.71234130859375 + }, + { + "x": -3.32135009765625, + "y": -0.175689697265625 + }, + { + "x": 0.20843505859375, + "y": -4.109527587890625 + }, + { + "x": -5.1517333984375, + "y": -2.052093505859375 + }, + { + "x": -5.2452392578125, + "y": 7.102325439453125 + }, + { + "x": -9.05145263671875, + "y": -4.020294189453125 + }, + { + "x": -0.15911865234375, + "y": -0.52508544921875 + }, + { + "x": -2.18133544921875, + "y": 0.6704559326171875 + }, + { + "x": -4.23779296875, + "y": 4.6989898681640625 + }, + { + "x": -4.605224609375, + "y": -2.385711669921875 + }, + { + "x": -3.82489013671875, + "y": 1.415771484375 + }, + { + "x": 2.88958740234375, + "y": 4.803741455078125 + }, + { + "x": -5.73382568359375, + "y": 7.638641357421875 + }, + { + "x": -2.5850830078125, + "y": -1.3974838256835938 + }, + { + "x": -2.2247314453125, + "y": 2.8383941650390625 + }, + { + "x": -0.91552734375, + "y": 3.82122802734375 + }, + { + "x": -3.1396484375, + "y": 1.285186767578125 + }, + { + "x": -5.01385498046875, + "y": -2.556243896484375 + }, + { + "x": 1.86004638671875, + "y": -6.042083740234375 + }, + { + "x": 5.82958984375, + "y": 7.480133056640625 + }, + { + "x": 2.93902587890625, + "y": -2.5065383911132812 + }, + { + "x": -2.29852294921875, + "y": 2.1248779296875 + }, + { + "x": 0.9656982421875, + "y": 0.1506805419921875 + }, + { + "x": -2.16619873046875, + "y": 0.690887451171875 + }, + { + "x": -1.55889892578125, + "y": 0.870513916015625 + }, + { + "x": -1.240966796875, + "y": -1.8865966796875 + }, + { + "x": -4.79888916015625, + "y": 4.99755859375 + }, + { + "x": 1.15283203125, + "y": -0.4550628662109375 + }, + { + "x": 1.1982421875, + "y": 1.84918212890625 + }, + { + "x": 0.23828125, + "y": 0.662841796875 + }, + { + "x": 1.4884033203125, + "y": 0.7841796875 + }, + { + "x": -2.09307861328125, + "y": -2.488494873046875 + }, + { + "x": 0.76605224609375, + "y": -0.31036376953125 + }, + { + "x": 7.9693603515625, + "y": 3.287506103515625 + }, + { + "x": 0.35870361328125, + "y": 0.02785491943359375 + }, + { + "x": 2.72869873046875, + "y": 1.2459564208984375 + }, + { + "x": 2.1082763671875, + "y": 1.960784912109375 + }, + { + "x": 4.3814697265625, + "y": -0.5762939453125 + }, + { + "x": 7.29718017578125, + "y": -4.403045654296875 + }, + { + "x": 1.64019775390625, + "y": -4.628662109375 + }, + { + "x": 5.3095703125, + "y": -2.33807373046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.10462986828115049, + "y": -0.10076626268406864, + "z": 0.3890367771094145 + }, + "rotation": { + "quaternion": { + "W": 0.715118460943599, + "X": 0.025868065683505897, + "Y": -0.1524920812268536, + "Z": 0.6816763125989892 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img10.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img10.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 942.6546020507812, + "y": 92.7076416015625 + }, + { + "x": 943.679443359375, + "y": 165.14779663085938 + }, + { + "x": 938.3095092773438, + "y": 228.01275634765625 + }, + { + "x": 938.9121704101562, + "y": 293.0638427734375 + }, + { + "x": 933.634033203125, + "y": 357.4891662597656 + }, + { + "x": 936.2659912109375, + "y": 419.7618103027344 + }, + { + "x": 936.33349609375, + "y": 469.9372253417969 + }, + { + "x": 882.1268310546875, + "y": 98.12385559082031 + }, + { + "x": 875.9039306640625, + "y": 164.1741180419922 + }, + { + "x": 881.9727172851562, + "y": 229.6932830810547 + }, + { + "x": 876.8917236328125, + "y": 300.32830810546875 + }, + { + "x": 880.6557006835938, + "y": 362.43878173828125 + }, + { + "x": 879.0838012695312, + "y": 416.89239501953125 + }, + { + "x": 880.7915649414062, + "y": 487.7456359863281 + }, + { + "x": 814.888916015625, + "y": 92.0630111694336 + }, + { + "x": 816.3084716796875, + "y": 162.69046020507812 + }, + { + "x": 817.8878784179688, + "y": 227.9893798828125 + }, + { + "x": 817.6239624023438, + "y": 302.38671875 + }, + { + "x": 816.3504638671875, + "y": 364.13995361328125 + }, + { + "x": 810.598876953125, + "y": 424.79705810546875 + }, + { + "x": 817.771484375, + "y": 482.1329345703125 + }, + { + "x": 748.6686401367188, + "y": 95.18573760986328 + }, + { + "x": 748.6986694335938, + "y": 163.54745483398438 + }, + { + "x": 748.2830810546875, + "y": 232.3549346923828 + }, + { + "x": 751.2311401367188, + "y": 302.8258056640625 + }, + { + "x": 753.7683715820312, + "y": 372.6038818359375 + }, + { + "x": 748.6973876953125, + "y": 438.0223693847656 + }, + { + "x": 744.0572509765625, + "y": 488.6024169921875 + }, + { + "x": 673.2219848632812, + "y": 98.20146942138672 + }, + { + "x": 679.8723754882812, + "y": 166.85357666015625 + }, + { + "x": 678.6829223632812, + "y": 239.85916137695312 + }, + { + "x": 683.4249877929688, + "y": 307.5685119628906 + }, + { + "x": 684.4801635742188, + "y": 374.2898864746094 + }, + { + "x": 685.3482666015625, + "y": 440.8270568847656 + }, + { + "x": 690.5294189453125, + "y": 497.6004638671875 + }, + { + "x": 603.139892578125, + "y": 98.16413879394531 + }, + { + "x": 606.3905029296875, + "y": 169.8169403076172 + }, + { + "x": 610.3863525390625, + "y": 242.96534729003906 + }, + { + "x": 611.9223022460938, + "y": 312.2185363769531 + }, + { + "x": 618.4833374023438, + "y": 382.5881652832031 + }, + { + "x": 618.5633544921875, + "y": 444.7194519042969 + }, + { + "x": 614.2765502929688, + "y": 505.3842468261719 + }, + { + "x": 530.4779663085938, + "y": 100.38809967041016 + }, + { + "x": 532.55908203125, + "y": 173.5857391357422 + }, + { + "x": 537.408203125, + "y": 245.5412139892578 + }, + { + "x": 538.8276977539062, + "y": 317.5523986816406 + }, + { + "x": 540.9039306640625, + "y": 389.37982177734375 + }, + { + "x": 550.1659545898438, + "y": 455.9255065917969 + }, + { + "x": 549.3875732421875, + "y": 517.6332397460938 + } + ], + "reprojectionErrors": [ + { + "x": 4.24725341796875, + "y": -5.012992858886719 + }, + { + "x": 0.68804931640625, + "y": -7.14898681640625 + }, + { + "x": 3.61297607421875, + "y": -1.9026336669921875 + }, + { + "x": 0.65032958984375, + "y": -0.92999267578125 + }, + { + "x": 3.6495361328125, + "y": -1.320526123046875 + }, + { + "x": -1.18402099609375, + "y": -1.454742431640625 + }, + { + "x": -3.37933349609375, + "y": 8.69879150390625 + }, + { + "x": -0.74908447265625, + "y": -8.506904602050781 + }, + { + "x": 3.9627685546875, + "y": -3.53155517578125 + }, + { + "x": -3.5604248046875, + "y": -0.2637481689453125 + }, + { + "x": 0.1199951171875, + "y": -4.241912841796875 + }, + { + "x": -4.9931640625, + "y": -1.723968505859375 + }, + { + "x": -4.7215576171875, + "y": 6.517669677734375 + }, + { + "x": -7.68292236328125, + "y": -3.48406982421875 + }, + { + "x": -0.44525146484375, + "y": -0.48262786865234375 + }, + { + "x": -2.3076171875, + "y": 0.6580963134765625 + }, + { + "x": -4.30804443359375, + "y": 4.841064453125 + }, + { + "x": -4.4444580078125, + "y": -2.2486572265625 + }, + { + "x": -3.5516357421875, + "y": 1.236175537109375 + }, + { + "x": 1.838134765625, + "y": 3.8458251953125 + }, + { + "x": -5.67840576171875, + "y": 7.897430419921875 + }, + { + "x": -2.63421630859375, + "y": -1.598876953125 + }, + { + "x": -1.990966796875, + "y": 2.5720977783203125 + }, + { + "x": -0.9176025390625, + "y": 3.961456298828125 + }, + { + "x": -3.2225341796875, + "y": 1.467193603515625 + }, + { + "x": -5.130615234375, + "y": -2.44647216796875 + }, + { + "x": 0.5562744140625, + "y": -4.011505126953125 + }, + { + "x": 5.7996826171875, + "y": 7.34576416015625 + }, + { + "x": 2.85919189453125, + "y": -2.5630874633789062 + }, + { + "x": -1.9510498046875, + "y": 2.104888916015625 + }, + { + "x": 1.0233154296875, + "y": 0.0319366455078125 + }, + { + "x": -1.9862060546875, + "y": 0.98712158203125 + }, + { + "x": -1.358642578125, + "y": 0.773773193359375 + }, + { + "x": -0.5914306640625, + "y": -1.3074951171875 + }, + { + "x": -4.182373046875, + "y": 4.420623779296875 + }, + { + "x": 1.37109375, + "y": -0.42705535888671875 + }, + { + "x": 1.18157958984375, + "y": 2.05145263671875 + }, + { + "x": 0.149169921875, + "y": 0.5931396484375 + }, + { + "x": 1.48406982421875, + "y": 0.712188720703125 + }, + { + "x": -2.29425048828125, + "y": -2.487884521484375 + }, + { + "x": 0.32476806640625, + "y": 0.45550537109375 + }, + { + "x": 7.23089599609375, + "y": 2.871246337890625 + }, + { + "x": 0.76861572265625, + "y": -0.5028762817382812 + }, + { + "x": 3.02716064453125, + "y": 1.266876220703125 + }, + { + "x": 2.374755859375, + "y": 1.7815093994140625 + }, + { + "x": 5.01629638671875, + "y": -0.1292724609375 + }, + { + "x": 6.87225341796875, + "y": -4.10693359375 + }, + { + "x": 1.41986083984375, + "y": -4.9422607421875 + }, + { + "x": 5.89141845703125, + "y": -2.97509765625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.10386665185637835, + "y": -0.103747259024668, + "z": 0.3910233930990132 + }, + "rotation": { + "quaternion": { + "W": 0.7168090667335655, + "X": 0.02386847597163116, + "Y": -0.14970247108785664, + "Z": 0.6805910871099738 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img11.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img11.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 527.5503540039062, + "y": 100.13683319091797 + }, + { + "x": 600.5284423828125, + "y": 97.74968719482422 + }, + { + "x": 670.562255859375, + "y": 97.40055847167969 + }, + { + "x": 746.5757446289062, + "y": 94.39875030517578 + }, + { + "x": 812.5697021484375, + "y": 90.7984848022461 + }, + { + "x": 880.1506958007812, + "y": 97.1112289428711 + }, + { + "x": 940.6815185546875, + "y": 91.56099700927734 + }, + { + "x": 529.7739868164062, + "y": 173.34388732910156 + }, + { + "x": 603.6747436523438, + "y": 169.79505920410156 + }, + { + "x": 677.7255859375, + "y": 166.34767150878906 + }, + { + "x": 746.5302734375, + "y": 162.5240478515625 + }, + { + "x": 814.4489135742188, + "y": 162.17823791503906 + }, + { + "x": 873.802734375, + "y": 163.30418395996094 + }, + { + "x": 941.7398071289062, + "y": 163.3748016357422 + }, + { + "x": 534.5848999023438, + "y": 245.55844116210938 + }, + { + "x": 607.6886596679688, + "y": 242.58480834960938 + }, + { + "x": 676.3692626953125, + "y": 239.4359588623047 + }, + { + "x": 746.2383422851562, + "y": 231.75816345214844 + }, + { + "x": 816.1270141601562, + "y": 227.12985229492188 + }, + { + "x": 880.0003051757812, + "y": 228.4694366455078 + }, + { + "x": 936.8159790039062, + "y": 226.6143035888672 + }, + { + "x": 536.87646484375, + "y": 317.92633056640625 + }, + { + "x": 609.7145385742188, + "y": 312.2393493652344 + }, + { + "x": 681.32861328125, + "y": 307.2159729003906 + }, + { + "x": 749.2774658203125, + "y": 302.38916015625 + }, + { + "x": 815.9434814453125, + "y": 301.4820556640625 + }, + { + "x": 875.8794555664062, + "y": 298.66229248046875 + }, + { + "x": 938.3027954101562, + "y": 291.60302734375 + }, + { + "x": 539.2127685546875, + "y": 389.25408935546875 + }, + { + "x": 616.806396484375, + "y": 382.7639465332031 + }, + { + "x": 682.9942016601562, + "y": 373.9096374511719 + }, + { + "x": 752.3821411132812, + "y": 372.4508361816406 + }, + { + "x": 814.9896240234375, + "y": 363.3994140625 + }, + { + "x": 879.745849609375, + "y": 361.8006286621094 + }, + { + "x": 932.375, + "y": 356.5224914550781 + }, + { + "x": 548.2303466796875, + "y": 456.0887756347656 + }, + { + "x": 616.88427734375, + "y": 444.76611328125 + }, + { + "x": 683.8194580078125, + "y": 440.7322998046875 + }, + { + "x": 748.0760498046875, + "y": 436.2701416015625 + }, + { + "x": 809.671142578125, + "y": 424.5341491699219 + }, + { + "x": 877.8196411132812, + "y": 416.4991455078125 + }, + { + "x": 934.761474609375, + "y": 418.6030578613281 + }, + { + "x": 548.566162109375, + "y": 517.013671875 + }, + { + "x": 613.0482177734375, + "y": 505.5699157714844 + }, + { + "x": 688.9669189453125, + "y": 497.87890625 + }, + { + "x": 742.88671875, + "y": 488.6910400390625 + }, + { + "x": 817.08154296875, + "y": 481.2831726074219 + }, + { + "x": 880.6072998046875, + "y": 486.97869873046875 + }, + { + "x": 934.2093505859375, + "y": 469.7176208496094 + } + ], + "reprojectionErrors": [ + { + "x": 0.80413818359375, + "y": -0.4585113525390625 + }, + { + "x": 1.281005859375, + "y": -0.45633697509765625 + }, + { + "x": 3.0137939453125, + "y": -2.4374008178710938 + }, + { + "x": -2.85906982421875, + "y": -1.7130279541015625 + }, + { + "x": -0.27886962890625, + "y": -0.3393707275390625 + }, + { + "x": -0.79547119140625, + "y": -8.829727172851562 + }, + { + "x": 4.28216552734375, + "y": -5.409873962402344 + }, + { + "x": 3.1851806640625, + "y": 1.4253997802734375 + }, + { + "x": 1.43096923828125, + "y": 1.7694091796875 + }, + { + "x": -2.103515625, + "y": 2.0860748291015625 + }, + { + "x": -1.96258544921875, + "y": 2.8503875732421875 + }, + { + "x": -2.44976806640625, + "y": 0.2057037353515625 + }, + { + "x": 4.16754150390625, + "y": -3.844329833984375 + }, + { + "x": 0.792724609375, + "y": -6.774993896484375 + }, + { + "x": 2.82904052734375, + "y": 1.7617034912109375 + }, + { + "x": 0.61529541015625, + "y": 0.7665252685546875 + }, + { + "x": 1.24951171875, + "y": 0.03802490234375 + }, + { + "x": -0.8233642578125, + "y": 3.926666259765625 + }, + { + "x": -4.38055419921875, + "y": 4.850921630859375 + }, + { + "x": -3.33575439453125, + "y": -0.110626220703125 + }, + { + "x": 3.40234375, + "y": -1.7981719970703125 + }, + { + "x": 4.8509521484375, + "y": -0.44970703125 + }, + { + "x": 1.69525146484375, + "y": 0.555694580078125 + }, + { + "x": -1.7596435546875, + "y": 1.004638671875 + }, + { + "x": -3.0185546875, + "y": 1.3603515625 + }, + { + "x": -4.41259765625, + "y": -2.1038818359375 + }, + { + "x": -0.4454345703125, + "y": -3.55914306640625 + }, + { + "x": -0.28765869140625, + "y": -0.681854248046875 + }, + { + "x": 6.69482421875, + "y": -3.8804931640625 + }, + { + "x": -2.3779296875, + "y": -2.737518310546875 + }, + { + "x": -1.518798828125, + "y": 0.890869140625 + }, + { + "x": -5.2823486328125, + "y": -2.75927734375 + }, + { + "x": -3.63897705078125, + "y": 1.29620361328125 + }, + { + "x": -5.470947265625, + "y": -1.99176025390625 + }, + { + "x": 3.54217529296875, + "y": -1.494903564453125 + }, + { + "x": 1.73162841796875, + "y": -4.95245361328125 + }, + { + "x": 0.48065185546875, + "y": 0.400848388671875 + }, + { + "x": -0.4788818359375, + "y": -1.400787353515625 + }, + { + "x": -0.13800048828125, + "y": -2.644744873046875 + }, + { + "x": 1.532958984375, + "y": 3.510101318359375 + }, + { + "x": -4.635986328125, + "y": 6.08477783203125 + }, + { + "x": -0.84210205078125, + "y": -1.362701416015625 + }, + { + "x": 5.33123779296875, + "y": -2.13262939453125 + }, + { + "x": 7.1754150390625, + "y": 2.759552001953125 + }, + { + "x": -3.800048828125, + "y": 4.044342041015625 + }, + { + "x": 5.88720703125, + "y": 6.96649169921875 + }, + { + "x": -5.9918212890625, + "y": 8.244415283203125 + }, + { + "x": -8.4503173828125, + "y": -3.44976806640625 + }, + { + "x": -2.19256591796875, + "y": 7.939697265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.04683956885240019, + "y": -0.09261451814948896, + "z": 0.3645470980932064 + }, + "rotation": { + "quaternion": { + "W": 0.988029508359184, + "X": 0.12338226303573842, + "Y": -0.08855550422430267, + "Z": -0.02706345231615036 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img12.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img12.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1087.8837890625, + "y": 259.2281188964844 + }, + { + "x": 1084.24462890625, + "y": 318.4633483886719 + }, + { + "x": 1078.7216796875, + "y": 371.4309387207031 + }, + { + "x": 1075.303955078125, + "y": 425.08001708984375 + }, + { + "x": 1068.8031005859375, + "y": 475.9058837890625 + }, + { + "x": 1067.8909912109375, + "y": 528.0593872070312 + }, + { + "x": 1063.3104248046875, + "y": 566.1672973632812 + }, + { + "x": 1037.3759765625, + "y": 264.7723693847656 + }, + { + "x": 1031.2232666015625, + "y": 319.2850646972656 + }, + { + "x": 1028.816162109375, + "y": 371.8333740234375 + }, + { + "x": 1028.848876953125, + "y": 425.8456726074219 + }, + { + "x": 1025.7025146484375, + "y": 481.6943054199219 + }, + { + "x": 1014.1476440429688, + "y": 530.4426879882812 + }, + { + "x": 1011.7939453125, + "y": 574.6240844726562 + }, + { + "x": 983.8506469726562, + "y": 259.86688232421875 + }, + { + "x": 981.2911376953125, + "y": 319.8439025878906 + }, + { + "x": 981.0308227539062, + "y": 371.7773132324219 + }, + { + "x": 975.568115234375, + "y": 431.6952209472656 + }, + { + "x": 973.5084838867188, + "y": 482.09490966796875 + }, + { + "x": 974.2977294921875, + "y": 538.5935668945312 + }, + { + "x": 963.7950439453125, + "y": 579.3779296875 + }, + { + "x": 928.4328002929688, + "y": 263.876708984375 + }, + { + "x": 929.7098388671875, + "y": 317.88519287109375 + }, + { + "x": 921.7416381835938, + "y": 375.62841796875 + }, + { + "x": 923.2489624023438, + "y": 433.0418701171875 + }, + { + "x": 921.2958374023438, + "y": 487.5155944824219 + }, + { + "x": 915.7754516601562, + "y": 539.3065795898438 + }, + { + "x": 915.8117065429688, + "y": 590.673095703125 + }, + { + "x": 868.6995239257812, + "y": 265.4815368652344 + }, + { + "x": 871.1924438476562, + "y": 323.72259521484375 + }, + { + "x": 866.4617309570312, + "y": 384.0296325683594 + }, + { + "x": 866.8450317382812, + "y": 435.35260009765625 + }, + { + "x": 864.7850341796875, + "y": 491.1239318847656 + }, + { + "x": 858.3602905273438, + "y": 537.00830078125 + }, + { + "x": 859.5198364257812, + "y": 591.7149047851562 + }, + { + "x": 808.113525390625, + "y": 264.6239929199219 + }, + { + "x": 809.0635375976562, + "y": 327.0879211425781 + }, + { + "x": 811.531494140625, + "y": 384.1365051269531 + }, + { + "x": 809.5941772460938, + "y": 441.2931213378906 + }, + { + "x": 811.8073120117188, + "y": 494.2957458496094 + }, + { + "x": 809.9161376953125, + "y": 543.7588500976562 + }, + { + "x": 807.1797485351562, + "y": 593.72265625 + }, + { + "x": 751.0779418945312, + "y": 266.4367980957031 + }, + { + "x": 749.8283081054688, + "y": 326.3887023925781 + }, + { + "x": 751.9352416992188, + "y": 386.5013732910156 + }, + { + "x": 754.3387451171875, + "y": 445.0873718261719 + }, + { + "x": 752.6787719726562, + "y": 496.8854675292969 + }, + { + "x": 756.8438110351562, + "y": 552.522216796875 + }, + { + "x": 752.5546875, + "y": 595.9571533203125 + } + ], + "reprojectionErrors": [ + { + "x": 3.2445068359375, + "y": -1.2122802734375 + }, + { + "x": 2.177978515625, + "y": -4.151397705078125 + }, + { + "x": 3.1265869140625, + "y": -2.266754150390625 + }, + { + "x": 2.09619140625, + "y": -2.4495849609375 + }, + { + "x": 4.2701416015625, + "y": -1.140411376953125 + }, + { + "x": 0.9716796875, + "y": -2.43817138671875 + }, + { + "x": 1.453857421875, + "y": 9.07977294921875 + }, + { + "x": -0.2166748046875, + "y": -4.72857666015625 + }, + { + "x": 1.9051513671875, + "y": -2.5682373046875 + }, + { + "x": 0.3951416015625, + "y": 0.092681884765625 + }, + { + "x": -3.4454345703125, + "y": -0.1151123046875 + }, + { + "x": -4.00177001953125, + "y": -3.50811767578125 + }, + { + "x": 3.951171875, + "y": -1.09674072265625 + }, + { + "x": 2.79998779296875, + "y": 4.63604736328125 + }, + { + "x": -1.41534423828125, + "y": 2.245880126953125 + }, + { + "x": -2.192626953125, + "y": -0.67218017578125 + }, + { + "x": -5.1734619140625, + "y": 2.968994140625 + }, + { + "x": -2.86016845703125, + "y": -2.798370361328125 + }, + { + "x": -3.86181640625, + "y": -0.414581298828125 + }, + { + "x": -7.62774658203125, + "y": -5.44268798828125 + }, + { + "x": -0.02032470703125, + "y": 3.981689453125 + }, + { + "x": -1.5054931640625, + "y": 0.34747314453125 + }, + { + "x": -5.4046630859375, + "y": 3.7930908203125 + }, + { + "x": 0.0179443359375, + "y": 1.9984130859375 + }, + { + "x": -3.9615478515625, + "y": -0.910491943359375 + }, + { + "x": -4.41009521484375, + "y": -2.26544189453125 + }, + { + "x": -1.2236328125, + "y": -2.26824951171875 + }, + { + "x": -3.52880859375, + "y": -3.12493896484375 + }, + { + "x": 1.90582275390625, + "y": 0.89794921875 + }, + { + "x": -2.47314453125, + "y": 0.515625 + }, + { + "x": 0.42816162109375, + "y": -3.4600830078125 + }, + { + "x": -1.73028564453125, + "y": 0.083740234375 + }, + { + "x": -1.39324951171875, + "y": -2.22589111328125 + }, + { + "x": 3.3585205078125, + "y": 4.002685546875 + }, + { + "x": 0.5740966796875, + "y": 0.11358642578125 + }, + { + "x": 5.324462890625, + "y": 3.95611572265625 + }, + { + "x": 3.2470703125, + "y": -0.234588623046875 + }, + { + "x": -0.3125, + "y": -0.559967041015625 + }, + { + "x": 0.5675048828125, + "y": -2.479095458984375 + }, + { + "x": -2.66998291015625, + "y": -1.66925048828125 + }, + { + "x": -1.7716064453125, + "y": 1.3126220703125 + }, + { + "x": 0.0023193359375, + "y": 2.4808349609375 + }, + { + "x": 4.314697265625, + "y": 4.390869140625 + }, + { + "x": 5.21929931640625, + "y": 3.136749267578125 + }, + { + "x": 2.78125, + "y": 0.148529052734375 + }, + { + "x": 0.06005859375, + "y": -2.82061767578125 + }, + { + "x": 1.4151611328125, + "y": -0.4473876953125 + }, + { + "x": -3.04241943359375, + "y": -3.299560546875 + }, + { + "x": 0.966064453125, + "y": 4.7188720703125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.18918412073816265, + "y": -0.04955982113760123, + "z": 0.4712697221563315 + }, + "rotation": { + "quaternion": { + "W": 0.7115722835897652, + "X": 0.03565715937056396, + "Y": -0.1369602577695706, + "Z": 0.6882116970846701 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img13.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img13.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1091.698974609375, + "y": 263.35650634765625 + }, + { + "x": 1086.457763671875, + "y": 323.5399169921875 + }, + { + "x": 1080.2359619140625, + "y": 376.5802917480469 + }, + { + "x": 1076.3731689453125, + "y": 429.82098388671875 + }, + { + "x": 1069.966552734375, + "y": 480.3392639160156 + }, + { + "x": 1067.880126953125, + "y": 532.451171875 + }, + { + "x": 1062.8448486328125, + "y": 570.930908203125 + }, + { + "x": 1039.8819580078125, + "y": 269.2904052734375 + }, + { + "x": 1033.0606689453125, + "y": 324.5436706542969 + }, + { + "x": 1031.185302734375, + "y": 377.2060546875 + }, + { + "x": 1030.1651611328125, + "y": 430.5351257324219 + }, + { + "x": 1025.3634033203125, + "y": 485.6704406738281 + }, + { + "x": 1016.0889282226562, + "y": 533.9714965820312 + }, + { + "x": 1011.7295532226562, + "y": 579.2759399414062 + }, + { + "x": 986.7992553710938, + "y": 264.3839111328125 + }, + { + "x": 983.7000732421875, + "y": 324.36737060546875 + }, + { + "x": 983.3604125976562, + "y": 375.4273986816406 + }, + { + "x": 976.8939208984375, + "y": 436.0101013183594 + }, + { + "x": 973.8043823242188, + "y": 486.74468994140625 + }, + { + "x": 974.175537109375, + "y": 542.6039428710938 + }, + { + "x": 963.7823486328125, + "y": 583.2604370117188 + }, + { + "x": 931.3898315429688, + "y": 267.91534423828125 + }, + { + "x": 932.4227905273438, + "y": 321.6566467285156 + }, + { + "x": 922.8117065429688, + "y": 379.6171875 + }, + { + "x": 924.2485961914062, + "y": 437.2351379394531 + }, + { + "x": 923.3641357421875, + "y": 492.9117126464844 + }, + { + "x": 916.6096801757812, + "y": 542.3969116210938 + }, + { + "x": 915.465087890625, + "y": 594.3665161132812 + }, + { + "x": 871.4108276367188, + "y": 269.24737548828125 + }, + { + "x": 873.1514892578125, + "y": 327.39044189453125 + }, + { + "x": 867.9654541015625, + "y": 388.2789611816406 + }, + { + "x": 867.6849365234375, + "y": 438.81646728515625 + }, + { + "x": 864.6907348632812, + "y": 495.4156799316406 + }, + { + "x": 858.5093994140625, + "y": 540.5681762695312 + }, + { + "x": 859.43505859375, + "y": 595.15283203125 + }, + { + "x": 810.4696655273438, + "y": 267.8103942871094 + }, + { + "x": 810.778564453125, + "y": 330.8519592285156 + }, + { + "x": 813.0179443359375, + "y": 387.4620056152344 + }, + { + "x": 810.5910034179688, + "y": 444.8724365234375 + }, + { + "x": 812.6602783203125, + "y": 497.9167785644531 + }, + { + "x": 809.8511352539062, + "y": 547.3601684570312 + }, + { + "x": 806.9627075195312, + "y": 597.216796875 + }, + { + "x": 753.9077758789062, + "y": 269.3330993652344 + }, + { + "x": 752.7764282226562, + "y": 330.24102783203125 + }, + { + "x": 753.7349243164062, + "y": 389.36248779296875 + }, + { + "x": 755.4556274414062, + "y": 448.3906555175781 + }, + { + "x": 753.0243530273438, + "y": 500.2117919921875 + }, + { + "x": 756.41748046875, + "y": 555.2650146484375 + }, + { + "x": 752.610595703125, + "y": 598.46630859375 + } + ], + "reprojectionErrors": [ + { + "x": 2.478515625, + "y": -0.378936767578125 + }, + { + "x": 2.4263916015625, + "y": -4.264923095703125 + }, + { + "x": 3.5052490234375, + "y": -2.49176025390625 + }, + { + "x": 2.369384765625, + "y": -2.341827392578125 + }, + { + "x": 3.9156494140625, + "y": -0.834808349609375 + }, + { + "x": 1.2745361328125, + "y": -2.232177734375 + }, + { + "x": 1.7099609375, + "y": 8.74359130859375 + }, + { + "x": 0.2623291015625, + "y": -4.577850341796875 + }, + { + "x": 2.48095703125, + "y": -3.14599609375 + }, + { + "x": -0.1141357421875, + "y": -0.628082275390625 + }, + { + "x": -3.43798828125, + "y": -0.219512939453125 + }, + { + "x": -2.8585205078125, + "y": -3.001007080078125 + }, + { + "x": 2.3101806640625, + "y": -0.2763671875 + }, + { + "x": 2.67584228515625, + "y": 4.16943359375 + }, + { + "x": -1.45916748046875, + "y": 2.101837158203125 + }, + { + "x": -2.2515869140625, + "y": -0.799530029296875 + }, + { + "x": -5.69049072265625, + "y": 3.696075439453125 + }, + { + "x": -2.89422607421875, + "y": -2.793975830078125 + }, + { + "x": -3.37103271484375, + "y": -0.838775634765625 + }, + { + "x": -7.20880126953125, + "y": -5.35430908203125 + }, + { + "x": -0.1865234375, + "y": 4.04058837890625 + }, + { + "x": -1.65447998046875, + "y": 0.383087158203125 + }, + { + "x": -5.8465576171875, + "y": 4.13037109375 + }, + { + "x": 0.69842529296875, + "y": 2.109619140625 + }, + { + "x": -3.71539306640625, + "y": -1.052398681640625 + }, + { + "x": -5.7222900390625, + "y": -3.69561767578125 + }, + { + "x": -1.77716064453125, + "y": -1.51202392578125 + }, + { + "x": -3.3631591796875, + "y": -3.1224365234375 + }, + { + "x": 1.8885498046875, + "y": 0.904510498046875 + }, + { + "x": -2.25640869140625, + "y": 0.666351318359375 + }, + { + "x": 0.59759521484375, + "y": -3.889068603515625 + }, + { + "x": -1.38482666015625, + "y": 0.401031494140625 + }, + { + "x": -0.58721923828125, + "y": -2.813385009765625 + }, + { + "x": 3.46112060546875, + "y": 4.03533935546875 + }, + { + "x": 0.46356201171875, + "y": 0.12432861328125 + }, + { + "x": 5.5302734375, + "y": 4.237091064453125 + }, + { + "x": 3.59552001953125, + "y": -0.473114013671875 + }, + { + "x": -0.21929931640625, + "y": -0.347381591796875 + }, + { + "x": 0.680419921875, + "y": -2.5498046875 + }, + { + "x": -2.86981201171875, + "y": -1.849853515625 + }, + { + "x": -1.497314453125, + "y": 1.04779052734375 + }, + { + "x": -0.0030517578125, + "y": 2.186279296875 + }, + { + "x": 3.89569091796875, + "y": 4.653564453125 + }, + { + "x": 4.2044677734375, + "y": 2.513916015625 + }, + { + "x": 2.450927734375, + "y": 0.54058837890625 + }, + { + "x": -0.03857421875, + "y": -2.890228271484375 + }, + { + "x": 1.649169921875, + "y": -0.59930419921875 + }, + { + "x": -2.46331787109375, + "y": -2.96392822265625 + }, + { + "x": 0.6474609375, + "y": 5.158447265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.19006935838249558, + "y": -0.047244712709147194, + "z": 0.47011248867209765 + }, + "rotation": { + "quaternion": { + "W": 0.7090360440298562, + "X": 0.03755817886139178, + "Y": -0.13999507219626336, + "Z": 0.6901149550820288 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img14.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img14.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 670.6923828125, + "y": 268.935546875 + }, + { + "x": 675.6511840820312, + "y": 329.459716796875 + }, + { + "x": 680.1495971679688, + "y": 387.78631591796875 + }, + { + "x": 686.9833374023438, + "y": 441.4931945800781 + }, + { + "x": 689.7099609375, + "y": 498.31744384765625 + }, + { + "x": 699.2052612304688, + "y": 547.6719970703125 + }, + { + "x": 707.1707763671875, + "y": 592.4207763671875 + }, + { + "x": 612.4740600585938, + "y": 281.5067138671875 + }, + { + "x": 617.255126953125, + "y": 338.0827331542969 + }, + { + "x": 625.4482421875, + "y": 395.3537902832031 + }, + { + "x": 631.3895874023438, + "y": 453.0038757324219 + }, + { + "x": 640.1976318359375, + "y": 506.6750793457031 + }, + { + "x": 644.2667236328125, + "y": 556.7915649414062 + }, + { + "x": 651.0872192382812, + "y": 606.9598999023438 + }, + { + "x": 552.4412231445312, + "y": 286.1466979980469 + }, + { + "x": 559.0491943359375, + "y": 346.99456787109375 + }, + { + "x": 568.0675659179688, + "y": 401.62506103515625 + }, + { + "x": 572.81640625, + "y": 461.2048645019531 + }, + { + "x": 581.0927734375, + "y": 516.4592895507812 + }, + { + "x": 590.6424560546875, + "y": 567.78125 + }, + { + "x": 599.456298828125, + "y": 612.5601196289062 + }, + { + "x": 492.9783020019531, + "y": 298.53717041015625 + }, + { + "x": 501.2618408203125, + "y": 354.8612976074219 + }, + { + "x": 507.80908203125, + "y": 414.1213073730469 + }, + { + "x": 518.7837524414062, + "y": 469.6658630371094 + }, + { + "x": 528.6651611328125, + "y": 526.641357421875 + }, + { + "x": 535.2445678710938, + "y": 575.7589111328125 + }, + { + "x": 542.8419799804688, + "y": 626.6317749023438 + }, + { + "x": 430.22625732421875, + "y": 309.53399658203125 + }, + { + "x": 441.9303283691406, + "y": 366.3840026855469 + }, + { + "x": 449.2375793457031, + "y": 426.04266357421875 + }, + { + "x": 458.5773010253906, + "y": 479.051025390625 + }, + { + "x": 469.75927734375, + "y": 533.9276733398438 + }, + { + "x": 475.9292907714844, + "y": 584.5274658203125 + }, + { + "x": 489.93133544921875, + "y": 633.7020263671875 + }, + { + "x": 374.14105224609375, + "y": 317.7045593261719 + }, + { + "x": 383.59228515625, + "y": 373.8267517089844 + }, + { + "x": 393.1950378417969, + "y": 434.36871337890625 + }, + { + "x": 403.2041015625, + "y": 489.513427734375 + }, + { + "x": 416.8999328613281, + "y": 544.581298828125 + }, + { + "x": 425.20989990234375, + "y": 592.7588500976562 + }, + { + "x": 432.8440856933594, + "y": 643.4828491210938 + }, + { + "x": 314.0474548339844, + "y": 326.519775390625 + }, + { + "x": 324.3575744628906, + "y": 385.641845703125 + }, + { + "x": 334.5902099609375, + "y": 443.50311279296875 + }, + { + "x": 347.3611755371094, + "y": 500.14593505859375 + }, + { + "x": 355.1361999511719, + "y": 554.87548828125 + }, + { + "x": 371.3939208984375, + "y": 606.044189453125 + }, + { + "x": 378.2018737792969, + "y": 655.3446655273438 + } + ], + "reprojectionErrors": [ + { + "x": -3.69940185546875, + "y": 6.154815673828125 + }, + { + "x": -1.714111328125, + "y": 2.4454345703125 + }, + { + "x": 0.5675048828125, + "y": -0.431365966796875 + }, + { + "x": 0.35595703125, + "y": -0.00177001953125 + }, + { + "x": 4.09967041015625, + "y": -3.953765869140625 + }, + { + "x": 0.92840576171875, + "y": -1.65350341796875 + }, + { + "x": -0.85400390625, + "y": 4.07952880859375 + }, + { + "x": -2.96856689453125, + "y": 1.80517578125 + }, + { + "x": -0.054931640625, + "y": 2.3095703125 + }, + { + "x": -0.73773193359375, + "y": 0.7388916015625 + }, + { + "x": 0.654052734375, + "y": -2.5382080078125 + }, + { + "x": -0.9915771484375, + "y": -3.1138916015625 + }, + { + "x": 1.93756103515625, + "y": -1.3648681640625 + }, + { + "x": 1.95703125, + "y": -0.8525390625 + }, + { + "x": -1.1751708984375, + "y": 5.5057373046875 + }, + { + "x": 0.68182373046875, + "y": 2.010040283203125 + }, + { + "x": -0.07696533203125, + "y": 3.3363037109375 + }, + { + "x": 3.23626708984375, + "y": -1.628692626953125 + }, + { + "x": 2.83203125, + "y": -3.5594482421875 + }, + { + "x": 0.97149658203125, + "y": -2.80059814453125 + }, + { + "x": -0.329345703125, + "y": 3.30438232421875 + }, + { + "x": -0.731689453125, + "y": 1.5791015625 + }, + { + "x": 0.24053955078125, + "y": 2.885223388671875 + }, + { + "x": 2.72186279296875, + "y": -0.155853271484375 + }, + { + "x": 0.55731201171875, + "y": -0.838348388671875 + }, + { + "x": -0.72418212890625, + "y": -4.2569580078125 + }, + { + "x": 1.0941162109375, + "y": -1.07379150390625 + }, + { + "x": 1.69970703125, + "y": -0.8553466796875 + }, + { + "x": 2.191558837890625, + "y": -0.826171875 + }, + { + "x": 0.5556640625, + "y": 0.238555908203125 + }, + { + "x": 3.066619873046875, + "y": -2.933013916015625 + }, + { + "x": 3.30487060546875, + "y": -0.8265380859375 + }, + { + "x": 1.46978759765625, + "y": -1.90802001953125 + }, + { + "x": 4.42437744140625, + "y": 0.01763916015625 + }, + { + "x": -0.66705322265625, + "y": 2.146240234375 + }, + { + "x": -2.3917236328125, + "y": -0.272918701171875 + }, + { + "x": -0.93988037109375, + "y": 1.81072998046875 + }, + { + "x": 0.08685302734375, + "y": -1.96990966796875 + }, + { + "x": 0.44439697265625, + "y": -1.741363525390625 + }, + { + "x": -3.137603759765625, + "y": -2.77056884765625 + }, + { + "x": -1.576873779296875, + "y": 1.80682373046875 + }, + { + "x": 0.425628662109375, + "y": 2.602294921875 + }, + { + "x": -3.837921142578125, + "y": -0.2271728515625 + }, + { + "x": -2.386474609375, + "y": -0.84564208984375 + }, + { + "x": -1.15570068359375, + "y": -1.665130615234375 + }, + { + "x": -2.74969482421875, + "y": -2.670562744140625 + }, + { + "x": 0.376922607421875, + "y": -3.11260986328125 + }, + { + "x": -5.24395751953125, + "y": -1.29193115234375 + }, + { + "x": -1.669830322265625, + "y": 1.14788818359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 9.53949477942722E-4, + "y": -0.041294300316498396, + "z": 0.46342652779377025 + }, + "rotation": { + "quaternion": { + "W": 0.7482879709142524, + "X": 0.0276444276990895, + "Y": -0.12583214116345257, + "Z": 0.6507435519868344 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img15.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img15.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 803.195068359375, + "y": 310.8043518066406 + }, + { + "x": 806.6454467773438, + "y": 369.15777587890625 + }, + { + "x": 809.4408569335938, + "y": 425.0783996582031 + }, + { + "x": 814.9775390625, + "y": 477.8331604003906 + }, + { + "x": 815.5866088867188, + "y": 529.6420288085938 + }, + { + "x": 821.4833984375, + "y": 578.2999877929688 + }, + { + "x": 826.43212890625, + "y": 619.7633056640625 + }, + { + "x": 747.6166381835938, + "y": 322.7354736328125 + }, + { + "x": 750.931884765625, + "y": 373.4404296875 + }, + { + "x": 756.9868774414062, + "y": 431.75140380859375 + }, + { + "x": 758.8216552734375, + "y": 486.11090087890625 + }, + { + "x": 766.1915893554688, + "y": 537.4498291015625 + }, + { + "x": 768.0447998046875, + "y": 582.8606567382812 + }, + { + "x": 772.0046997070312, + "y": 632.3164672851562 + }, + { + "x": 687.1011352539062, + "y": 325.19818115234375 + }, + { + "x": 691.92529296875, + "y": 381.7546081542969 + }, + { + "x": 699.8003540039062, + "y": 434.63543701171875 + }, + { + "x": 705.6749267578125, + "y": 493.1727600097656 + }, + { + "x": 710.49365234375, + "y": 540.815185546875 + }, + { + "x": 715.5464477539062, + "y": 592.7738647460938 + }, + { + "x": 719.7203369140625, + "y": 635.0225219726562 + }, + { + "x": 630.2560424804688, + "y": 333.28533935546875 + }, + { + "x": 637.536376953125, + "y": 385.630859375 + }, + { + "x": 640.8460083007812, + "y": 443.4401550292969 + }, + { + "x": 649.5328369140625, + "y": 496.5588684082031 + }, + { + "x": 656.050537109375, + "y": 550.1104736328125 + }, + { + "x": 659.8839111328125, + "y": 597.1884765625 + }, + { + "x": 667.5912475585938, + "y": 646.6331787109375 + }, + { + "x": 567.2529296875, + "y": 341.8758850097656 + }, + { + "x": 575.639892578125, + "y": 394.9449768066406 + }, + { + "x": 582.8123168945312, + "y": 453.5090026855469 + }, + { + "x": 590.857421875, + "y": 502.7227478027344 + }, + { + "x": 599.2493286132812, + "y": 554.7354125976562 + }, + { + "x": 602.2220458984375, + "y": 601.1386108398438 + }, + { + "x": 612.7521362304688, + "y": 650.704833984375 + }, + { + "x": 511.66241455078125, + "y": 346.67596435546875 + }, + { + "x": 520.2137451171875, + "y": 402.20928955078125 + }, + { + "x": 527.4923095703125, + "y": 456.87176513671875 + }, + { + "x": 536.0238037109375, + "y": 510.7495422363281 + }, + { + "x": 547.1024169921875, + "y": 561.4013061523438 + }, + { + "x": 553.8303833007812, + "y": 607.200927734375 + }, + { + "x": 559.946044921875, + "y": 654.4851684570312 + }, + { + "x": 454.710693359375, + "y": 352.8441467285156 + }, + { + "x": 462.22882080078125, + "y": 407.6592102050781 + }, + { + "x": 472.8584899902344, + "y": 463.2417907714844 + }, + { + "x": 483.265625, + "y": 517.21875 + }, + { + "x": 489.1311340332031, + "y": 567.2611694335938 + }, + { + "x": 501.4171142578125, + "y": 615.967529296875 + }, + { + "x": 505.9447021484375, + "y": 661.7693481445312 + } + ], + "reprojectionErrors": [ + { + "x": 0.42474365234375, + "y": 2.997711181640625 + }, + { + "x": 1.02642822265625, + "y": 0.618743896484375 + }, + { + "x": 2.162353515625, + "y": -1.036773681640625 + }, + { + "x": 0.44189453125, + "y": -1.155487060546875 + }, + { + "x": 3.539306640625, + "y": -1.88214111328125 + }, + { + "x": 1.24420166015625, + "y": -0.94091796875 + }, + { + "x": -0.202880859375, + "y": 5.7784423828125 + }, + { + "x": -2.30975341796875, + "y": -2.28741455078125 + }, + { + "x": -0.66424560546875, + "y": 2.889007568359375 + }, + { + "x": -1.90814208984375, + "y": -1.247283935546875 + }, + { + "x": 0.925537109375, + "y": -3.058624267578125 + }, + { + "x": -1.9119873046875, + "y": -3.4007568359375 + }, + { + "x": 0.6373291015625, + "y": 0.70452880859375 + }, + { + "x": 0.95599365234375, + "y": -0.64947509765625 + }, + { + "x": -0.1243896484375, + "y": 1.918121337890625 + }, + { + "x": 0.92193603515625, + "y": 1.15362548828125 + }, + { + "x": -1.26129150390625, + "y": 2.3604736328125 + }, + { + "x": -1.6142578125, + "y": -3.71337890625 + }, + { + "x": -1.07379150390625, + "y": -0.44140625 + }, + { + "x": -0.92236328125, + "y": -2.96429443359375 + }, + { + "x": -0.0400390625, + "y": 2.8106689453125 + }, + { + "x": -1.63946533203125, + "y": 0.522979736328125 + }, + { + "x": -2.13818359375, + "y": 3.883544921875 + }, + { + "x": 1.12615966796875, + "y": 0.078277587890625 + }, + { + "x": -1.1846923828125, + "y": -0.65850830078125 + }, + { + "x": -1.51513671875, + "y": -3.375244140625 + }, + { + "x": 0.6585693359375, + "y": -1.09490966796875 + }, + { + "x": -1.2137451171875, + "y": -2.59161376953125 + }, + { + "x": 2.960693359375, + "y": -1.35028076171875 + }, + { + "x": 2.268310546875, + "y": 1.20440673828125 + }, + { + "x": 2.55364990234375, + "y": -3.4359130859375 + }, + { + "x": 1.74066162109375, + "y": -0.34613037109375 + }, + { + "x": 0.3656005859375, + "y": -1.60052490234375 + }, + { + "x": 4.20428466796875, + "y": 1.27984619140625 + }, + { + "x": 0.28936767578125, + "y": -0.41143798828125 + }, + { + "x": 0.092529296875, + "y": 0.59368896484375 + }, + { + "x": 0.15093994140625, + "y": 0.6053466796875 + }, + { + "x": 1.21612548828125, + "y": -0.210479736328125 + }, + { + "x": 0.7747802734375, + "y": -1.86004638671875 + }, + { + "x": -2.45550537109375, + "y": -1.82720947265625 + }, + { + "x": -1.56591796875, + "y": 1.58465576171875 + }, + { + "x": -0.28448486328125, + "y": 2.1048583984375 + }, + { + "x": -1.4830322265625, + "y": 1.19781494140625 + }, + { + "x": 0.52642822265625, + "y": 1.852447509765625 + }, + { + "x": -0.87109375, + "y": 0.042724609375 + }, + { + "x": -2.32763671875, + "y": -1.7783203125 + }, + { + "x": 0.488983154296875, + "y": -1.20697021484375 + }, + { + "x": -3.37115478515625, + "y": -0.771240234375 + }, + { + "x": 0.282318115234375, + "y": 1.163330078125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.06006000899885772, + "y": -0.02421715387365734, + "z": 0.45949150334215505 + }, + "rotation": { + "quaternion": { + "W": 0.7383113623181542, + "X": 0.09311757640731705, + "Y": -0.109940441500273, + "Z": 0.6588919096169447 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img16.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img16.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1043.0128173828125, + "y": 353.3611145019531 + }, + { + "x": 1044.8736572265625, + "y": 404.38507080078125 + }, + { + "x": 1042.341064453125, + "y": 449.1295471191406 + }, + { + "x": 1041.76318359375, + "y": 494.4190979003906 + }, + { + "x": 1040.82275390625, + "y": 537.6438598632812 + }, + { + "x": 1041.5504150390625, + "y": 582.352294921875 + }, + { + "x": 1038.53076171875, + "y": 617.7290649414062 + }, + { + "x": 999.5180053710938, + "y": 362.348388671875 + }, + { + "x": 999.3387451171875, + "y": 406.0817565917969 + }, + { + "x": 1003.1463623046875, + "y": 457.0641784667969 + }, + { + "x": 999.5559692382812, + "y": 501.012451171875 + }, + { + "x": 1001.1724243164062, + "y": 546.808837890625 + }, + { + "x": 996.869384765625, + "y": 586.6627807617188 + }, + { + "x": 996.4856567382812, + "y": 627.4057006835938 + }, + { + "x": 952.2424926757812, + "y": 361.4931335449219 + }, + { + "x": 952.43017578125, + "y": 413.5886535644531 + }, + { + "x": 955.2263793945312, + "y": 457.9259948730469 + }, + { + "x": 956.6747436523438, + "y": 512.0559692382812 + }, + { + "x": 955.090087890625, + "y": 550.7946166992188 + }, + { + "x": 955.4825439453125, + "y": 596.2259521484375 + }, + { + "x": 951.765625, + "y": 634.697021484375 + }, + { + "x": 905.0870361328125, + "y": 371.2345275878906 + }, + { + "x": 903.8285522460938, + "y": 420.0834045410156 + }, + { + "x": 904.3330688476562, + "y": 466.0650939941406 + }, + { + "x": 907.1743774414062, + "y": 514.7513427734375 + }, + { + "x": 909.1210327148438, + "y": 559.6804809570312 + }, + { + "x": 907.4844360351562, + "y": 602.552490234375 + }, + { + "x": 908.7610473632812, + "y": 642.792724609375 + }, + { + "x": 848.702880859375, + "y": 378.6395568847656 + }, + { + "x": 854.361083984375, + "y": 424.7106628417969 + }, + { + "x": 856.5890502929688, + "y": 475.4163818359375 + }, + { + "x": 857.6504516601562, + "y": 518.42822265625 + }, + { + "x": 860.8367309570312, + "y": 565.9466552734375 + }, + { + "x": 862.3327026367188, + "y": 607.6107788085938 + }, + { + "x": 863.699462890625, + "y": 648.5643920898438 + }, + { + "x": 800.2639770507812, + "y": 380.9759826660156 + }, + { + "x": 805.055908203125, + "y": 431.30377197265625 + }, + { + "x": 810.6041259765625, + "y": 482.575927734375 + }, + { + "x": 810.9893798828125, + "y": 526.8873901367188 + }, + { + "x": 815.43017578125, + "y": 572.2508544921875 + }, + { + "x": 815.728515625, + "y": 614.1802978515625 + }, + { + "x": 816.8014526367188, + "y": 655.2581787109375 + }, + { + "x": 749.2409057617188, + "y": 386.635009765625 + }, + { + "x": 754.7291259765625, + "y": 437.2398376464844 + }, + { + "x": 757.8713989257812, + "y": 485.45416259765625 + }, + { + "x": 764.8499755859375, + "y": 536.1885375976562 + }, + { + "x": 765.9351196289062, + "y": 576.7233276367188 + }, + { + "x": 771.2334594726562, + "y": 624.6284790039062 + }, + { + "x": 771.4705810546875, + "y": 659.3551025390625 + } + ], + "reprojectionErrors": [ + { + "x": 3.3939208984375, + "y": 0.898834228515625 + }, + { + "x": 0.7694091796875, + "y": -2.589935302734375 + }, + { + "x": 2.5657958984375, + "y": -0.9847412109375 + }, + { + "x": 2.4339599609375, + "y": -1.06396484375 + }, + { + "x": 2.6900634765625, + "y": -0.174072265625 + }, + { + "x": 1.302490234375, + "y": -1.82196044921875 + }, + { + "x": 3.6859130859375, + "y": 4.84710693359375 + }, + { + "x": -0.6500244140625, + "y": -2.284027099609375 + }, + { + "x": -0.63214111328125, + "y": 1.692291259765625 + }, + { + "x": -4.58935546875, + "y": -2.77630615234375 + }, + { + "x": -1.1373291015625, + "y": -1.359954833984375 + }, + { + "x": -2.8812255859375, + "y": -2.89654541015625 + }, + { + "x": 1.30487060546875, + "y": 0.446533203125 + }, + { + "x": 1.58172607421875, + "y": 1.87774658203125 + }, + { + "x": -1.3917236328125, + "y": 4.455230712890625 + }, + { + "x": -1.12591552734375, + "y": 0.24774169921875 + }, + { + "x": -3.47314453125, + "y": 2.591796875 + }, + { + "x": -4.47686767578125, + "y": -6.015960693359375 + }, + { + "x": -2.45166015625, + "y": -0.34674072265625 + }, + { + "x": -2.40753173828125, + "y": -2.4417724609375 + }, + { + "x": 1.74212646484375, + "y": 1.3922119140625 + }, + { + "x": -2.7486572265625, + "y": 0.67987060546875 + }, + { + "x": -0.40887451171875, + "y": -0.098846435546875 + }, + { + "x": 0.14666748046875, + "y": 0.772064208984375 + }, + { + "x": -1.65496826171875, + "y": -2.23114013671875 + }, + { + "x": -2.58154296875, + "y": -2.6011962890625 + }, + { + "x": 0.05633544921875, + "y": -1.99493408203125 + }, + { + "x": -0.23712158203125, + "y": 0.20343017578125 + }, + { + "x": 4.61041259765625, + "y": -0.67462158203125 + }, + { + "x": 0.67498779296875, + "y": 1.510467529296875 + }, + { + "x": 0.1312255859375, + "y": -2.167877197265625 + }, + { + "x": 0.717041015625, + "y": 0.66754150390625 + }, + { + "x": -0.8575439453125, + "y": -2.1375732421875 + }, + { + "x": -0.7760009765625, + "y": -0.178466796875 + }, + { + "x": -0.59808349609375, + "y": 1.442626953125 + }, + { + "x": 3.49359130859375, + "y": 3.1265869140625 + }, + { + "x": 1.08001708984375, + "y": 1.2449951171875 + }, + { + "x": -2.14617919921875, + "y": -2.82135009765625 + }, + { + "x": -0.26361083984375, + "y": -1.11798095703125 + }, + { + "x": -2.48858642578125, + "y": -1.6107177734375 + }, + { + "x": -0.62103271484375, + "y": 0.2308349609375 + }, + { + "x": 0.42388916015625, + "y": 1.86651611328125 + }, + { + "x": 4.41180419921875, + "y": 3.694915771484375 + }, + { + "x": 1.9722900390625, + "y": 1.7303466796875 + }, + { + "x": 1.80389404296875, + "y": 0.90399169921875 + }, + { + "x": -2.2725830078125, + "y": -3.64453125 + }, + { + "x": -0.524658203125, + "y": 0.8519287109375 + }, + { + "x": -3.05615234375, + "y": -3.13140869140625 + }, + { + "x": -0.5902099609375, + "y": 4.99700927734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.1940140113955833, + "y": -0.00791555373461914, + "z": 0.5399416408461304 + }, + "rotation": { + "quaternion": { + "W": 0.7341993683036224, + "X": 0.04864449241230849, + "Y": -0.1414740612976027, + "Z": 0.6622462464374357 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img17.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img17.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1043.2073974609375, + "y": 280.9567565917969 + }, + { + "x": 1050.8492431640625, + "y": 328.53472900390625 + }, + { + "x": 1053.2696533203125, + "y": 373.8794250488281 + }, + { + "x": 1056.2413330078125, + "y": 417.4973449707031 + }, + { + "x": 1063.1497802734375, + "y": 460.0205993652344 + }, + { + "x": 1067.275146484375, + "y": 503.88812255859375 + }, + { + "x": 1065.40625, + "y": 543.5209350585938 + }, + { + "x": 1000.626708984375, + "y": 290.2734680175781 + }, + { + "x": 1007.9869995117188, + "y": 335.7458801269531 + }, + { + "x": 1013.2447509765625, + "y": 381.80902099609375 + }, + { + "x": 1019.1356201171875, + "y": 428.17376708984375 + }, + { + "x": 1023.3430786132812, + "y": 471.8781433105469 + }, + { + "x": 1024.81689453125, + "y": 513.8864135742188 + }, + { + "x": 1027.269775390625, + "y": 554.2200927734375 + }, + { + "x": 955.9142456054688, + "y": 298.552734375 + }, + { + "x": 963.8795776367188, + "y": 346.3478088378906 + }, + { + "x": 969.16259765625, + "y": 392.4349060058594 + }, + { + "x": 974.3516845703125, + "y": 440.0721130371094 + }, + { + "x": 979.5877075195312, + "y": 483.02294921875 + }, + { + "x": 984.46044921875, + "y": 526.009521484375 + }, + { + "x": 986.7371215820312, + "y": 566.36376953125 + }, + { + "x": 908.4257202148438, + "y": 307.2817077636719 + }, + { + "x": 916.8068237304688, + "y": 357.7356872558594 + }, + { + "x": 926.1231079101562, + "y": 402.51708984375 + }, + { + "x": 934.0302734375, + "y": 446.66558837890625 + }, + { + "x": 939.581787109375, + "y": 495.7615966796875 + }, + { + "x": 942.4445190429688, + "y": 535.919189453125 + }, + { + "x": 948.0927734375, + "y": 579.83056640625 + }, + { + "x": 863.525634765625, + "y": 319.0593566894531 + }, + { + "x": 871.5669555664062, + "y": 366.38037109375 + }, + { + "x": 880.5586547851562, + "y": 413.91748046875 + }, + { + "x": 882.8048706054688, + "y": 458.63055419921875 + }, + { + "x": 892.1004028320312, + "y": 505.31689453125 + }, + { + "x": 901.5156860351562, + "y": 548.7904663085938 + }, + { + "x": 901.5386962890625, + "y": 590.2439575195312 + }, + { + "x": 814.9931030273438, + "y": 328.02081298828125 + }, + { + "x": 824.3513793945312, + "y": 376.1406555175781 + }, + { + "x": 832.9498291015625, + "y": 425.0293273925781 + }, + { + "x": 839.1527099609375, + "y": 472.1571350097656 + }, + { + "x": 840.764404296875, + "y": 515.1066284179688 + }, + { + "x": 850.14306640625, + "y": 560.826171875 + }, + { + "x": 857.3764038085938, + "y": 600.5687866210938 + }, + { + "x": 763.6551513671875, + "y": 339.6924743652344 + }, + { + "x": 777.8313598632812, + "y": 389.176025390625 + }, + { + "x": 783.5983276367188, + "y": 435.97991943359375 + }, + { + "x": 790.7672729492188, + "y": 482.7447204589844 + }, + { + "x": 798.3319091796875, + "y": 527.6834106445312 + }, + { + "x": 806.2030639648438, + "y": 571.3619384765625 + }, + { + "x": 811.4541015625, + "y": 612.1045532226562 + } + ], + "reprojectionErrors": [ + { + "x": 3.0960693359375, + "y": -1.991607666015625 + }, + { + "x": -0.1307373046875, + "y": -2.729095458984375 + }, + { + "x": 1.779296875, + "y": -2.224334716796875 + }, + { + "x": 3.056396484375, + "y": -0.950592041015625 + }, + { + "x": 0.317626953125, + "y": 0.4918212890625 + }, + { + "x": 0.28564453125, + "y": -0.3056640625 + }, + { + "x": 6.174072265625, + "y": 2.26507568359375 + }, + { + "x": 1.068359375, + "y": -1.390167236328125 + }, + { + "x": -1.3662109375, + "y": 0.17767333984375 + }, + { + "x": -1.79498291015625, + "y": 0.1531982421875 + }, + { + "x": -2.95025634765625, + "y": -1.140625 + }, + { + "x": -2.51239013671875, + "y": -0.70953369140625 + }, + { + "x": 0.57177734375, + "y": 0.5130615234375 + }, + { + "x": 2.592529296875, + "y": 2.5352783203125 + }, + { + "x": 0.6085205078125, + "y": 0.390289306640625 + }, + { + "x": -1.9072265625, + "y": -0.160797119140625 + }, + { + "x": -1.8499755859375, + "y": -0.01629638671875 + }, + { + "x": -1.8043212890625, + "y": -2.39990234375 + }, + { + "x": -1.9075927734375, + "y": -1.042327880859375 + }, + { + "x": -1.7462158203125, + "y": -0.63427734375 + }, + { + "x": 0.91595458984375, + "y": 1.52239990234375 + }, + { + "x": 2.3409423828125, + "y": 1.867431640625 + }, + { + "x": -0.05291748046875, + "y": -1.13482666015625 + }, + { + "x": -3.5042724609375, + "y": 0.51202392578125 + }, + { + "x": -5.66473388671875, + "y": 1.80322265625 + }, + { + "x": -5.58367919921875, + "y": -2.808197021484375 + }, + { + "x": -2.92413330078125, + "y": 0.5955810546875 + }, + { + "x": -3.15679931640625, + "y": -0.64703369140625 + }, + { + "x": 0.88067626953125, + "y": 0.4471435546875 + }, + { + "x": -0.62139892578125, + "y": 0.789703369140625 + }, + { + "x": -3.209716796875, + "y": -0.118743896484375 + }, + { + "x": 0.816162109375, + "y": 0.79754638671875 + }, + { + "x": -2.33404541015625, + "y": -1.22479248046875 + }, + { + "x": -5.7264404296875, + "y": -0.96722412109375 + }, + { + "x": 0.15496826171875, + "y": 0.4085693359375 + }, + { + "x": 2.4271240234375, + "y": 1.99945068359375 + }, + { + "x": 0.1751708984375, + "y": 1.759185791015625 + }, + { + "x": -1.46697998046875, + "y": -0.296539306640625 + }, + { + "x": -0.8583984375, + "y": -1.601806640625 + }, + { + "x": 4.20147705078125, + "y": 0.29541015625 + }, + { + "x": 1.35931396484375, + "y": -1.52020263671875 + }, + { + "x": 0.5318603515625, + "y": 1.7298583984375 + }, + { + "x": 6.13104248046875, + "y": 1.003265380859375 + }, + { + "x": -0.3560791015625, + "y": -0.3804931640625 + }, + { + "x": 1.40130615234375, + "y": -0.143280029296875 + }, + { + "x": 1.5977783203125, + "y": -0.88873291015625 + }, + { + "x": 1.2451171875, + "y": -0.794677734375 + }, + { + "x": 0.4376220703125, + "y": -0.39337158203125 + }, + { + "x": 2.1070556640625, + "y": 2.02288818359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.19987761392814085, + "y": -0.04755244026349339, + "z": 0.5564107396573182 + }, + "rotation": { + "quaternion": { + "W": 0.7671348661153811, + "X": 0.017564225857321817, + "Y": -0.13985980671320694, + "Z": 0.6258073422598315 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img18.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img18.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1129.540771484375, + "y": 339.44818115234375 + }, + { + "x": 1134.9281005859375, + "y": 384.0579528808594 + }, + { + "x": 1138.3045654296875, + "y": 426.0355224609375 + }, + { + "x": 1141.3282470703125, + "y": 465.8912658691406 + }, + { + "x": 1143.5140380859375, + "y": 507.02655029296875 + }, + { + "x": 1145.2999267578125, + "y": 540.6529541015625 + }, + { + "x": 1149.6494140625, + "y": 577.7216796875 + }, + { + "x": 1090.2890625, + "y": 353.3680114746094 + }, + { + "x": 1094.1566162109375, + "y": 394.7434997558594 + }, + { + "x": 1098.89501953125, + "y": 436.7054138183594 + }, + { + "x": 1102.9935302734375, + "y": 479.9775390625 + }, + { + "x": 1107.9322509765625, + "y": 517.80224609375 + }, + { + "x": 1109.466552734375, + "y": 555.1795654296875 + }, + { + "x": 1111.233154296875, + "y": 589.6889038085938 + }, + { + "x": 1047.2408447265625, + "y": 360.697998046875 + }, + { + "x": 1054.224365234375, + "y": 408.4734802246094 + }, + { + "x": 1060.43994140625, + "y": 445.9018859863281 + }, + { + "x": 1065.22265625, + "y": 492.8709411621094 + }, + { + "x": 1067.364013671875, + "y": 530.3379516601562 + }, + { + "x": 1070.755126953125, + "y": 566.9354248046875 + }, + { + "x": 1073.70751953125, + "y": 603.1732788085938 + }, + { + "x": 1003.7874145507812, + "y": 375.7681579589844 + }, + { + "x": 1008.7608642578125, + "y": 419.80181884765625 + }, + { + "x": 1013.522216796875, + "y": 460.8714904785156 + }, + { + "x": 1021.5279541015625, + "y": 503.74945068359375 + }, + { + "x": 1027.991943359375, + "y": 542.7174072265625 + }, + { + "x": 1031.079345703125, + "y": 580.2542114257812 + }, + { + "x": 1034.3642578125, + "y": 614.3578491210938 + }, + { + "x": 954.8735961914062, + "y": 389.73291015625 + }, + { + "x": 963.47021484375, + "y": 431.36529541015625 + }, + { + "x": 971.5836791992188, + "y": 476.17327880859375 + }, + { + "x": 981.0149536132812, + "y": 516.7462768554688 + }, + { + "x": 985.0306396484375, + "y": 554.7536010742188 + }, + { + "x": 985.9945678710938, + "y": 589.3569946289062 + }, + { + "x": 995.963134765625, + "y": 625.887451171875 + }, + { + "x": 909.45751953125, + "y": 399.57562255859375 + }, + { + "x": 919.4775390625, + "y": 443.6545715332031 + }, + { + "x": 926.7435302734375, + "y": 486.94866943359375 + }, + { + "x": 934.6281127929688, + "y": 528.4602661132812 + }, + { + "x": 944.1640625, + "y": 567.117919921875 + }, + { + "x": 949.822509765625, + "y": 601.4728393554688 + }, + { + "x": 951.8046875, + "y": 637.4625854492188 + }, + { + "x": 863.275634765625, + "y": 412.0070495605469 + }, + { + "x": 871.3423461914062, + "y": 455.46905517578125 + }, + { + "x": 881.7468872070312, + "y": 499.5153503417969 + }, + { + "x": 892.0073852539062, + "y": 541.2267456054688 + }, + { + "x": 898.242431640625, + "y": 578.8743286132812 + }, + { + "x": 906.4973754882812, + "y": 616.7776489257812 + }, + { + "x": 913.508056640625, + "y": 649.1334838867188 + } + ], + "reprojectionErrors": [ + { + "x": 2.634765625, + "y": 1.002288818359375 + }, + { + "x": 1.0811767578125, + "y": -1.036529541015625 + }, + { + "x": 1.4434814453125, + "y": -1.59747314453125 + }, + { + "x": 2.0672607421875, + "y": -1.1427001953125 + }, + { + "x": 3.441650390625, + "y": -3.027984619140625 + }, + { + "x": 5.1322021484375, + "y": 1.5782470703125 + }, + { + "x": 4.1785888671875, + "y": 1.7655029296875 + }, + { + "x": -1.25048828125, + "y": -0.769683837890625 + }, + { + "x": -0.6732177734375, + "y": 0.404449462890625 + }, + { + "x": -1.07958984375, + "y": -0.165374755859375 + }, + { + "x": -0.9541015625, + "y": -3.154388427734375 + }, + { + "x": -1.7723388671875, + "y": -1.7591552734375 + }, + { + "x": 0.714599609375, + "y": -0.936279296875 + }, + { + "x": 2.8739013671875, + "y": 1.77581787109375 + }, + { + "x": -1.610107421875, + "y": 4.15185546875 + }, + { + "x": -3.529541015625, + "y": -1.094573974609375 + }, + { + "x": -4.8118896484375, + "y": 2.845306396484375 + }, + { + "x": -4.7864990234375, + "y": -3.867462158203125 + }, + { + "x": -2.23974609375, + "y": -2.14404296875 + }, + { + "x": -1.057861328125, + "y": -0.57330322265625 + }, + { + "x": 0.4522705078125, + "y": 0.37603759765625 + }, + { + "x": -1.84576416015625, + "y": 1.44012451171875 + }, + { + "x": -1.1273193359375, + "y": -0.084259033203125 + }, + { + "x": -0.3458251953125, + "y": 0.191162109375 + }, + { + "x": -2.95147705078125, + "y": -2.45672607421875 + }, + { + "x": -4.1522216796875, + "y": -2.2633056640625 + }, + { + "x": -2.107666015625, + "y": -1.66351318359375 + }, + { + "x": -0.3863525390625, + "y": 1.38616943359375 + }, + { + "x": 3.08697509765625, + "y": -0.0560302734375 + }, + { + "x": 0.81915283203125, + "y": 0.80181884765625 + }, + { + "x": -1.13336181640625, + "y": -2.68359375 + }, + { + "x": -4.56439208984375, + "y": -3.05224609375 + }, + { + "x": -2.73382568359375, + "y": -1.92681884765625 + }, + { + "x": 2.0008544921875, + "y": 1.5751953125 + }, + { + "x": -2.4107666015625, + "y": 2.1644287109375 + }, + { + "x": 4.21917724609375, + "y": 2.683441162109375 + }, + { + "x": 1.17413330078125, + "y": 1.076385498046875 + }, + { + "x": 0.69610595703125, + "y": -0.9171142578125 + }, + { + "x": -0.57952880859375, + "y": -2.2496337890625 + }, + { + "x": -3.67803955078125, + "y": -1.802734375 + }, + { + "x": -3.0634765625, + "y": 1.91680908203125 + }, + { + "x": 1.06964111328125, + "y": 3.01336669921875 + }, + { + "x": 5.80316162109375, + "y": 2.9512939453125 + }, + { + "x": 5.3673095703125, + "y": 1.943450927734375 + }, + { + "x": 2.3870849609375, + "y": -0.82366943359375 + }, + { + "x": -0.6468505859375, + "y": -2.38079833984375 + }, + { + "x": 0.15521240234375, + "y": -0.95166015625 + }, + { + "x": -1.24420166015625, + "y": -0.81121826171875 + }, + { + "x": -1.573486328125, + "y": 3.88604736328125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.25584212695601866, + "y": -0.016071682450644637, + "z": 0.5813457457907728 + }, + "rotation": { + "quaternion": { + "W": 0.7798737952558329, + "X": 0.06552089224471457, + "Y": -0.15415808103776713, + "Z": 0.6031079192014254 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img19.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img19.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 507.6243896484375, + "y": 345.64190673828125 + }, + { + "x": 512.6060180664062, + "y": 407.4781494140625 + }, + { + "x": 517.5177001953125, + "y": 466.67510986328125 + }, + { + "x": 524.680419921875, + "y": 525.3017578125 + }, + { + "x": 527.5255737304688, + "y": 577.5770263671875 + }, + { + "x": 539.7154541015625, + "y": 634.8856811523438 + }, + { + "x": 547.575439453125, + "y": 668.7610473632812 + }, + { + "x": 445.17327880859375, + "y": 353.6968994140625 + }, + { + "x": 448.7801208496094, + "y": 412.4934387207031 + }, + { + "x": 454.4578552246094, + "y": 472.61297607421875 + }, + { + "x": 459.4933776855469, + "y": 532.38427734375 + }, + { + "x": 466.1447448730469, + "y": 582.6947631835938 + }, + { + "x": 476.3757629394531, + "y": 629.078125 + }, + { + "x": 474.393310546875, + "y": 678.4203491210938 + }, + { + "x": 378.674560546875, + "y": 356.2423400878906 + }, + { + "x": 385.8464050292969, + "y": 420.1162109375 + }, + { + "x": 393.9269714355469, + "y": 475.1189270019531 + }, + { + "x": 402.0980224609375, + "y": 537.2725830078125 + }, + { + "x": 409.4127197265625, + "y": 587.295166015625 + }, + { + "x": 413.5245666503906, + "y": 637.5869140625 + }, + { + "x": 430.6169128417969, + "y": 674.5618286132812 + }, + { + "x": 316.2271423339844, + "y": 364.5216064453125 + }, + { + "x": 323.5169677734375, + "y": 423.4892883300781 + }, + { + "x": 330.30535888671875, + "y": 483.2403564453125 + }, + { + "x": 340.5833435058594, + "y": 540.3018188476562 + }, + { + "x": 350.8421630859375, + "y": 594.8245849609375 + }, + { + "x": 362.7396545410156, + "y": 637.7614135742188 + }, + { + "x": 375.0, + "y": 687.0 + }, + { + "x": 251.37095642089844, + "y": 371.0486145019531 + }, + { + "x": 261.6222839355469, + "y": 430.2173156738281 + }, + { + "x": 270.49249267578125, + "y": 490.77191162109375 + }, + { + "x": 282.1445007324219, + "y": 544.7528686523438 + }, + { + "x": 293.6371154785156, + "y": 596.4642333984375 + }, + { + "x": 299.4309997558594, + "y": 644.9290771484375 + }, + { + "x": 314.4097595214844, + "y": 695.3826293945312 + }, + { + "x": 193.5000457763672, + "y": 375.7271728515625 + }, + { + "x": 203.82107543945312, + "y": 434.5727233886719 + }, + { + "x": 212.51856994628906, + "y": 492.75372314453125 + }, + { + "x": 224.87298583984375, + "y": 549.6563110351562 + }, + { + "x": 237.20870971679688, + "y": 601.4334716796875 + }, + { + "x": 251.7103271484375, + "y": 646.3212280273438 + }, + { + "x": 264.423583984375, + "y": 700.3246459960938 + }, + { + "x": 136.41539001464844, + "y": 381.20574951171875 + }, + { + "x": 146.1302947998047, + "y": 439.3077087402344 + }, + { + "x": 158.82603454589844, + "y": 497.80029296875 + }, + { + "x": 172.16217041015625, + "y": 552.9912719726562 + }, + { + "x": 184.1516876220703, + "y": 603.605712890625 + }, + { + "x": 195.72039794921875, + "y": 652.5121459960938 + }, + { + "x": 205.38119506835938, + "y": 701.3845825195312 + } + ], + "reprojectionErrors": [ + { + "x": -6.7523193359375, + "y": 6.666046142578125 + }, + { + "x": -4.51556396484375, + "y": 3.426025390625 + }, + { + "x": -2.4476318359375, + "y": 0.914215087890625 + }, + { + "x": -2.8575439453125, + "y": -2.8428955078125 + }, + { + "x": 0.83441162109375, + "y": -1.9749755859375 + }, + { + "x": -5.023681640625, + "y": -7.78338623046875 + }, + { + "x": -6.747314453125, + "y": 8.27679443359375 + }, + { + "x": -6.143707275390625, + "y": 3.353424072265625 + }, + { + "x": -1.503509521484375, + "y": 3.067779541015625 + }, + { + "x": 0.792205810546875, + "y": -0.448883056640625 + }, + { + "x": 3.470245361328125, + "y": -5.429931640625 + }, + { + "x": 4.285308837890625, + "y": -2.673828125 + }, + { + "x": 1.2855224609375, + "y": 2.369140625 + }, + { + "x": 10.275177001953125, + "y": 2.8909912109375 + }, + { + "x": -1.493804931640625, + "y": 5.5733642578125 + }, + { + "x": 0.610595703125, + "y": 0.12908935546875 + }, + { + "x": 1.49786376953125, + "y": 1.650787353515625 + }, + { + "x": 2.001678466796875, + "y": -5.7884521484375 + }, + { + "x": 3.08319091796875, + "y": -2.81768798828125 + }, + { + "x": 7.102447509765625, + "y": -1.75396728515625 + }, + { + "x": -2.11138916015625, + "y": 11.066650390625 + }, + { + "x": -0.9158935546875, + "y": 2.083526611328125 + }, + { + "x": 2.100830078125, + "y": 1.468170166015625 + }, + { + "x": 5.275665283203125, + "y": -1.83319091796875 + }, + { + "x": 4.634765625, + "y": -4.25250244140625 + }, + { + "x": 3.702880859375, + "y": -5.8519287109375 + }, + { + "x": 0.837158203125, + "y": 2.4989013671875 + }, + { + "x": -2.672515869140625, + "y": 2.99017333984375 + }, + { + "x": 2.0358428955078125, + "y": 0.371124267578125 + }, + { + "x": 3.12286376953125, + "y": -0.51849365234375 + }, + { + "x": 5.212738037109375, + "y": -4.69439697265625 + }, + { + "x": 4.161407470703125, + "y": -4.10205078125 + }, + { + "x": 2.927734375, + "y": -2.95684814453125 + }, + { + "x": 7.06756591796875, + "y": -0.19879150390625 + }, + { + "x": 1.712738037109375, + "y": -0.9853515625 + }, + { + "x": -2.0470123291015625, + "y": 0.533477783203125 + }, + { + "x": 0.004119873046875, + "y": -0.102294921875 + }, + { + "x": 3.2654266357421875, + "y": -1.971893310546875 + }, + { + "x": 2.4770965576171875, + "y": -4.3665771484375 + }, + { + "x": 1.3340301513671875, + "y": -3.3507080078125 + }, + { + "x": -2.330322265625, + "y": 2.92266845703125 + }, + { + "x": -4.5447998046875, + "y": -1.47393798828125 + }, + { + "x": -6.9797821044921875, + "y": -0.076751708984375 + }, + { + "x": -3.2862396240234375, + "y": -0.0343017578125 + }, + { + "x": -3.0220947265625, + "y": -2.27911376953125 + }, + { + "x": -3.8245086669921875, + "y": -3.024169921875 + }, + { + "x": -3.685546875, + "y": -0.90594482421875 + }, + { + "x": -3.51141357421875, + "y": 1.2899169921875 + }, + { + "x": -1.79669189453125, + "y": 1.96697998046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.06710836142268363, + "y": -0.007171251220168412, + "z": 0.43473775151391725 + }, + "rotation": { + "quaternion": { + "W": 0.7260334291811269, + "X": 0.09836694268787452, + "Y": -0.10780727038573971, + "Z": 0.6719947892280937 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img20.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img20.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 495.4609375, + "y": 223.9817657470703 + }, + { + "x": 499.7064514160156, + "y": 286.0835266113281 + }, + { + "x": 502.8461608886719, + "y": 343.0441589355469 + }, + { + "x": 508.76104736328125, + "y": 399.3417053222656 + }, + { + "x": 513.2498168945312, + "y": 453.7059631347656 + }, + { + "x": 523.6710205078125, + "y": 510.10675048828125 + }, + { + "x": 532.7735595703125, + "y": 549.72119140625 + }, + { + "x": 437.4022216796875, + "y": 236.27847290039062 + }, + { + "x": 440.50018310546875, + "y": 289.28033447265625 + }, + { + "x": 448.999267578125, + "y": 351.5581359863281 + }, + { + "x": 451.3421630859375, + "y": 407.799560546875 + }, + { + "x": 460.1964111328125, + "y": 462.8671569824219 + }, + { + "x": 463.5579833984375, + "y": 513.3839111328125 + }, + { + "x": 471.04498291015625, + "y": 564.53662109375 + }, + { + "x": 376.0653381347656, + "y": 237.4090118408203 + }, + { + "x": 379.4615478515625, + "y": 297.9874572753906 + }, + { + "x": 389.2158203125, + "y": 353.3356018066406 + }, + { + "x": 396.70623779296875, + "y": 417.0489501953125 + }, + { + "x": 403.05560302734375, + "y": 467.37530517578125 + }, + { + "x": 410.400390625, + "y": 522.3388061523438 + }, + { + "x": 424.80926513671875, + "y": 560.7273559570312 + }, + { + "x": 319.3504943847656, + "y": 250.2561798095703 + }, + { + "x": 325.4680480957031, + "y": 302.545166015625 + }, + { + "x": 328.3182373046875, + "y": 363.6271057128906 + }, + { + "x": 338.2372131347656, + "y": 420.313720703125 + }, + { + "x": 348.1183776855469, + "y": 477.65625 + }, + { + "x": 354.1528625488281, + "y": 528.6466064453125 + }, + { + "x": 357.2489013671875, + "y": 572.85595703125 + }, + { + "x": 255.29629516601562, + "y": 258.07275390625 + }, + { + "x": 264.6587219238281, + "y": 313.6117858886719 + }, + { + "x": 272.05694580078125, + "y": 373.45147705078125 + }, + { + "x": 283.6461486816406, + "y": 430.51885986328125 + }, + { + "x": 290.548828125, + "y": 482.8572692871094 + }, + { + "x": 297.56494140625, + "y": 533.6932983398438 + }, + { + "x": 309.3133544921875, + "y": 585.3394775390625 + }, + { + "x": 199.25819396972656, + "y": 262.94390869140625 + }, + { + "x": 207.59092712402344, + "y": 323.03839111328125 + }, + { + "x": 215.4734344482422, + "y": 378.4001159667969 + }, + { + "x": 225.32411193847656, + "y": 438.0954284667969 + }, + { + "x": 239.4380645751953, + "y": 490.62457275390625 + }, + { + "x": 247.68963623046875, + "y": 539.39453125 + }, + { + "x": 257.6751708984375, + "y": 591.5369873046875 + }, + { + "x": 146.70726013183594, + "y": 271.5778503417969 + }, + { + "x": 152.90415954589844, + "y": 329.00164794921875 + }, + { + "x": 164.66358947753906, + "y": 386.48797607421875 + }, + { + "x": 174.2506561279297, + "y": 444.2340393066406 + }, + { + "x": 183.02540588378906, + "y": 497.227783203125 + }, + { + "x": 196.12042236328125, + "y": 548.8878784179688 + }, + { + "x": 202.2667236328125, + "y": 600.6524658203125 + } + ], + "reprojectionErrors": [ + { + "x": -8.60064697265625, + "y": 7.5953216552734375 + }, + { + "x": -5.336181640625, + "y": 1.970733642578125 + }, + { + "x": -1.076568603515625, + "y": 0.66986083984375 + }, + { + "x": 0.300018310546875, + "y": -0.7646484375 + }, + { + "x": 2.99755859375, + "y": -1.0426025390625 + }, + { + "x": -0.33990478515625, + "y": -4.114471435546875 + }, + { + "x": -2.45867919921875, + "y": 8.861328125 + }, + { + "x": -7.36962890625, + "y": 1.6545562744140625 + }, + { + "x": -2.522247314453125, + "y": 5.226287841796875 + }, + { + "x": -3.194305419921875, + "y": -1.29864501953125 + }, + { + "x": 2.174560546875, + "y": -2.587127685546875 + }, + { + "x": 0.919647216796875, + "y": -3.48162841796875 + }, + { + "x": 5.04779052734375, + "y": -0.58563232421875 + }, + { + "x": 4.943572998046875, + "y": 0.93292236328125 + }, + { + "x": -3.16717529296875, + "y": 6.91351318359375 + }, + { + "x": 1.8223876953125, + "y": 3.00946044921875 + }, + { + "x": 0.32781982421875, + "y": 3.511505126953125 + }, + { + "x": 0.9742431640625, + "y": -5.154937744140625 + }, + { + "x": 2.641937255859375, + "y": -1.2174072265625 + }, + { + "x": 3.1973876953125, + "y": -2.68048095703125 + }, + { + "x": -3.4251708984375, + "y": 11.6868896484375 + }, + { + "x": -3.90850830078125, + "y": 0.491058349609375 + }, + { + "x": -1.194549560546875, + "y": 4.981658935546875 + }, + { + "x": 4.65283203125, + "y": -0.14849853515625 + }, + { + "x": 3.300872802734375, + "y": -1.690093994140625 + }, + { + "x": 1.859405517578125, + "y": -4.67401123046875 + }, + { + "x": 4.1405029296875, + "y": -2.0723876953125 + }, + { + "x": 9.239013671875, + "y": 6.5626220703125 + }, + { + "x": 2.35247802734375, + "y": -0.863861083984375 + }, + { + "x": 2.272918701171875, + "y": 0.486328125 + }, + { + "x": 4.01556396484375, + "y": -3.295684814453125 + }, + { + "x": 1.428802490234375, + "y": -5.11578369140625 + }, + { + "x": 3.393646240234375, + "y": -2.996795654296875 + }, + { + "x": 5.113494873046875, + "y": -0.1453857421875 + }, + { + "x": 1.972747802734375, + "y": 1.14501953125 + }, + { + "x": 0.24468994140625, + "y": 0.765289306640625 + }, + { + "x": 1.6519775390625, + "y": -2.3258056640625 + }, + { + "x": 3.35931396484375, + "y": -1.5196533203125 + }, + { + "x": 2.95208740234375, + "y": -5.861175537109375 + }, + { + "x": -1.8611297607421875, + "y": -3.830047607421875 + }, + { + "x": -0.951080322265625, + "y": 1.18682861328125 + }, + { + "x": -1.9106903076171875, + "y": 2.0770263671875 + }, + { + "x": -5.7188873291015625, + "y": -1.327911376953125 + }, + { + "x": -1.7124786376953125, + "y": -1.629608154296875 + }, + { + "x": -3.427154541015625, + "y": -2.833404541015625 + }, + { + "x": -3.1239776611328125, + "y": -5.114990234375 + }, + { + "x": -2.1591033935546875, + "y": -3.441436767578125 + }, + { + "x": -5.6613311767578125, + "y": -1.21136474609375 + }, + { + "x": -2.3580474853515625, + "y": 0.1566162109375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.07972910549695025, + "y": -0.061868839199419046, + "z": 0.4758270536584448 + }, + "rotation": { + "quaternion": { + "W": 0.7446583294765954, + "X": 0.026269720904099656, + "Y": -0.06849339215083484, + "Z": 0.6634022379645843 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img21.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img21.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 508.77020263671875, + "y": 160.9274139404297 + }, + { + "x": 511.58465576171875, + "y": 222.93228149414062 + }, + { + "x": 514.204345703125, + "y": 280.4492492675781 + }, + { + "x": 519.529296875, + "y": 340.2828063964844 + }, + { + "x": 520.2933959960938, + "y": 395.7313537597656 + }, + { + "x": 525.1956787109375, + "y": 449.44317626953125 + }, + { + "x": 531.86669921875, + "y": 499.6632080078125 + }, + { + "x": 449.7579040527344, + "y": 170.73333740234375 + }, + { + "x": 451.0747985839844, + "y": 225.66598510742188 + }, + { + "x": 453.28466796875, + "y": 284.4629211425781 + }, + { + "x": 458.5948181152344, + "y": 346.5509948730469 + }, + { + "x": 466.3468933105469, + "y": 403.20709228515625 + }, + { + "x": 468.6861877441406, + "y": 454.34722900390625 + }, + { + "x": 474.557861328125, + "y": 508.69921875 + }, + { + "x": 388.2846374511719, + "y": 170.26358032226562 + }, + { + "x": 391.6070861816406, + "y": 233.3833770751953 + }, + { + "x": 397.44354248046875, + "y": 287.56268310546875 + }, + { + "x": 402.7525329589844, + "y": 353.2247009277344 + }, + { + "x": 406.2810363769531, + "y": 406.2496643066406 + }, + { + "x": 412.72552490234375, + "y": 461.8354797363281 + }, + { + "x": 416.8215026855469, + "y": 512.8800659179688 + }, + { + "x": 329.6227722167969, + "y": 180.70556640625 + }, + { + "x": 333.0771789550781, + "y": 236.7135772705078 + }, + { + "x": 334.88275146484375, + "y": 296.2102355957031 + }, + { + "x": 343.7943115234375, + "y": 354.8220520019531 + }, + { + "x": 352.6749267578125, + "y": 415.1042785644531 + }, + { + "x": 355.5692443847656, + "y": 467.3409423828125 + }, + { + "x": 363.2341003417969, + "y": 519.552978515625 + }, + { + "x": 265.92877197265625, + "y": 188.68824768066406 + }, + { + "x": 272.8089904785156, + "y": 244.31683349609375 + }, + { + "x": 277.6133728027344, + "y": 306.2232360839844 + }, + { + "x": 284.45263671875, + "y": 359.91937255859375 + }, + { + "x": 292.54425048828125, + "y": 418.0718688964844 + }, + { + "x": 299.35009765625, + "y": 470.5545654296875 + }, + { + "x": 309.4488220214844, + "y": 523.0877685546875 + }, + { + "x": 210.55613708496094, + "y": 192.89566040039062 + }, + { + "x": 217.10537719726562, + "y": 251.75950622558594 + }, + { + "x": 222.5576934814453, + "y": 309.72454833984375 + }, + { + "x": 229.6727294921875, + "y": 368.76995849609375 + }, + { + "x": 240.78941345214844, + "y": 423.8117980957031 + }, + { + "x": 246.9418182373047, + "y": 475.6924743652344 + }, + { + "x": 254.12686157226562, + "y": 526.4354248046875 + }, + { + "x": 156.338623046875, + "y": 200.2826690673828 + }, + { + "x": 161.2366485595703, + "y": 257.9405822753906 + }, + { + "x": 169.63442993164062, + "y": 316.42401123046875 + }, + { + "x": 176.3724365234375, + "y": 373.95404052734375 + }, + { + "x": 184.09518432617188, + "y": 429.71588134765625 + }, + { + "x": 196.13827514648438, + "y": 483.69085693359375 + }, + { + "x": 200.6282196044922, + "y": 536.4570922851562 + } + ], + "reprojectionErrors": [ + { + "x": -9.82611083984375, + "y": 5.1406402587890625 + }, + { + "x": -6.726898193359375, + "y": 1.1522674560546875 + }, + { + "x": -3.489349365234375, + "y": 1.124176025390625 + }, + { + "x": -3.01239013671875, + "y": -1.73773193359375 + }, + { + "x": 1.9710693359375, + "y": -0.72174072265625 + }, + { + "x": 2.76318359375, + "y": 1.533843994140625 + }, + { + "x": 1.73431396484375, + "y": 6.793670654296875 + }, + { + "x": -8.3023681640625, + "y": 0.5335693359375 + }, + { + "x": -3.442596435546875, + "y": 3.5972747802734375 + }, + { + "x": 0.46429443359375, + "y": 2.269317626953125 + }, + { + "x": 1.212127685546875, + "y": -2.86676025390625 + }, + { + "x": -0.53961181640625, + "y": -3.077728271484375 + }, + { + "x": 3.064910888671875, + "y": 1.730377197265625 + }, + { + "x": 3.08160400390625, + "y": 2.839324951171875 + }, + { + "x": -4.34478759765625, + "y": 6.1949615478515625 + }, + { + "x": -1.2269287109375, + "y": 1.05572509765625 + }, + { + "x": -0.6865234375, + "y": 4.32977294921875 + }, + { + "x": 0.319183349609375, + "y": -4.395721435546875 + }, + { + "x": 3.04437255859375, + "y": -0.9908447265625 + }, + { + "x": 2.79376220703125, + "y": -0.643585205078125 + }, + { + "x": 4.832916259765625, + "y": 3.7578125 + }, + { + "x": -3.2386474609375, + "y": 0.938568115234375 + }, + { + "x": 0.011627197265625, + "y": 2.8996429443359375 + }, + { + "x": 4.84381103515625, + "y": 0.844940185546875 + }, + { + "x": 2.50439453125, + "y": -0.84161376953125 + }, + { + "x": 0.13153076171875, + "y": -4.7052001953125 + }, + { + "x": 3.681793212890625, + "y": -1.019866943359375 + }, + { + "x": 2.39959716796875, + "y": 2.20306396484375 + }, + { + "x": 2.8466796875, + "y": -1.8634185791015625 + }, + { + "x": 2.936370849609375, + "y": 0.469940185546875 + }, + { + "x": 5.031494140625, + "y": -4.001617431640625 + }, + { + "x": 5.02264404296875, + "y": -0.779632568359375 + }, + { + "x": 3.69366455078125, + "y": -2.52056884765625 + }, + { + "x": 3.583984375, + "y": 0.911651611328125 + }, + { + "x": 0.116180419921875, + "y": 3.80633544921875 + }, + { + "x": 0.5446929931640625, + "y": -0.89385986328125 + }, + { + "x": 1.23162841796875, + "y": -1.798583984375 + }, + { + "x": 2.9415130615234375, + "y": -2.3316650390625 + }, + { + "x": 2.9161224365234375, + "y": -4.461883544921875 + }, + { + "x": -1.1820831298828125, + "y": -3.095184326171875 + }, + { + "x": -0.3858642578125, + "y": 0.936004638671875 + }, + { + "x": -0.6908111572265625, + "y": 5.61785888671875 + }, + { + "x": -2.9913177490234375, + "y": -3.1064910888671875 + }, + { + "x": -0.3858184814453125, + "y": -2.80377197265625 + }, + { + "x": -1.3575897216796875, + "y": -3.8538818359375 + }, + { + "x": -0.7456512451171875, + "y": -4.467498779296875 + }, + { + "x": -1.19305419921875, + "y": -3.8197021484375 + }, + { + "x": -6.03399658203125, + "y": -1.8818359375 + }, + { + "x": -3.393646240234375, + "y": 0.777587890625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.0730024081944856, + "y": -0.08956976317041257, + "z": 0.46742299619946964 + }, + "rotation": { + "quaternion": { + "W": 0.7376977240408101, + "X": 0.026197311451723517, + "Y": -0.03259131779819815, + "Z": 0.6738349759561959 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img22.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img22.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 493.8373107910156, + "y": 123.48961639404297 + }, + { + "x": 496.48077392578125, + "y": 186.4886474609375 + }, + { + "x": 499.0115661621094, + "y": 243.40164184570312 + }, + { + "x": 504.2799377441406, + "y": 304.0436706542969 + }, + { + "x": 505.5819091796875, + "y": 359.5430908203125 + }, + { + "x": 512.4962768554688, + "y": 416.0694885253906 + }, + { + "x": 518.740478515625, + "y": 464.2217102050781 + }, + { + "x": 434.6506652832031, + "y": 134.24732971191406 + }, + { + "x": 435.1322937011719, + "y": 189.74282836914062 + }, + { + "x": 438.64898681640625, + "y": 248.0453643798828 + }, + { + "x": 443.1832580566406, + "y": 310.1567687988281 + }, + { + "x": 450.91558837890625, + "y": 367.0895690917969 + }, + { + "x": 453.0286865234375, + "y": 419.99542236328125 + }, + { + "x": 458.8688659667969, + "y": 474.0955810546875 + }, + { + "x": 373.42974853515625, + "y": 133.44662475585938 + }, + { + "x": 376.35833740234375, + "y": 196.67575073242188 + }, + { + "x": 383.3261413574219, + "y": 250.328369140625 + }, + { + "x": 387.1506652832031, + "y": 316.8994140625 + }, + { + "x": 392.4713134765625, + "y": 369.6310119628906 + }, + { + "x": 398.37432861328125, + "y": 427.7323303222656 + }, + { + "x": 402.4509582519531, + "y": 478.68804931640625 + }, + { + "x": 313.05987548828125, + "y": 143.6998748779297 + }, + { + "x": 317.1243591308594, + "y": 201.56826782226562 + }, + { + "x": 319.6161804199219, + "y": 259.26080322265625 + }, + { + "x": 329.0289001464844, + "y": 318.32220458984375 + }, + { + "x": 337.1316223144531, + "y": 379.62738037109375 + }, + { + "x": 338.5727844238281, + "y": 436.81573486328125 + }, + { + "x": 348.2114562988281, + "y": 486.1225891113281 + }, + { + "x": 252.0546112060547, + "y": 152.57611083984375 + }, + { + "x": 258.9744873046875, + "y": 208.51034545898438 + }, + { + "x": 262.4681701660156, + "y": 270.7677307128906 + }, + { + "x": 268.6574401855469, + "y": 323.3663635253906 + }, + { + "x": 277.1724853515625, + "y": 383.0621643066406 + }, + { + "x": 283.35235595703125, + "y": 435.7566833496094 + }, + { + "x": 294.1697998046875, + "y": 489.7194519042969 + }, + { + "x": 197.1179656982422, + "y": 157.3662567138672 + }, + { + "x": 202.53443908691406, + "y": 216.43130493164062 + }, + { + "x": 208.7930450439453, + "y": 274.84075927734375 + }, + { + "x": 215.0869903564453, + "y": 333.3376159667969 + }, + { + "x": 225.09011840820312, + "y": 388.9903564453125 + }, + { + "x": 231.59896850585938, + "y": 441.7045593261719 + }, + { + "x": 238.26370239257812, + "y": 493.58636474609375 + }, + { + "x": 143.35667419433594, + "y": 165.33326721191406 + }, + { + "x": 148.2891387939453, + "y": 224.00820922851562 + }, + { + "x": 155.3234405517578, + "y": 281.656982421875 + }, + { + "x": 160.98123168945312, + "y": 338.2244567871094 + }, + { + "x": 169.33103942871094, + "y": 395.342041015625 + }, + { + "x": 181.40774536132812, + "y": 450.4139404296875 + }, + { + "x": 185.3419189453125, + "y": 503.9189453125 + } + ], + "reprojectionErrors": [ + { + "x": -10.282958984375, + "y": 4.385231018066406 + }, + { + "x": -6.885772705078125, + "y": -0.442901611328125 + }, + { + "x": -3.4090576171875, + "y": 0.5288543701171875 + }, + { + "x": -2.702484130859375, + "y": -2.509124755859375 + }, + { + "x": 1.93853759765625, + "y": -0.679931640625 + }, + { + "x": 0.93572998046875, + "y": -0.147857666015625 + }, + { + "x": 0.572265625, + "y": 8.49334716796875 + }, + { + "x": -8.460418701171875, + "y": -0.4952239990234375 + }, + { + "x": -2.76904296875, + "y": 2.0871734619140625 + }, + { + "x": -0.1475830078125, + "y": 1.577362060546875 + }, + { + "x": 1.42205810546875, + "y": -3.0211181640625 + }, + { + "x": -0.239990234375, + "y": -2.715484619140625 + }, + { + "x": 3.684173583984375, + "y": 1.34783935546875 + }, + { + "x": 3.8487548828125, + "y": 3.952667236328125 + }, + { + "x": -4.471893310546875, + "y": 6.153228759765625 + }, + { + "x": -1.095367431640625, + "y": 0.9136810302734375 + }, + { + "x": -1.794586181640625, + "y": 4.9663543701171875 + }, + { + "x": 0.613616943359375, + "y": -4.17828369140625 + }, + { + "x": 1.4903564453125, + "y": 0.24285888671875 + }, + { + "x": 1.75006103515625, + "y": -0.97412109375 + }, + { + "x": 3.80206298828125, + "y": 4.691162109375 + }, + { + "x": -1.21612548828125, + "y": 1.7196502685546875 + }, + { + "x": 1.156524658203125, + "y": 1.7571258544921875 + }, + { + "x": 5.0635986328125, + "y": 1.687042236328125 + }, + { + "x": 2.01220703125, + "y": -0.029998779296875 + }, + { + "x": 0.23388671875, + "y": -4.26361083984375 + }, + { + "x": 5.080810546875, + "y": -4.64801025390625 + }, + { + "x": 1.69451904296875, + "y": 2.586517333984375 + }, + { + "x": 2.7801666259765625, + "y": -1.36358642578125 + }, + { + "x": 2.4293212890625, + "y": 0.5289154052734375 + }, + { + "x": 5.464752197265625, + "y": -4.184326171875 + }, + { + "x": 5.765380859375, + "y": 0.48388671875 + }, + { + "x": 3.70166015625, + "y": -2.217132568359375 + }, + { + "x": 3.935150146484375, + "y": 1.816314697265625 + }, + { + "x": -0.5062255859375, + "y": 4.319732666015625 + }, + { + "x": 0.7997589111328125, + "y": -0.386016845703125 + }, + { + "x": 2.084197998046875, + "y": -1.69891357421875 + }, + { + "x": 2.4849395751953125, + "y": -2.6380615234375 + }, + { + "x": 2.8094329833984375, + "y": -3.941131591796875 + }, + { + "x": -0.615478515625, + "y": -2.671417236328125 + }, + { + "x": -0.5856781005859375, + "y": 1.270721435546875 + }, + { + "x": -0.7506866455078125, + "y": 5.7841796875 + }, + { + "x": -2.2770538330078125, + "y": -2.609222412109375 + }, + { + "x": -0.376678466796875, + "y": -3.602081298828125 + }, + { + "x": -0.6213836669921875, + "y": -3.84991455078125 + }, + { + "x": 0.4678497314453125, + "y": -3.292266845703125 + }, + { + "x": -1.176788330078125, + "y": -3.555328369140625 + }, + { + "x": -6.5895233154296875, + "y": -2.038177490234375 + }, + { + "x": -3.9002532958984375, + "y": 0.78546142578125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.07941523900513038, + "y": -0.1058761327903468, + "z": 0.4653092367542202 + }, + "rotation": { + "quaternion": { + "W": 0.740183536205294, + "X": 0.022456416768543742, + "Y": -0.00932335905131456, + "Z": 0.6719651159491421 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img23.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img23.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 436.080078125, + "y": 124.85034942626953 + }, + { + "x": 439.3753967285156, + "y": 191.0926971435547 + }, + { + "x": 441.0534973144531, + "y": 251.98577880859375 + }, + { + "x": 446.43914794921875, + "y": 312.1231689453125 + }, + { + "x": 448.0570983886719, + "y": 374.80572509765625 + }, + { + "x": 459.3846435546875, + "y": 431.17059326171875 + }, + { + "x": 468.5501403808594, + "y": 479.4733581542969 + }, + { + "x": 374.3339538574219, + "y": 137.07496643066406 + }, + { + "x": 375.6905822753906, + "y": 194.3775634765625 + }, + { + "x": 382.0935974121094, + "y": 258.2116394042969 + }, + { + "x": 386.89703369140625, + "y": 318.1448059082031 + }, + { + "x": 395.1006164550781, + "y": 380.9822692871094 + }, + { + "x": 397.32305908203125, + "y": 435.0810241699219 + }, + { + "x": 404.1622009277344, + "y": 490.6396484375 + }, + { + "x": 310.437744140625, + "y": 136.4895782470703 + }, + { + "x": 314.7228088378906, + "y": 203.8250732421875 + }, + { + "x": 319.6537170410156, + "y": 259.61590576171875 + }, + { + "x": 324.3182678222656, + "y": 325.5825500488281 + }, + { + "x": 331.0950622558594, + "y": 384.8397216796875 + }, + { + "x": 340.8876647949219, + "y": 443.01373291015625 + }, + { + "x": 346.1448974609375, + "y": 496.0214538574219 + }, + { + "x": 248.21038818359375, + "y": 148.34915161132812 + }, + { + "x": 250.3168182373047, + "y": 211.6970672607422 + }, + { + "x": 257.3430480957031, + "y": 268.41522216796875 + }, + { + "x": 265.37774658203125, + "y": 332.1253356933594 + }, + { + "x": 276.0863952636719, + "y": 392.3152160644531 + }, + { + "x": 282.2514343261719, + "y": 447.8037414550781 + }, + { + "x": 290.5633850097656, + "y": 501.9400329589844 + }, + { + "x": 187.07150268554688, + "y": 159.20985412597656 + }, + { + "x": 196.0038299560547, + "y": 217.01425170898438 + }, + { + "x": 200.23634338378906, + "y": 280.50848388671875 + }, + { + "x": 207.2932586669922, + "y": 335.3958435058594 + }, + { + "x": 217.5872344970703, + "y": 395.7560729980469 + }, + { + "x": 223.58917236328125, + "y": 450.5804138183594 + }, + { + "x": 235.30044555664062, + "y": 508.3089599609375 + }, + { + "x": 132.9478759765625, + "y": 164.2071533203125 + }, + { + "x": 138.68565368652344, + "y": 225.35641479492188 + }, + { + "x": 146.64208984375, + "y": 286.02313232421875 + }, + { + "x": 153.36326599121094, + "y": 345.3753356933594 + }, + { + "x": 164.2793426513672, + "y": 402.4170227050781 + }, + { + "x": 172.07960510253906, + "y": 457.11474609375 + }, + { + "x": 181.65940856933594, + "y": 510.92645263671875 + }, + { + "x": 80.72976684570312, + "y": 172.01487731933594 + }, + { + "x": 87.56546020507812, + "y": 234.65760803222656 + }, + { + "x": 93.4612045288086, + "y": 292.1730651855469 + }, + { + "x": 99.8193130493164, + "y": 350.55389404296875 + }, + { + "x": 108.54286193847656, + "y": 410.1094665527344 + }, + { + "x": 122.79331970214844, + "y": 464.9104309082031 + }, + { + "x": 128.0615997314453, + "y": 519.6622924804688 + } + ], + "reprojectionErrors": [ + { + "x": -11.99969482421875, + "y": 5.000450134277344 + }, + { + "x": -8.2933349609375, + "y": -0.4495086669921875 + }, + { + "x": -3.018157958984375, + "y": -0.920745849609375 + }, + { + "x": -1.49798583984375, + "y": -0.9998779296875 + }, + { + "x": 3.743194580078125, + "y": -3.980926513671875 + }, + { + "x": -0.77105712890625, + "y": -0.994354248046875 + }, + { + "x": -3.16827392578125, + "y": 9.710845947265625 + }, + { + "x": -9.1900634765625, + "y": -0.2345733642578125 + }, + { + "x": -3.39373779296875, + "y": 2.994293212890625 + }, + { + "x": -2.69403076171875, + "y": -0.675689697265625 + }, + { + "x": -0.444122314453125, + "y": -0.805267333984375 + }, + { + "x": -1.64288330078125, + "y": -4.19287109375 + }, + { + "x": 3.09185791015625, + "y": 0.811126708984375 + }, + { + "x": 3.16302490234375, + "y": 4.014678955078125 + }, + { + "x": -3.798797607421875, + "y": 7.27264404296875 + }, + { + "x": -0.781524658203125, + "y": 0.2146148681640625 + }, + { + "x": 1.53778076171875, + "y": 4.336944580078125 + }, + { + "x": 4.072265625, + "y": -2.07403564453125 + }, + { + "x": 4.44415283203125, + "y": -2.126373291015625 + }, + { + "x": 1.75079345703125, + "y": -1.439727783203125 + }, + { + "x": 3.544158935546875, + "y": 4.075408935546875 + }, + { + "x": 0.336578369140625, + "y": 2.26953125 + }, + { + "x": 5.6800537109375, + "y": -1.048126220703125 + }, + { + "x": 6.049774169921875, + "y": 1.902618408203125 + }, + { + "x": 5.3580322265625, + "y": -2.4931640625 + }, + { + "x": 1.940185546875, + "y": -3.7166748046875 + }, + { + "x": 3.014739990234375, + "y": -0.58026123046875 + }, + { + "x": 1.89202880859375, + "y": 3.57330322265625 + }, + { + "x": 3.77838134765625, + "y": -1.7977447509765625 + }, + { + "x": 2.4418182373046875, + "y": 0.187530517578125 + }, + { + "x": 5.7493133544921875, + "y": -3.87548828125 + }, + { + "x": 6.1776123046875, + "y": 0.316619873046875 + }, + { + "x": 3.3149566650390625, + "y": -1.309356689453125 + }, + { + "x": 4.691375732421875, + "y": 2.261810302734375 + }, + { + "x": 0.306365966796875, + "y": 2.596343994140625 + }, + { + "x": 0.5821380615234375, + "y": -0.0623931884765625 + }, + { + "x": 2.584381103515625, + "y": -1.6560516357421875 + }, + { + "x": 2.3104248046875, + "y": -3.122833251953125 + }, + { + "x": 3.215179443359375, + "y": -3.624114990234375 + }, + { + "x": -0.130584716796875, + "y": -2.15740966796875 + }, + { + "x": -0.4152374267578125, + "y": 1.317138671875 + }, + { + "x": -2.5332183837890625, + "y": 5.34783935546875 + }, + { + "x": -4.15960693359375, + "y": -1.1960601806640625 + }, + { + "x": -3.1125259399414062, + "y": -4.5108795166015625 + }, + { + "x": -1.1847763061523438, + "y": -3.0513916015625 + }, + { + "x": 0.22231292724609375, + "y": -2.803619384765625 + }, + { + "x": -0.7933807373046875, + "y": -4.070556640625 + }, + { + "x": -7.392364501953125, + "y": -0.91644287109375 + }, + { + "x": -5.064643859863281, + "y": 1.9593505859375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.10093678010458344, + "y": -0.10049464024220202, + "z": 0.44529465557754155 + }, + "rotation": { + "quaternion": { + "W": 0.7416890505693992, + "X": 0.041945830754054406, + "Y": 0.0024422009288738696, + "Z": 0.6694265719273762 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img24.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img24.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 420.2383117675781, + "y": 288.74407958984375 + }, + { + "x": 420.5305480957031, + "y": 354.7489318847656 + }, + { + "x": 420.1208190917969, + "y": 415.13055419921875 + }, + { + "x": 423.3437194824219, + "y": 474.76409912109375 + }, + { + "x": 425.069580078125, + "y": 531.643798828125 + }, + { + "x": 430.4569091796875, + "y": 588.37109375 + }, + { + "x": 437.1793212890625, + "y": 632.4398803710938 + }, + { + "x": 358.2027282714844, + "y": 296.4140930175781 + }, + { + "x": 357.00115966796875, + "y": 355.8585205078125 + }, + { + "x": 360.66046142578125, + "y": 417.9820861816406 + }, + { + "x": 363.0330810546875, + "y": 477.8363342285156 + }, + { + "x": 368.0907897949219, + "y": 536.5175170898438 + }, + { + "x": 372.1597900390625, + "y": 585.7783813476562 + }, + { + "x": 371.3133544921875, + "y": 638.592041015625 + }, + { + "x": 295.2945556640625, + "y": 292.23504638671875 + }, + { + "x": 296.1300048828125, + "y": 359.4290771484375 + }, + { + "x": 301.1573181152344, + "y": 415.45501708984375 + }, + { + "x": 304.3258056640625, + "y": 483.56512451171875 + }, + { + "x": 307.6513366699219, + "y": 537.36474609375 + }, + { + "x": 312.13104248046875, + "y": 592.71484375 + }, + { + "x": 316.7134094238281, + "y": 644.123779296875 + }, + { + "x": 233.08924865722656, + "y": 299.5770263671875 + }, + { + "x": 236.28201293945312, + "y": 359.5489196777344 + }, + { + "x": 236.6597137451172, + "y": 421.6853332519531 + }, + { + "x": 244.09017944335938, + "y": 482.533935546875 + }, + { + "x": 252.30413818359375, + "y": 543.458251953125 + }, + { + "x": 254.06126403808594, + "y": 598.1962890625 + }, + { + "x": 261.696533203125, + "y": 647.1302490234375 + }, + { + "x": 169.07382202148438, + "y": 304.4082336425781 + }, + { + "x": 174.90005493164062, + "y": 363.90509033203125 + }, + { + "x": 177.9188232421875, + "y": 428.5322265625 + }, + { + "x": 185.05474853515625, + "y": 484.57177734375 + }, + { + "x": 192.3042755126953, + "y": 542.78955078125 + }, + { + "x": 198.72544860839844, + "y": 596.283203125 + }, + { + "x": 207.83306884765625, + "y": 648.5672607421875 + }, + { + "x": 112.45230865478516, + "y": 304.9660339355469 + }, + { + "x": 116.89784240722656, + "y": 368.09002685546875 + }, + { + "x": 121.66001892089844, + "y": 427.2063293457031 + }, + { + "x": 127.91616821289062, + "y": 490.6426696777344 + }, + { + "x": 139.12255859375, + "y": 545.0735473632812 + }, + { + "x": 146.45867919921875, + "y": 596.5104370117188 + }, + { + "x": 154.23289489746094, + "y": 649.9381103515625 + }, + { + "x": 58.46853256225586, + "y": 308.4079284667969 + }, + { + "x": 61.58424377441406, + "y": 369.50506591796875 + }, + { + "x": 69.26646423339844, + "y": 431.2144470214844 + }, + { + "x": 75.66219329833984, + "y": 489.87213134765625 + }, + { + "x": 82.58810424804688, + "y": 548.1298828125 + }, + { + "x": 95.12451934814453, + "y": 601.2998046875 + }, + { + "x": 98.37818908691406, + "y": 654.4828491210938 + } + ], + "reprojectionErrors": [ + { + "x": -10.0794677734375, + "y": 6.20361328125 + }, + { + "x": -5.9281005859375, + "y": 0.33648681640625 + }, + { + "x": -1.14239501953125, + "y": -0.747589111328125 + }, + { + "x": -0.0552978515625, + "y": -1.90283203125 + }, + { + "x": 2.4644775390625, + "y": -1.10308837890625 + }, + { + "x": 1.260009765625, + "y": -0.93017578125 + }, + { + "x": -1.340850830078125, + "y": 11.14105224609375 + }, + { + "x": -7.892730712890625, + "y": 1.11199951171875 + }, + { + "x": -1.833251953125, + "y": 1.681610107421875 + }, + { + "x": -0.70916748046875, + "y": -1.264862060546875 + }, + { + "x": 1.628936767578125, + "y": -2.75811767578125 + }, + { + "x": 1.211090087890625, + "y": -3.8741455078125 + }, + { + "x": 1.7127685546875, + "y": 3.65380859375 + }, + { + "x": 7.0623779296875, + "y": 6.87158203125 + }, + { + "x": -4.653076171875, + "y": 7.865325927734375 + }, + { + "x": -0.21868896484375, + "y": 0.566741943359375 + }, + { + "x": -0.057464599609375, + "y": 3.60235595703125 + }, + { + "x": 1.88330078125, + "y": -6.25927734375 + }, + { + "x": 3.589691162109375, + "y": -2.6033935546875 + }, + { + "x": 4.066375732421875, + "y": -1.27154541015625 + }, + { + "x": 4.366729736328125, + "y": 3.24688720703125 + }, + { + "x": -1.9508056640625, + "y": 3.094146728515625 + }, + { + "x": 0.536102294921875, + "y": 2.904083251953125 + }, + { + "x": 5.7500457763671875, + "y": -0.281402587890625 + }, + { + "x": 3.8253631591796875, + "y": -2.98931884765625 + }, + { + "x": 1.03338623046875, + "y": -6.56317138671875 + }, + { + "x": 4.6165008544921875, + "y": -4.72161865234375 + }, + { + "x": 2.24163818359375, + "y": 2.1719970703125 + }, + { + "x": 2.7124786376953125, + "y": 0.830841064453125 + }, + { + "x": 2.9738616943359375, + "y": 1.0072021484375 + }, + { + "x": 5.947998046875, + "y": -4.77484130859375 + }, + { + "x": 4.712554931640625, + "y": -2.77679443359375 + }, + { + "x": 3.2733306884765625, + "y": -3.74456787109375 + }, + { + "x": 2.574462890625, + "y": -0.756591796875 + }, + { + "x": -0.896759033203125, + "y": 2.69140625 + }, + { + "x": 0.11829376220703125, + "y": 2.83868408203125 + }, + { + "x": 2.1666259765625, + "y": -0.7158203125 + }, + { + "x": 3.79693603515625, + "y": -1.088043212890625 + }, + { + "x": 3.8343658447265625, + "y": -6.58526611328125 + }, + { + "x": -1.1749725341796875, + "y": -3.86212158203125 + }, + { + "x": -2.4082489013671875, + "y": 1.089111328125 + }, + { + "x": -4.171600341796875, + "y": 3.30224609375 + }, + { + "x": -4.991466522216797, + "y": 1.96075439453125 + }, + { + "x": -1.2085494995117188, + "y": 0.334259033203125 + }, + { + "x": -2.1001510620117188, + "y": -2.727386474609375 + }, + { + "x": -1.810638427734375, + "y": -3.539794921875 + }, + { + "x": -2.1541595458984375, + "y": -4.73504638671875 + }, + { + "x": -8.20855712890625, + "y": -1.6060791015625 + }, + { + "x": -5.078208923339844, + "y": 0.76470947265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.10693884489877341, + "y": -0.0314121821906033, + "z": 0.44598170564488016 + }, + "rotation": { + "quaternion": { + "W": 0.720576111132781, + "X": 0.05269553497117179, + "Y": -0.03545876270111823, + "Z": 0.690460661302703 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img25.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img25.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 416.537841796875, + "y": 299.3531188964844 + }, + { + "x": 416.36248779296875, + "y": 366.61700439453125 + }, + { + "x": 415.1244201660156, + "y": 428.5586242675781 + }, + { + "x": 418.20477294921875, + "y": 489.929931640625 + }, + { + "x": 418.3753662109375, + "y": 547.8226318359375 + }, + { + "x": 423.33892822265625, + "y": 604.9708862304688 + }, + { + "x": 429.2922058105469, + "y": 650.3749389648438 + }, + { + "x": 352.58441162109375, + "y": 305.3567199707031 + }, + { + "x": 350.90032958984375, + "y": 367.2549743652344 + }, + { + "x": 354.2186584472656, + "y": 431.09686279296875 + }, + { + "x": 355.2904968261719, + "y": 492.19610595703125 + }, + { + "x": 360.1297607421875, + "y": 551.463623046875 + }, + { + "x": 364.7554016113281, + "y": 601.1138916015625 + }, + { + "x": 362.3494567871094, + "y": 656.2056884765625 + }, + { + "x": 287.9730529785156, + "y": 301.5187072753906 + }, + { + "x": 288.1109924316406, + "y": 369.9931945800781 + }, + { + "x": 292.3284912109375, + "y": 428.4729309082031 + }, + { + "x": 295.59893798828125, + "y": 496.811767578125 + }, + { + "x": 298.2904052734375, + "y": 552.1744384765625 + }, + { + "x": 301.529052734375, + "y": 607.80419921875 + }, + { + "x": 308.18804931640625, + "y": 659.2822875976562 + }, + { + "x": 225.19607543945312, + "y": 308.1914978027344 + }, + { + "x": 227.73770141601562, + "y": 368.1131286621094 + }, + { + "x": 227.30828857421875, + "y": 433.909423828125 + }, + { + "x": 233.65142822265625, + "y": 495.73638916015625 + }, + { + "x": 241.02279663085938, + "y": 557.3789672851562 + }, + { + "x": 242.59988403320312, + "y": 613.726806640625 + }, + { + "x": 250.20411682128906, + "y": 663.46533203125 + }, + { + "x": 158.6585693359375, + "y": 311.4255065917969 + }, + { + "x": 162.6428985595703, + "y": 372.5264892578125 + }, + { + "x": 166.6552734375, + "y": 438.8944396972656 + }, + { + "x": 173.6134796142578, + "y": 497.58941650390625 + }, + { + "x": 179.90048217773438, + "y": 556.324951171875 + }, + { + "x": 186.51121520996094, + "y": 611.1585693359375 + }, + { + "x": 195.42713928222656, + "y": 664.17236328125 + }, + { + "x": 100.26535034179688, + "y": 311.568603515625 + }, + { + "x": 105.22360229492188, + "y": 375.9465026855469 + }, + { + "x": 108.14620971679688, + "y": 437.184326171875 + }, + { + "x": 114.38497924804688, + "y": 502.08416748046875 + }, + { + "x": 125.58167266845703, + "y": 558.0604858398438 + }, + { + "x": 133.29049682617188, + "y": 610.259521484375 + }, + { + "x": 140.69024658203125, + "y": 665.1177978515625 + }, + { + "x": 44.347190856933594, + "y": 314.3561706542969 + }, + { + "x": 47.294029235839844, + "y": 376.8662109375 + }, + { + "x": 55.294925689697266, + "y": 439.7534484863281 + }, + { + "x": 61.47208786010742, + "y": 500.8770751953125 + }, + { + "x": 68.35061645507812, + "y": 558.8131713867188 + }, + { + "x": 80.13017272949219, + "y": 614.0814208984375 + }, + { + "x": 83.12875366210938, + "y": 668.7191772460938 + } + ], + "reprojectionErrors": [ + { + "x": -10.40948486328125, + "y": 6.18133544921875 + }, + { + "x": -6.329559326171875, + "y": 0.526824951171875 + }, + { + "x": -1.25152587890625, + "y": -0.733856201171875 + }, + { + "x": -0.55487060546875, + "y": -2.328155517578125 + }, + { + "x": 2.990234375, + "y": -1.3240966796875 + }, + { + "x": 1.682647705078125, + "y": -0.43292236328125 + }, + { + "x": -0.672882080078125, + "y": 11.3671875 + }, + { + "x": -7.93048095703125, + "y": 2.009185791015625 + }, + { + "x": -1.880523681640625, + "y": 1.60162353515625 + }, + { + "x": -0.905670166015625, + "y": -1.674652099609375 + }, + { + "x": 2.244873046875, + "y": -3.10888671875 + }, + { + "x": 1.558990478515625, + "y": -3.5885009765625 + }, + { + "x": 1.019500732421875, + "y": 4.69476318359375 + }, + { + "x": 7.44610595703125, + "y": 6.70416259765625 + }, + { + "x": -4.615447998046875, + "y": 7.67877197265625 + }, + { + "x": 0.0712890625, + "y": 0.581512451171875 + }, + { + "x": 0.59771728515625, + "y": 2.55718994140625 + }, + { + "x": 1.992584228515625, + "y": -6.2237548828125 + }, + { + "x": 3.889801025390625, + "y": -2.90264892578125 + }, + { + "x": 5.16522216796875, + "y": -0.7000732421875 + }, + { + "x": 2.947509765625, + "y": 4.82464599609375 + }, + { + "x": -2.972137451171875, + "y": 2.838104248046875 + }, + { + "x": -0.232635498046875, + "y": 4.185455322265625 + }, + { + "x": 5.38922119140625, + "y": -1.2606201171875 + }, + { + "x": 4.152130126953125, + "y": -3.631927490234375 + }, + { + "x": 1.8026580810546875, + "y": -6.69012451171875 + }, + { + "x": 5.1654205322265625, + "y": -5.30224609375 + }, + { + "x": 2.4210968017578125, + "y": 1.8680419921875 + }, + { + "x": 2.5790252685546875, + "y": 1.43719482421875 + }, + { + "x": 4.3302154541015625, + "y": 1.502044677734375 + }, + { + "x": 5.956787109375, + "y": -4.615875244140625 + }, + { + "x": 4.5434112548828125, + "y": -3.95257568359375 + }, + { + "x": 3.709564208984375, + "y": -4.19842529296875 + }, + { + "x": 2.4626312255859375, + "y": -1.38836669921875 + }, + { + "x": -1.1766204833984375, + "y": 2.41705322265625 + }, + { + "x": 0.1180572509765625, + "y": 3.128570556640625 + }, + { + "x": 1.347900390625, + "y": -0.181488037109375 + }, + { + "x": 4.508934020996094, + "y": -1.264556884765625 + }, + { + "x": 4.252037048339844, + "y": -6.89874267578125 + }, + { + "x": -1.0619430541992188, + "y": -4.47540283203125 + }, + { + "x": -2.984710693359375, + "y": 0.88165283203125 + }, + { + "x": -4.6926116943359375, + "y": 2.75738525390625 + }, + { + "x": -4.700775146484375, + "y": 2.177337646484375 + }, + { + "x": -1.0085563659667969, + "y": 0.64215087890625 + }, + { + "x": -2.4826812744140625, + "y": -2.180694580078125 + }, + { + "x": -2.2424659729003906, + "y": -4.12652587890625 + }, + { + "x": -2.8102188110351562, + "y": -3.7484130859375 + }, + { + "x": -8.382896423339844, + "y": -1.543701171875 + }, + { + "x": -5.275901794433594, + "y": 0.4716796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.105848342046785, + "y": -0.026281341070287817, + "z": 0.434555834371993 + }, + "rotation": { + "quaternion": { + "W": 0.716024310920215, + "X": 0.05459539200732749, + "Y": -0.03807660470582635, + "Z": 0.6948947413219313 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img26.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img26.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 931.6411743164062, + "y": 389.3858947753906 + }, + { + "x": 981.2335205078125, + "y": 388.40533447265625 + }, + { + "x": 1030.28662109375, + "y": 389.6365661621094 + }, + { + "x": 1081.0667724609375, + "y": 386.86865234375 + }, + { + "x": 1127.55078125, + "y": 383.00421142578125 + }, + { + "x": 1170.8194580078125, + "y": 386.39642333984375 + }, + { + "x": 1213.1009521484375, + "y": 381.2109680175781 + }, + { + "x": 928.3171997070312, + "y": 441.65338134765625 + }, + { + "x": 980.3277587890625, + "y": 441.44091796875 + }, + { + "x": 1029.8828125, + "y": 439.0769348144531 + }, + { + "x": 1077.6939697265625, + "y": 436.704345703125 + }, + { + "x": 1122.832275390625, + "y": 435.8453063964844 + }, + { + "x": 1165.3372802734375, + "y": 433.8296813964844 + }, + { + "x": 1207.64208984375, + "y": 432.6372375488281 + }, + { + "x": 926.6097412109375, + "y": 494.4801330566406 + }, + { + "x": 976.5114135742188, + "y": 491.1752624511719 + }, + { + "x": 1025.327880859375, + "y": 490.6147766113281 + }, + { + "x": 1069.5975341796875, + "y": 484.523681640625 + }, + { + "x": 1119.774658203125, + "y": 481.9491271972656 + }, + { + "x": 1161.66455078125, + "y": 482.43060302734375 + }, + { + "x": 1201.4197998046875, + "y": 479.4998474121094 + }, + { + "x": 924.6860961914062, + "y": 544.3012084960938 + }, + { + "x": 972.8162231445312, + "y": 542.698974609375 + }, + { + "x": 1021.3525390625, + "y": 536.7886962890625 + }, + { + "x": 1068.5302734375, + "y": 535.7620849609375 + }, + { + "x": 1113.8333740234375, + "y": 535.2396850585938 + }, + { + "x": 1154.1756591796875, + "y": 531.10498046875 + }, + { + "x": 1195.2757568359375, + "y": 526.2207641601562 + }, + { + "x": 918.9358520507812, + "y": 592.6784057617188 + }, + { + "x": 972.3444213867188, + "y": 588.758544921875 + }, + { + "x": 1015.7928466796875, + "y": 586.556884765625 + }, + { + "x": 1064.68994140625, + "y": 582.6466674804688 + }, + { + "x": 1109.4449462890625, + "y": 576.3673706054688 + }, + { + "x": 1149.5025634765625, + "y": 574.6024780273438 + }, + { + "x": 1187.2431640625, + "y": 571.4505004882812 + }, + { + "x": 919.4249877929688, + "y": 638.2289428710938 + }, + { + "x": 967.0767822265625, + "y": 631.9569702148438 + }, + { + "x": 1009.7160034179688, + "y": 626.3142700195312 + }, + { + "x": 1056.197998046875, + "y": 627.8763427734375 + }, + { + "x": 1103.352294921875, + "y": 623.5545654296875 + }, + { + "x": 1142.325439453125, + "y": 617.1514282226562 + }, + { + "x": 1183.097412109375, + "y": 614.0530395507812 + }, + { + "x": 912.7942504882812, + "y": 679.8131713867188 + }, + { + "x": 961.5870971679688, + "y": 675.4895629882812 + }, + { + "x": 1006.9772338867188, + "y": 672.766845703125 + }, + { + "x": 1051.8287353515625, + "y": 667.8524169921875 + }, + { + "x": 1094.79296875, + "y": 662.579833984375 + }, + { + "x": 1135.1405029296875, + "y": 657.5443725585938 + }, + { + "x": 1177.647705078125, + "y": 650.5139770507812 + } + ], + "reprojectionErrors": [ + { + "x": 4.38433837890625, + "y": 4.349395751953125 + }, + { + "x": 3.68487548828125, + "y": 3.363494873046875 + }, + { + "x": 2.6112060546875, + "y": 0.2073974609375 + }, + { + "x": -1.0750732421875, + "y": 1.090789794921875 + }, + { + "x": -1.32373046875, + "y": 3.10980224609375 + }, + { + "x": 0.8099365234375, + "y": -2.089874267578125 + }, + { + "x": 3.1226806640625, + "y": 1.324951171875 + }, + { + "x": 3.97711181640625, + "y": 2.8643798828125 + }, + { + "x": 0.34454345703125, + "y": 0.654022216796875 + }, + { + "x": -1.7261962890625, + "y": 0.6456298828125 + }, + { + "x": -2.9197998046875, + "y": 0.694793701171875 + }, + { + "x": -2.2811279296875, + "y": -0.72210693359375 + }, + { + "x": 0.1751708984375, + "y": -0.936309814453125 + }, + { + "x": 2.0399169921875, + "y": -1.928955078125 + }, + { + "x": 2.06793212890625, + "y": -0.296356201171875 + }, + { + "x": 0.0428466796875, + "y": 0.149688720703125 + }, + { + "x": -1.7718505859375, + "y": -2.089935302734375 + }, + { + "x": 0.11181640625, + "y": 1.258087158203125 + }, + { + "x": -4.7352294921875, + "y": 1.144866943359375 + }, + { + "x": -2.09423828125, + "y": -1.970672607421875 + }, + { + "x": 1.9056396484375, + "y": -1.621795654296875 + }, + { + "x": 0.485107421875, + "y": -1.52142333984375 + }, + { + "x": -0.2569580078125, + "y": -3.19482421875 + }, + { + "x": -2.26165771484375, + "y": -0.49371337890625 + }, + { + "x": -3.73876953125, + "y": -2.61175537109375 + }, + { + "x": -4.14794921875, + "y": -5.17132568359375 + }, + { + "x": -0.3792724609375, + "y": -4.0577392578125 + }, + { + "x": 1.87109375, + "y": -2.135498046875 + }, + { + "x": 2.83477783203125, + "y": -2.32861328125 + }, + { + "x": -3.66180419921875, + "y": -2.0831298828125 + }, + { + "x": -1.0369873046875, + "y": -3.48211669921875 + }, + { + "x": -4.675048828125, + "y": -3.10089111328125 + }, + { + "x": -4.9615478515625, + "y": -0.2811279296875 + }, + { + "x": -1.318115234375, + "y": -1.90826416015625 + }, + { + "x": 3.896484375, + "y": -2.0826416015625 + }, + { + "x": -0.953125, + "y": -1.29339599609375 + }, + { + "x": -2.15692138671875, + "y": 0.922607421875 + }, + { + "x": 0.830078125, + "y": 2.58978271484375 + }, + { + "x": -0.8236083984375, + "y": -2.86956787109375 + }, + { + "x": -3.924560546875, + "y": -2.369140625 + }, + { + "x": 0.4029541015625, + "y": 0.286376953125 + }, + { + "x": 2.2001953125, + "y": -0.29107666015625 + }, + { + "x": 2.4769287109375, + "y": 2.7635498046875 + }, + { + "x": -0.3203125, + "y": 2.6656494140625 + }, + { + "x": -0.52032470703125, + "y": 1.0537109375 + }, + { + "x": -0.9638671875, + "y": 1.7177734375 + }, + { + "x": -0.280029296875, + "y": 2.822021484375 + }, + { + "x": 2.2821044921875, + "y": 3.768798828125 + }, + { + "x": 1.967041015625, + "y": 6.78802490234375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.12998837350173723, + "y": 0.011431989444070418, + "z": 0.5089873448983141 + }, + "rotation": { + "quaternion": { + "W": 0.9886724697842112, + "X": 0.11388536556909498, + "Y": -0.09761189067391429, + "Z": -0.005365612644002426 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img27.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img27.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1188.5911865234375, + "y": 366.6036071777344 + }, + { + "x": 1185.702880859375, + "y": 417.2850341796875 + }, + { + "x": 1180.6837158203125, + "y": 464.9902648925781 + }, + { + "x": 1177.1070556640625, + "y": 510.71832275390625 + }, + { + "x": 1171.8829345703125, + "y": 555.997802734375 + }, + { + "x": 1168.6044921875, + "y": 598.1323852539062 + }, + { + "x": 1164.736572265625, + "y": 635.8402099609375 + }, + { + "x": 1147.4210205078125, + "y": 373.9239807128906 + }, + { + "x": 1143.7042236328125, + "y": 419.8115539550781 + }, + { + "x": 1141.57763671875, + "y": 469.0618896484375 + }, + { + "x": 1136.498779296875, + "y": 517.7958984375 + }, + { + "x": 1133.3736572265625, + "y": 561.1187133789062 + }, + { + "x": 1128.1866455078125, + "y": 603.8599853515625 + }, + { + "x": 1123.3236083984375, + "y": 644.6490478515625 + }, + { + "x": 1103.0506591796875, + "y": 371.8127136230469 + }, + { + "x": 1100.83349609375, + "y": 425.5408935546875 + }, + { + "x": 1099.5325927734375, + "y": 470.7245178222656 + }, + { + "x": 1095.6962890625, + "y": 523.9650268554688 + }, + { + "x": 1092.1827392578125, + "y": 565.9168701171875 + }, + { + "x": 1088.6339111328125, + "y": 612.0244140625 + }, + { + "x": 1082.421630859375, + "y": 651.5618896484375 + }, + { + "x": 1055.870849609375, + "y": 378.1867980957031 + }, + { + "x": 1053.251220703125, + "y": 429.8773498535156 + }, + { + "x": 1050.5023193359375, + "y": 476.4693298339844 + }, + { + "x": 1051.913818359375, + "y": 525.2448120117188 + }, + { + "x": 1048.38330078125, + "y": 573.6787719726562 + }, + { + "x": 1042.07421875, + "y": 618.9117431640625 + }, + { + "x": 1039.930908203125, + "y": 658.8182983398438 + }, + { + "x": 1005.0673217773438, + "y": 383.42852783203125 + }, + { + "x": 1006.9785766601562, + "y": 432.84576416015625 + }, + { + "x": 1004.8641967773438, + "y": 484.0605773925781 + }, + { + "x": 1003.3129272460938, + "y": 530.8359375 + }, + { + "x": 1000.7235717773438, + "y": 579.21337890625 + }, + { + "x": 998.0777587890625, + "y": 621.5155029296875 + }, + { + "x": 995.2799072265625, + "y": 665.4232177734375 + }, + { + "x": 955.9068603515625, + "y": 384.8812561035156 + }, + { + "x": 957.542236328125, + "y": 436.7852783203125 + }, + { + "x": 954.730224609375, + "y": 486.32977294921875 + }, + { + "x": 953.8419189453125, + "y": 538.9048461914062 + }, + { + "x": 955.6873779296875, + "y": 584.31640625 + }, + { + "x": 952.4561157226562, + "y": 627.7316284179688 + }, + { + "x": 948.854248046875, + "y": 670.40966796875 + }, + { + "x": 904.7965087890625, + "y": 388.5787353515625 + }, + { + "x": 904.6865234375, + "y": 440.16424560546875 + }, + { + "x": 905.5536499023438, + "y": 492.86376953125 + }, + { + "x": 905.6954345703125, + "y": 542.31396484375 + }, + { + "x": 902.9843139648438, + "y": 590.404052734375 + }, + { + "x": 905.3245849609375, + "y": 635.8709106445312 + }, + { + "x": 900.8185424804688, + "y": 676.8197021484375 + } + ], + "reprojectionErrors": [ + { + "x": 3.5394287109375, + "y": 0.625579833984375 + }, + { + "x": 2.0966796875, + "y": -1.725311279296875 + }, + { + "x": 2.8924560546875, + "y": -2.165679931640625 + }, + { + "x": 2.349609375, + "y": -1.657379150390625 + }, + { + "x": 3.554443359375, + "y": -1.6934814453125 + }, + { + "x": 2.91064453125, + "y": 0.4561767578125 + }, + { + "x": 2.949951171875, + "y": 6.10577392578125 + }, + { + "x": -0.262939453125, + "y": -2.754180908203125 + }, + { + "x": -0.406982421875, + "y": 0.069915771484375 + }, + { + "x": -2.0438232421875, + "y": -1.552154541015625 + }, + { + "x": -0.634521484375, + "y": -3.70318603515625 + }, + { + "x": -1.0882568359375, + "y": -1.45196533203125 + }, + { + "x": 0.6075439453125, + "y": 0.40655517578125 + }, + { + "x": 2.06396484375, + "y": 3.276123046875 + }, + { + "x": -1.631591796875, + "y": 3.38494873046875 + }, + { + "x": -2.7882080078125, + "y": -1.241607666015625 + }, + { + "x": -4.7745361328125, + "y": 1.574737548828125 + }, + { + "x": -4.1419677734375, + "y": -4.72845458984375 + }, + { + "x": -3.751708984375, + "y": -0.768310546875 + }, + { + "x": -3.248291015625, + "y": -1.95379638671875 + }, + { + "x": -0.0062255859375, + "y": 2.47491455078125 + }, + { + "x": -0.987060546875, + "y": 1.12908935546875 + }, + { + "x": -1.236328125, + "y": -1.060699462890625 + }, + { + "x": -1.28125, + "y": 0.72747802734375 + }, + { + "x": -5.4141845703125, + "y": -0.74835205078125 + }, + { + "x": -4.53515625, + "y": -2.925048828125 + }, + { + "x": -0.8101806640625, + "y": -2.9066162109375 + }, + { + "x": -1.185791015625, + "y": 1.46697998046875 + }, + { + "x": 2.4537353515625, + "y": 0.09930419921875 + }, + { + "x": -1.80279541015625, + "y": 0.59136962890625 + }, + { + "x": -1.97076416015625, + "y": -1.854278564453125 + }, + { + "x": -2.64105224609375, + "y": -0.95947265625 + }, + { + "x": -2.2147216796875, + "y": -2.7266845703125 + }, + { + "x": -1.67535400390625, + "y": 0.5589599609375 + }, + { + "x": -0.9293212890625, + "y": 1.2520751953125 + }, + { + "x": 3.391357421875, + "y": 2.9556884765625 + }, + { + "x": -0.04595947265625, + "y": 1.37921142578125 + }, + { + "x": 1.0142822265625, + "y": 1.001953125 + }, + { + "x": 0.19921875, + "y": -3.5240478515625 + }, + { + "x": -3.30291748046875, + "y": -1.96441650390625 + }, + { + "x": -1.68328857421875, + "y": 0.55181884765625 + }, + { + "x": 0.35040283203125, + "y": 2.8021240234375 + }, + { + "x": 5.38458251953125, + "y": 3.66815185546875 + }, + { + "x": 4.2567138671875, + "y": 2.838470458984375 + }, + { + "x": 2.18841552734375, + "y": -0.286407470703125 + }, + { + "x": 0.880859375, + "y": -1.29986572265625 + }, + { + "x": 2.46026611328125, + "y": -2.0498046875 + }, + { + "x": -0.978759765625, + "y": -1.23388671875 + }, + { + "x": 2.460205078125, + "y": 3.0802001953125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.2664436117049826, + "y": -0.0013224520376278895, + "z": 0.5365991443922588 + }, + "rotation": { + "quaternion": { + "W": 0.7182012219405007, + "X": 0.012773607251988381, + "Y": -0.15389075963279147, + "Z": 0.6784846894813368 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img28.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img28.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 962.8450927734375, + "y": 276.2261962890625 + }, + { + "x": 966.81640625, + "y": 334.66656494140625 + }, + { + "x": 966.6035766601562, + "y": 390.88848876953125 + }, + { + "x": 969.9667358398438, + "y": 444.4027404785156 + }, + { + "x": 968.2879028320312, + "y": 498.5956726074219 + }, + { + "x": 971.5390625, + "y": 546.8634643554688 + }, + { + "x": 973.8839111328125, + "y": 589.944091796875 + }, + { + "x": 913.2095336914062, + "y": 287.0361328125 + }, + { + "x": 912.8448486328125, + "y": 343.52838134765625 + }, + { + "x": 917.815185546875, + "y": 398.42633056640625 + }, + { + "x": 919.1990356445312, + "y": 457.2496643066406 + }, + { + "x": 924.3247680664062, + "y": 508.9970703125 + }, + { + "x": 922.6350708007812, + "y": 557.798095703125 + }, + { + "x": 923.8455810546875, + "y": 606.1467895507812 + }, + { + "x": 857.3345947265625, + "y": 289.25457763671875 + }, + { + "x": 860.746337890625, + "y": 351.02630615234375 + }, + { + "x": 866.2885131835938, + "y": 405.68658447265625 + }, + { + "x": 869.190673828125, + "y": 467.773193359375 + }, + { + "x": 872.6345825195312, + "y": 516.7367553710938 + }, + { + "x": 875.73388671875, + "y": 572.2293090820312 + }, + { + "x": 872.6422119140625, + "y": 619.2302856445312 + }, + { + "x": 801.66455078125, + "y": 301.13739013671875 + }, + { + "x": 804.7230834960938, + "y": 359.9273376464844 + }, + { + "x": 807.5466918945312, + "y": 417.4100341796875 + }, + { + "x": 815.990478515625, + "y": 472.5498352050781 + }, + { + "x": 821.21435546875, + "y": 533.5806884765625 + }, + { + "x": 817.05810546875, + "y": 588.302978515625 + }, + { + "x": 822.682861328125, + "y": 631.787841796875 + }, + { + "x": 737.5377197265625, + "y": 310.9791564941406 + }, + { + "x": 747.709228515625, + "y": 370.1976013183594 + }, + { + "x": 751.2813110351562, + "y": 429.1817321777344 + }, + { + "x": 756.75537109375, + "y": 485.774658203125 + }, + { + "x": 760.776611328125, + "y": 542.6012573242188 + }, + { + "x": 768.00244140625, + "y": 594.4772338867188 + }, + { + "x": 770.5646362304688, + "y": 641.7503662109375 + }, + { + "x": 678.4074096679688, + "y": 318.3932189941406 + }, + { + "x": 685.8828735351562, + "y": 378.3758850097656 + }, + { + "x": 690.9028930664062, + "y": 439.28668212890625 + }, + { + "x": 697.4994506835938, + "y": 498.5326843261719 + }, + { + "x": 706.8637084960938, + "y": 553.695556640625 + }, + { + "x": 710.5435791015625, + "y": 603.7125854492188 + }, + { + "x": 713.7733154296875, + "y": 654.3344116210938 + }, + { + "x": 615.6427612304688, + "y": 326.44500732421875 + }, + { + "x": 620.2274780273438, + "y": 387.6986999511719 + }, + { + "x": 630.9031372070312, + "y": 450.335693359375 + }, + { + "x": 641.3574829101562, + "y": 511.24969482421875 + }, + { + "x": 645.988037109375, + "y": 563.3480834960938 + }, + { + "x": 656.5967407226562, + "y": 620.8099975585938 + }, + { + "x": 659.8677978515625, + "y": 664.8753051757812 + } + ], + "reprojectionErrors": [ + { + "x": 3.5360107421875, + "y": -1.102294921875 + }, + { + "x": 1.126220703125, + "y": -1.91650390625 + }, + { + "x": 2.865966796875, + "y": -2.1749267578125 + }, + { + "x": 0.9967041015625, + "y": -1.314239501953125 + }, + { + "x": 4.1378173828125, + "y": -2.651092529296875 + }, + { + "x": 2.31866455078125, + "y": 0.48406982421875 + }, + { + "x": 1.37701416015625, + "y": 7.41522216796875 + }, + { + "x": -1.27435302734375, + "y": -3.3319091796875 + }, + { + "x": 1.47894287109375, + "y": -1.6510009765625 + }, + { + "x": -1.1629638671875, + "y": -0.073455810546875 + }, + { + "x": -0.27587890625, + "y": -4.042510986328125 + }, + { + "x": -3.18560791015625, + "y": -2.48492431640625 + }, + { + "x": 0.6676025390625, + "y": 0.53753662109375 + }, + { + "x": 1.5704345703125, + "y": 2.59454345703125 + }, + { + "x": -1.1195068359375, + "y": 3.250213623046875 + }, + { + "x": -1.276611328125, + "y": 0.212554931640625 + }, + { + "x": -3.65167236328125, + "y": 2.552337646484375 + }, + { + "x": -3.4703369140625, + "y": -4.189300537109375 + }, + { + "x": -3.9105224609375, + "y": 0.611328125 + }, + { + "x": -4.08233642578125, + "y": -2.6280517578125 + }, + { + "x": 1.8638916015625, + "y": 1.178955078125 + }, + { + "x": -2.503173828125, + "y": 0.398223876953125 + }, + { + "x": -1.3995361328125, + "y": 0.917694091796875 + }, + { + "x": -0.17779541015625, + "y": 0.972625732421875 + }, + { + "x": -4.68768310546875, + "y": 1.68023681640625 + }, + { + "x": -6.0841064453125, + "y": -5.11676025390625 + }, + { + "x": 1.79803466796875, + "y": -7.14666748046875 + }, + { + "x": -0.19793701171875, + "y": 0.58721923828125 + }, + { + "x": 3.1734619140625, + "y": -0.1717529296875 + }, + { + "x": -1.8841552734375, + "y": 0.509490966796875 + }, + { + "x": -0.4906005859375, + "y": -0.386016845703125 + }, + { + "x": -1.1402587890625, + "y": -0.617034912109375 + }, + { + "x": -0.471923828125, + "y": -2.729248046875 + }, + { + "x": -3.13690185546875, + "y": -1.4639892578125 + }, + { + "x": -1.26116943359375, + "y": 2.90106201171875 + }, + { + "x": 2.39013671875, + "y": 1.93829345703125 + }, + { + "x": 1.02740478515625, + "y": 2.461029052734375 + }, + { + "x": 1.938232421875, + "y": 0.203704833984375 + }, + { + "x": 1.09930419921875, + "y": -2.153472900390625 + }, + { + "x": -2.672607421875, + "y": -2.1103515625 + }, + { + "x": -0.917724609375, + "y": 1.47271728515625 + }, + { + "x": 1.13671875, + "y": 2.9173583984375 + }, + { + "x": 3.70697021484375, + "y": 3.67498779296875 + }, + { + "x": 6.28399658203125, + "y": 3.548370361328125 + }, + { + "x": 2.55218505859375, + "y": 0.144012451171875 + }, + { + "x": -1.16583251953125, + "y": -3.3414306640625 + }, + { + "x": 0.7421875, + "y": 0.269287109375 + }, + { + "x": -3.51654052734375, + "y": -3.12347412109375 + }, + { + "x": -0.61767578125, + "y": 5.31500244140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.12881875672621898, + "y": -0.04040753702667371, + "z": 0.45363538651169116 + }, + "rotation": { + "quaternion": { + "W": 0.7424284853988125, + "X": 0.006724822307944296, + "Y": -0.1727012950684345, + "Z": 0.6472472352316675 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img29.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img29.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 935.09033203125, + "y": 312.6655578613281 + }, + { + "x": 933.4338989257812, + "y": 373.9042663574219 + }, + { + "x": 929.4307250976562, + "y": 431.37554931640625 + }, + { + "x": 927.6172485351562, + "y": 487.3875732421875 + }, + { + "x": 920.7658081054688, + "y": 542.6068725585938 + }, + { + "x": 921.1630859375, + "y": 594.0150146484375 + }, + { + "x": 919.3673095703125, + "y": 636.8204956054688 + }, + { + "x": 881.7594604492188, + "y": 319.55889892578125 + }, + { + "x": 877.062744140625, + "y": 378.00689697265625 + }, + { + "x": 876.4595947265625, + "y": 434.8993225097656 + }, + { + "x": 873.8426513671875, + "y": 494.0654296875 + }, + { + "x": 875.4968872070312, + "y": 550.4891967773438 + }, + { + "x": 867.696044921875, + "y": 599.7230224609375 + }, + { + "x": 865.7301635742188, + "y": 649.3197021484375 + }, + { + "x": 823.57080078125, + "y": 316.82415771484375 + }, + { + "x": 822.1483154296875, + "y": 381.3702697753906 + }, + { + "x": 822.66015625, + "y": 437.32427978515625 + }, + { + "x": 817.9000854492188, + "y": 498.7397155761719 + }, + { + "x": 817.7108154296875, + "y": 553.9221801757812 + }, + { + "x": 819.2647705078125, + "y": 610.764404296875 + }, + { + "x": 812.5794067382812, + "y": 656.5530395507812 + }, + { + "x": 764.5214233398438, + "y": 323.7616882324219 + }, + { + "x": 764.6373291015625, + "y": 381.86053466796875 + }, + { + "x": 761.3956298828125, + "y": 444.7813720703125 + }, + { + "x": 763.8402099609375, + "y": 502.67059326171875 + }, + { + "x": 762.6873779296875, + "y": 563.1951293945312 + }, + { + "x": 756.8612060546875, + "y": 619.5980224609375 + }, + { + "x": 757.3733520507812, + "y": 664.662109375 + }, + { + "x": 698.10498046875, + "y": 327.3212890625 + }, + { + "x": 701.7260131835938, + "y": 389.3400573730469 + }, + { + "x": 699.8331909179688, + "y": 452.87445068359375 + }, + { + "x": 702.4608764648438, + "y": 510.2619934082031 + }, + { + "x": 702.1279296875, + "y": 567.4305419921875 + }, + { + "x": 700.7030029296875, + "y": 619.811767578125 + }, + { + "x": 702.7394409179688, + "y": 671.329345703125 + }, + { + "x": 635.5818481445312, + "y": 329.7287292480469 + }, + { + "x": 638.571533203125, + "y": 391.54644775390625 + }, + { + "x": 639.1141357421875, + "y": 456.064697265625 + }, + { + "x": 638.347900390625, + "y": 518.3576049804688 + }, + { + "x": 645.3922119140625, + "y": 574.5609130859375 + }, + { + "x": 646.4183959960938, + "y": 623.857421875 + }, + { + "x": 651.7012329101562, + "y": 683.5640258789062 + }, + { + "x": 570.8884887695312, + "y": 331.9510803222656 + }, + { + "x": 570.735107421875, + "y": 396.380859375 + }, + { + "x": 575.09130859375, + "y": 460.5702209472656 + }, + { + "x": 580.2239379882812, + "y": 523.2803955078125 + }, + { + "x": 580.6478271484375, + "y": 578.5557250976562 + }, + { + "x": 585.42236328125, + "y": 635.8607788085938 + }, + { + "x": 585.6944580078125, + "y": 684.3695678710938 + } + ], + "reprojectionErrors": [ + { + "x": 2.841552734375, + "y": 0.44189453125 + }, + { + "x": 1.24188232421875, + "y": -1.543365478515625 + }, + { + "x": 2.09228515625, + "y": -1.458404541015625 + }, + { + "x": 0.85174560546875, + "y": -1.536163330078125 + }, + { + "x": 4.74359130859375, + "y": -2.372314453125 + }, + { + "x": 1.4771728515625, + "y": -0.881591796875 + }, + { + "x": 0.49041748046875, + "y": 7.79052734375 + }, + { + "x": -0.95098876953125, + "y": -2.922882080078125 + }, + { + "x": 1.29339599609375, + "y": -1.45172119140625 + }, + { + "x": -0.4757080078125, + "y": -0.161773681640625 + }, + { + "x": -0.1544189453125, + "y": -2.80438232421875 + }, + { + "x": -4.0311279296875, + "y": -4.29022216796875 + }, + { + "x": 1.61724853515625, + "y": -0.10272216796875 + }, + { + "x": 1.49774169921875, + "y": 2.27044677734375 + }, + { + "x": -1.2763671875, + "y": 3.445831298828125 + }, + { + "x": -1.46209716796875, + "y": -0.496124267578125 + }, + { + "x": -3.5269775390625, + "y": 2.3760986328125 + }, + { + "x": -0.26727294921875, + "y": -1.910430908203125 + }, + { + "x": -1.528076171875, + "y": -1.58544921875 + }, + { + "x": -4.48388671875, + "y": -4.47039794921875 + }, + { + "x": 0.8455810546875, + "y": 2.2154541015625 + }, + { + "x": -2.19818115234375, + "y": 0.25250244140625 + }, + { + "x": -3.03509521484375, + "y": 3.4630126953125 + }, + { + "x": -0.486083984375, + "y": 0.0306396484375 + }, + { + "x": -3.596435546875, + "y": -0.107452392578125 + }, + { + "x": -3.08355712890625, + "y": -4.53973388671875 + }, + { + "x": 2.1273193359375, + "y": -6.435302734375 + }, + { + "x": 1.02337646484375, + "y": 1.492431640625 + }, + { + "x": 2.71917724609375, + "y": 0.552520751953125 + }, + { + "x": -0.68963623046875, + "y": 0.569305419921875 + }, + { + "x": 1.41473388671875, + "y": -2.795257568359375 + }, + { + "x": -1.0020751953125, + "y": -1.7919921875 + }, + { + "x": -0.45892333984375, + "y": -2.26751708984375 + }, + { + "x": 1.1756591796875, + "y": 0.423095703125 + }, + { + "x": -0.65167236328125, + "y": 2.427978515625 + }, + { + "x": 2.14013671875, + "y": 2.125640869140625 + }, + { + "x": 0.34515380859375, + "y": 3.091522216796875 + }, + { + "x": 0.96527099609375, + "y": -0.5555419921875 + }, + { + "x": 2.86376953125, + "y": -3.7998046875 + }, + { + "x": -3.07733154296875, + "y": -2.6927490234375 + }, + { + "x": -3.028076171875, + "y": 3.66204833984375 + }, + { + "x": -7.26190185546875, + "y": -1.977783203125 + }, + { + "x": 2.04833984375, + "y": 4.01055908203125 + }, + { + "x": 4.4315185546875, + "y": 3.135345458984375 + }, + { + "x": 2.2393798828125, + "y": 0.539276123046875 + }, + { + "x": -0.791748046875, + "y": -2.445556640625 + }, + { + "x": 0.82611083984375, + "y": 0.2239990234375 + }, + { + "x": -1.9635009765625, + "y": -0.8345947265625 + }, + { + "x": -0.30499267578125, + "y": 5.2818603515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.11323560456775947, + "y": -0.023492993352808314, + "z": 0.44029476863368333 + }, + "rotation": { + "quaternion": { + "W": 0.7113488185031444, + "X": 0.011215805775511449, + "Y": -0.1688736610789596, + "Z": 0.6821574236998197 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img30.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img30.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 936.6068115234375, + "y": 313.1796569824219 + }, + { + "x": 934.6727905273438, + "y": 374.3014831542969 + }, + { + "x": 930.5661010742188, + "y": 431.9162902832031 + }, + { + "x": 928.7258911132812, + "y": 487.85064697265625 + }, + { + "x": 921.8334350585938, + "y": 543.0609741210938 + }, + { + "x": 922.1456298828125, + "y": 594.7442626953125 + }, + { + "x": 920.1985473632812, + "y": 637.2364501953125 + }, + { + "x": 883.4358520507812, + "y": 320.09173583984375 + }, + { + "x": 878.6340942382812, + "y": 378.42254638671875 + }, + { + "x": 877.7841186523438, + "y": 435.4791564941406 + }, + { + "x": 875.2036743164062, + "y": 494.51593017578125 + }, + { + "x": 876.7167358398438, + "y": 551.115234375 + }, + { + "x": 868.7776489257812, + "y": 600.2507934570312 + }, + { + "x": 866.4507446289062, + "y": 649.7903442382812 + }, + { + "x": 825.270751953125, + "y": 317.1104736328125 + }, + { + "x": 823.6935424804688, + "y": 381.85247802734375 + }, + { + "x": 823.9423828125, + "y": 437.7134704589844 + }, + { + "x": 819.3057250976562, + "y": 499.6882629394531 + }, + { + "x": 818.9692993164062, + "y": 554.526123046875 + }, + { + "x": 820.1670532226562, + "y": 611.0919799804688 + }, + { + "x": 813.188720703125, + "y": 657.2740478515625 + }, + { + "x": 766.1438598632812, + "y": 324.1499938964844 + }, + { + "x": 766.172119140625, + "y": 382.3012390136719 + }, + { + "x": 762.4323120117188, + "y": 445.0345153808594 + }, + { + "x": 765.4388427734375, + "y": 502.6675109863281 + }, + { + "x": 764.9426879882812, + "y": 564.5997924804688 + }, + { + "x": 758.5707397460938, + "y": 618.67236328125 + }, + { + "x": 758.5513916015625, + "y": 665.7208862304688 + }, + { + "x": 699.4906616210938, + "y": 327.6961669921875 + }, + { + "x": 703.0390625, + "y": 389.6556091308594 + }, + { + "x": 701.04833984375, + "y": 453.49261474609375 + }, + { + "x": 702.8934936523438, + "y": 510.32232666015625 + }, + { + "x": 702.931884765625, + "y": 568.2802734375 + }, + { + "x": 701.4502563476562, + "y": 620.371826171875 + }, + { + "x": 703.5587158203125, + "y": 671.9677734375 + }, + { + "x": 637.1918334960938, + "y": 330.0274963378906 + }, + { + "x": 640.157470703125, + "y": 391.802734375 + }, + { + "x": 640.5776977539062, + "y": 456.68487548828125 + }, + { + "x": 640.0570068359375, + "y": 518.3003540039062 + }, + { + "x": 647.1344604492188, + "y": 575.3704833984375 + }, + { + "x": 647.300048828125, + "y": 624.5396118164062 + }, + { + "x": 652.9482421875, + "y": 684.3941040039062 + }, + { + "x": 572.236083984375, + "y": 332.2550964355469 + }, + { + "x": 572.0172119140625, + "y": 396.6592712402344 + }, + { + "x": 575.9136962890625, + "y": 461.3394470214844 + }, + { + "x": 580.8221435546875, + "y": 523.4839477539062 + }, + { + "x": 581.5457763671875, + "y": 579.1629638671875 + }, + { + "x": 586.0131225585938, + "y": 636.3295288085938 + }, + { + "x": 586.1731567382812, + "y": 685.2493896484375 + } + ], + "reprojectionErrors": [ + { + "x": 2.88543701171875, + "y": 0.33209228515625 + }, + { + "x": 1.44110107421875, + "y": -1.49468994140625 + }, + { + "x": 2.2767333984375, + "y": -1.519439697265625 + }, + { + "x": 0.94842529296875, + "y": -1.492889404296875 + }, + { + "x": 4.77044677734375, + "y": -2.300048828125 + }, + { + "x": 1.481689453125, + "y": -1.070556640625 + }, + { + "x": 0.5419921875, + "y": 7.923095703125 + }, + { + "x": -1.0404052734375, + "y": -3.0845947265625 + }, + { + "x": 1.18780517578125, + "y": -1.444183349609375 + }, + { + "x": -0.4517822265625, + "y": -0.274871826171875 + }, + { + "x": -0.280517578125, + "y": -2.75250244140625 + }, + { + "x": -4.1260986328125, + "y": -4.385498046875 + }, + { + "x": 1.55389404296875, + "y": -0.07806396484375 + }, + { + "x": 1.69189453125, + "y": 2.3677978515625 + }, + { + "x": -1.3812255859375, + "y": 3.497955322265625 + }, + { + "x": -1.53173828125, + "y": -0.576873779296875 + }, + { + "x": -3.4493408203125, + "y": 2.442047119140625 + }, + { + "x": -0.42510986328125, + "y": -2.358795166015625 + }, + { + "x": -1.6473388671875, + "y": -1.652099609375 + }, + { + "x": -4.352294921875, + "y": -4.2308349609375 + }, + { + "x": 1.16802978515625, + "y": 2.0845947265625 + }, + { + "x": -2.2373046875, + "y": 0.170562744140625 + }, + { + "x": -3.1036376953125, + "y": 3.403106689453125 + }, + { + "x": -0.16998291015625, + "y": 0.2225341796875 + }, + { + "x": -3.9521484375, + "y": 0.395538330078125 + }, + { + "x": -4.2025146484375, + "y": -5.39825439453125 + }, + { + "x": 1.45068359375, + "y": -4.92529296875 + }, + { + "x": 0.77801513671875, + "y": 1.04888916015625 + }, + { + "x": 2.883544921875, + "y": 0.452545166015625 + }, + { + "x": -0.5665283203125, + "y": 0.61505126953125 + }, + { + "x": 1.525390625, + "y": -2.976776123046875 + }, + { + "x": -0.2159423828125, + "y": -1.350616455078125 + }, + { + "x": -0.14794921875, + "y": -2.559814453125 + }, + { + "x": 1.4425048828125, + "y": 0.4674072265625 + }, + { + "x": -0.55474853515625, + "y": 2.43292236328125 + }, + { + "x": 2.023681640625, + "y": 2.071014404296875 + }, + { + "x": 0.1429443359375, + "y": 3.1783447265625 + }, + { + "x": 0.77899169921875, + "y": -0.745697021484375 + }, + { + "x": 2.32855224609375, + "y": -3.23675537109375 + }, + { + "x": -3.74609375, + "y": -2.93096923828125 + }, + { + "x": -2.93365478515625, + "y": 3.60736083984375 + }, + { + "x": -7.62762451171875, + "y": -2.13299560546875 + }, + { + "x": 2.1126708984375, + "y": 3.920745849609375 + }, + { + "x": 4.4566650390625, + "y": 3.183258056640625 + }, + { + "x": 2.62255859375, + "y": 0.195404052734375 + }, + { + "x": -0.283203125, + "y": -2.13677978515625 + }, + { + "x": 0.93890380859375, + "y": 0.20489501953125 + }, + { + "x": -1.636962890625, + "y": -0.6495361328125 + }, + { + "x": 0.042724609375, + "y": 5.11199951171875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.11376760834069517, + "y": -0.0233020663921941, + "z": 0.4398504883438601 + }, + "rotation": { + "quaternion": { + "W": 0.710867953652074, + "X": 0.010619931117157567, + "Y": -0.17009652739833964, + "Z": 0.6823643754627037 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img31.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img31.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 596.032470703125, + "y": 139.04310607910156 + }, + { + "x": 595.1923828125, + "y": 215.30093383789062 + }, + { + "x": 590.540283203125, + "y": 282.8291320800781 + }, + { + "x": 590.8677368164062, + "y": 352.5359191894531 + }, + { + "x": 587.6419677734375, + "y": 420.736083984375 + }, + { + "x": 594.1932983398438, + "y": 490.2933044433594 + }, + { + "x": 598.076416015625, + "y": 538.7914428710938 + }, + { + "x": 528.5486450195312, + "y": 146.5127716064453 + }, + { + "x": 523.5470581054688, + "y": 214.27320861816406 + }, + { + "x": 524.8363647460938, + "y": 286.2955627441406 + }, + { + "x": 522.8989868164062, + "y": 359.6226501464844 + }, + { + "x": 528.1425170898438, + "y": 428.5043029785156 + }, + { + "x": 528.8711547851562, + "y": 485.5077819824219 + }, + { + "x": 536.40234375, + "y": 561.7178955078125 + }, + { + "x": 456.1231994628906, + "y": 139.82772827148438 + }, + { + "x": 454.3555603027344, + "y": 217.92752075195312 + }, + { + "x": 456.1396179199219, + "y": 286.39508056640625 + }, + { + "x": 456.95574951171875, + "y": 367.1414489746094 + }, + { + "x": 456.512451171875, + "y": 432.38055419921875 + }, + { + "x": 457.08282470703125, + "y": 498.2459411621094 + }, + { + "x": 458.36016845703125, + "y": 564.8372192382812 + }, + { + "x": 382.3970031738281, + "y": 146.37197875976562 + }, + { + "x": 381.3334655761719, + "y": 220.42323303222656 + }, + { + "x": 380.69415283203125, + "y": 293.44415283203125 + }, + { + "x": 385.3392333984375, + "y": 367.9933776855469 + }, + { + "x": 390.53863525390625, + "y": 442.6614074707031 + }, + { + "x": 392.0310363769531, + "y": 505.6583251953125 + }, + { + "x": 400.5016174316406, + "y": 577.7597045898438 + }, + { + "x": 305.146484375, + "y": 151.28724670410156 + }, + { + "x": 309.2876892089844, + "y": 225.24850463867188 + }, + { + "x": 308.2102966308594, + "y": 302.8023986816406 + }, + { + "x": 313.0058288574219, + "y": 373.9761962890625 + }, + { + "x": 317.71270751953125, + "y": 445.0933532714844 + }, + { + "x": 318.2330017089844, + "y": 511.6961364746094 + }, + { + "x": 327.27166748046875, + "y": 580.7669677734375 + }, + { + "x": 233.1186065673828, + "y": 154.15570068359375 + }, + { + "x": 234.7715301513672, + "y": 229.43650817871094 + }, + { + "x": 237.55223083496094, + "y": 306.94879150390625 + }, + { + "x": 241.57723999023438, + "y": 379.7691650390625 + }, + { + "x": 252.00491333007812, + "y": 454.756591796875 + }, + { + "x": 256.2836608886719, + "y": 516.6956787109375 + }, + { + "x": 263.3214416503906, + "y": 589.520263671875 + }, + { + "x": 160.013671875, + "y": 158.48081970214844 + }, + { + "x": 160.24081420898438, + "y": 234.63848876953125 + }, + { + "x": 164.54425048828125, + "y": 312.4188232421875 + }, + { + "x": 169.1298065185547, + "y": 387.17730712890625 + }, + { + "x": 174.8406524658203, + "y": 460.788818359375 + }, + { + "x": 187.01602172851562, + "y": 531.0173950195312 + }, + { + "x": 193.14700317382812, + "y": 593.705078125 + } + ], + "reprojectionErrors": [ + { + "x": -9.887451171875, + "y": 8.75341796875 + }, + { + "x": -5.4183349609375, + "y": 2.0588836669921875 + }, + { + "x": 2.83392333984375, + "y": 3.5128173828125 + }, + { + "x": 6.07830810546875, + "y": 2.2188720703125 + }, + { + "x": 12.84820556640625, + "y": 1.873870849609375 + }, + { + "x": 9.8138427734375, + "y": -0.374542236328125 + }, + { + "x": 9.42108154296875, + "y": 17.90081787109375 + }, + { + "x": -12.00238037109375, + "y": 3.4449615478515625 + }, + { + "x": -3.05029296875, + "y": 5.7662353515625 + }, + { + "x": -0.4224853515625, + "y": 3.23577880859375 + }, + { + "x": 5.39923095703125, + "y": -1.177154541015625 + }, + { + "x": 4.00799560546875, + "y": -1.7105712890625 + }, + { + "x": 7.10028076171875, + "y": 9.079864501953125 + }, + { + "x": 3.3592529296875, + "y": 0.12054443359375 + }, + { + "x": -10.251708984375, + "y": 12.310287475585938 + }, + { + "x": -4.2022705078125, + "y": 4.8248291015625 + }, + { + "x": -1.74261474609375, + "y": 6.372772216796875 + }, + { + "x": 1.647674560546875, + "y": -4.94451904296875 + }, + { + "x": 6.260833740234375, + "y": -1.329010009765625 + }, + { + "x": 9.824493408203125, + "y": 1.097625732421875 + }, + { + "x": 12.646087646484375, + "y": 2.2471923828125 + }, + { + "x": -8.320892333984375, + "y": 7.966461181640625 + }, + { + "x": -2.633880615234375, + "y": 5.0767974853515625 + }, + { + "x": 2.585968017578125, + "y": 2.609375 + }, + { + "x": 2.4793701171875, + "y": -1.98187255859375 + }, + { + "x": 1.777191162109375, + "y": -7.275177001953125 + }, + { + "x": 4.741607666015625, + "y": -1.468536376953125 + }, + { + "x": 0.688232421875, + "y": -5.32586669921875 + }, + { + "x": -4.032928466796875, + "y": 5.2728271484375 + }, + { + "x": -3.198028564453125, + "y": 3.03558349609375 + }, + { + "x": 2.807464599609375, + "y": -3.41204833984375 + }, + { + "x": 2.892974853515625, + "y": -4.084442138671875 + }, + { + "x": 3.02105712890625, + "y": -5.292572021484375 + }, + { + "x": 7.290496826171875, + "y": -2.56634521484375 + }, + { + "x": 2.997283935546875, + "y": -2.8763427734375 + }, + { + "x": -6.1835479736328125, + "y": 4.6483612060546875 + }, + { + "x": -2.4962310791015625, + "y": 1.669647216796875 + }, + { + "x": 0.010009765625, + "y": -4.168243408203125 + }, + { + "x": 1.2197418212890625, + "y": -5.9288330078125 + }, + { + "x": -4.0243988037109375, + "y": -10.458251953125 + }, + { + "x": -3.1697845458984375, + "y": -2.52862548828125 + }, + { + "x": -5.1234130859375, + "y": -6.0615234375 + }, + { + "x": -8.523971557617188, + "y": 2.5907745361328125 + }, + { + "x": -3.034637451171875, + "y": -0.670501708984375 + }, + { + "x": -1.680389404296875, + "y": -6.1925048828125 + }, + { + "x": -0.6658782958984375, + "y": -9.31732177734375 + }, + { + "x": -0.8331451416015625, + "y": -11.906707763671875 + }, + { + "x": -7.5203094482421875, + "y": -11.71197509765625 + }, + { + "x": -8.217376708984375, + "y": -4.5626220703125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.028934894074010776, + "y": -0.08156852238299378, + "z": 0.3906424154573762 + }, + "rotation": { + "quaternion": { + "W": 0.7235900989327222, + "X": -0.021772715452245715, + "Y": -0.0646679564466581, + "Z": 0.6868488720216275 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img32.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img32.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 493.9070129394531, + "y": 193.63758850097656 + }, + { + "x": 494.8156433105469, + "y": 251.18995666503906 + }, + { + "x": 496.1120910644531, + "y": 304.4945983886719 + }, + { + "x": 498.9419860839844, + "y": 357.9245910644531 + }, + { + "x": 503.1491394042969, + "y": 408.3280334472656 + }, + { + "x": 506.8351135253906, + "y": 463.172607421875 + }, + { + "x": 511.4170227050781, + "y": 510.62091064453125 + }, + { + "x": 439.68646240234375, + "y": 201.828857421875 + }, + { + "x": 438.8459167480469, + "y": 256.22515869140625 + }, + { + "x": 443.490966796875, + "y": 309.3604431152344 + }, + { + "x": 447.39031982421875, + "y": 363.1844482421875 + }, + { + "x": 450.2017822265625, + "y": 416.4382629394531 + }, + { + "x": 452.4149169921875, + "y": 468.7388610839844 + }, + { + "x": 458.4388427734375, + "y": 518.49462890625 + }, + { + "x": 384.5562744140625, + "y": 202.90643310546875 + }, + { + "x": 386.13336181640625, + "y": 259.9234924316406 + }, + { + "x": 391.3122253417969, + "y": 313.7289733886719 + }, + { + "x": 393.6358947753906, + "y": 371.046875 + }, + { + "x": 398.8014221191406, + "y": 422.881103515625 + }, + { + "x": 403.2217102050781, + "y": 475.2251281738281 + }, + { + "x": 408.11004638671875, + "y": 523.8502807617188 + }, + { + "x": 329.236083984375, + "y": 210.2318572998047 + }, + { + "x": 332.04052734375, + "y": 266.25390625 + }, + { + "x": 335.0107421875, + "y": 321.1716003417969 + }, + { + "x": 340.9212341308594, + "y": 376.323974609375 + }, + { + "x": 345.8930358886719, + "y": 429.9371337890625 + }, + { + "x": 352.03338623046875, + "y": 478.5320739746094 + }, + { + "x": 355.7855224609375, + "y": 532.870849609375 + }, + { + "x": 272.53082275390625, + "y": 216.73065185546875 + }, + { + "x": 279.3312683105469, + "y": 271.99664306640625 + }, + { + "x": 281.4768371582031, + "y": 327.721923828125 + }, + { + "x": 286.21844482421875, + "y": 380.6182861328125 + }, + { + "x": 293.2803649902344, + "y": 436.556396484375 + }, + { + "x": 298.757568359375, + "y": 488.4888000488281 + }, + { + "x": 306.0110778808594, + "y": 537.4784545898438 + }, + { + "x": 218.17933654785156, + "y": 221.04644775390625 + }, + { + "x": 223.28311157226562, + "y": 277.8326721191406 + }, + { + "x": 228.82908630371094, + "y": 334.94439697265625 + }, + { + "x": 233.76217651367188, + "y": 388.1760559082031 + }, + { + "x": 243.28726196289062, + "y": 443.12628173828125 + }, + { + "x": 247.0532989501953, + "y": 494.9984436035156 + }, + { + "x": 253.70704650878906, + "y": 544.4965209960938 + }, + { + "x": 165.6249542236328, + "y": 227.3255615234375 + }, + { + "x": 169.3042449951172, + "y": 283.8998107910156 + }, + { + "x": 176.30374145507812, + "y": 339.49798583984375 + }, + { + "x": 180.37973022460938, + "y": 395.34564208984375 + }, + { + "x": 188.25184631347656, + "y": 449.1242370605469 + }, + { + "x": 198.61595153808594, + "y": 504.8101501464844 + }, + { + "x": 204.4922637939453, + "y": 549.2958374023438 + } + ], + "reprojectionErrors": [ + { + "x": -9.014312744140625, + "y": 3.5577239990234375 + }, + { + "x": -4.473968505859375, + "y": -0.62347412109375 + }, + { + "x": -0.322265625, + "y": -0.535247802734375 + }, + { + "x": 2.29541015625, + "y": -0.547760009765625 + }, + { + "x": 3.535552978515625, + "y": 2.493743896484375 + }, + { + "x": 5.296905517578125, + "y": 1.124481201171875 + }, + { + "x": 6.162689208984375, + "y": 7.1846923828125 + }, + { + "x": -7.962127685546875, + "y": 0.9720458984375 + }, + { + "x": -1.687591552734375, + "y": -0.08660888671875 + }, + { + "x": -0.90045166015625, + "y": 0.13751220703125 + }, + { + "x": 0.630889892578125, + "y": -0.30242919921875 + }, + { + "x": 3.248870849609375, + "y": -0.144622802734375 + }, + { + "x": 6.464263916015625, + "y": 0.996795654296875 + }, + { + "x": 5.86822509765625, + "y": 4.71636962890625 + }, + { + "x": -5.95172119140625, + "y": 5.481231689453125 + }, + { + "x": -2.109405517578125, + "y": 1.772003173828125 + }, + { + "x": -1.87158203125, + "y": 1.296234130859375 + }, + { + "x": 1.21893310546875, + "y": -2.667236328125 + }, + { + "x": 1.465423583984375, + "y": -1.119476318359375 + }, + { + "x": 2.45526123046875, + "y": -0.05096435546875 + }, + { + "x": 2.9754638671875, + "y": 4.76971435546875 + }, + { + "x": -3.713897705078125, + "y": 3.7249298095703125 + }, + { + "x": -1.11309814453125, + "y": 0.984649658203125 + }, + { + "x": 1.3182373046875, + "y": -0.62933349609375 + }, + { + "x": 0.805877685546875, + "y": -2.45318603515625 + }, + { + "x": 1.22906494140625, + "y": -2.710174560546875 + }, + { + "x": 0.4808349609375, + "y": 2.081634521484375 + }, + { + "x": 2.1182861328125, + "y": 1.16302490234375 + }, + { + "x": -0.064666748046875, + "y": 2.7787933349609375 + }, + { + "x": -1.4736328125, + "y": 0.772247314453125 + }, + { + "x": 1.767608642578125, + "y": -1.67156982421875 + }, + { + "x": 2.408447265625, + "y": -1.261627197265625 + }, + { + "x": 0.724884033203125, + "y": -3.86566162109375 + }, + { + "x": 0.622222900390625, + "y": -2.433349609375 + }, + { + "x": -1.26025390625, + "y": 1.97515869140625 + }, + { + "x": 1.246002197265625, + "y": 4.000396728515625 + }, + { + "x": 1.52032470703125, + "y": 0.454986572265625 + }, + { + "x": 1.3468170166015625, + "y": -3.393829345703125 + }, + { + "x": 1.7808837890625, + "y": -3.337615966796875 + }, + { + "x": -2.3820953369140625, + "y": -4.97216796875 + }, + { + "x": -0.790771484375, + "y": -3.497955322265625 + }, + { + "x": -2.091644287109375, + "y": 0.3839111328125 + }, + { + "x": 0.7637786865234375, + "y": 3.24456787109375 + }, + { + "x": 2.449554443359375, + "y": -0.103790283203125 + }, + { + "x": 0.80859375, + "y": -2.453887939453125 + }, + { + "x": 2.0848541259765625, + "y": -5.0284423828125 + }, + { + "x": -0.441009521484375, + "y": -5.50604248046875 + }, + { + "x": -5.464569091796875, + "y": -7.860137939453125 + }, + { + "x": -6.0057830810546875, + "y": 1.01959228515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.0852483142549318, + "y": -0.081697047253757, + "z": 0.5032019596846389 + }, + "rotation": { + "quaternion": { + "W": 0.7424064338787101, + "X": 0.001471230186011914, + "Y": 0.004912280506936799, + "Z": 0.6699301395798353 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img33.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img33.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 414.1016540527344, + "y": 154.0436553955078 + }, + { + "x": 416.4920654296875, + "y": 207.54458618164062 + }, + { + "x": 418.3385009765625, + "y": 256.79437255859375 + }, + { + "x": 423.2220764160156, + "y": 306.4018249511719 + }, + { + "x": 426.34344482421875, + "y": 355.4548645019531 + }, + { + "x": 433.2895202636719, + "y": 403.69879150390625 + }, + { + "x": 440.04656982421875, + "y": 446.1316833496094 + }, + { + "x": 364.4190368652344, + "y": 164.15228271484375 + }, + { + "x": 364.85162353515625, + "y": 211.72238159179688 + }, + { + "x": 370.4566955566406, + "y": 262.1017761230469 + }, + { + "x": 374.3773193359375, + "y": 312.4097595214844 + }, + { + "x": 381.54620361328125, + "y": 362.9457092285156 + }, + { + "x": 383.3893127441406, + "y": 408.3135986328125 + }, + { + "x": 389.84490966796875, + "y": 456.3446960449219 + }, + { + "x": 313.27227783203125, + "y": 164.61378479003906 + }, + { + "x": 315.68218994140625, + "y": 217.456787109375 + }, + { + "x": 321.7547302246094, + "y": 264.68853759765625 + }, + { + "x": 324.6090087890625, + "y": 318.6681823730469 + }, + { + "x": 331.7834777832031, + "y": 365.6970520019531 + }, + { + "x": 337.3641662597656, + "y": 416.344970703125 + }, + { + "x": 342.1432189941406, + "y": 459.8029479980469 + }, + { + "x": 263.5393371582031, + "y": 174.59942626953125 + }, + { + "x": 267.3058776855469, + "y": 222.51942443847656 + }, + { + "x": 270.2491760253906, + "y": 273.0670166015625 + }, + { + "x": 277.4123840332031, + "y": 322.81536865234375 + }, + { + "x": 283.8885498046875, + "y": 374.4095764160156 + }, + { + "x": 288.646240234375, + "y": 420.4725646972656 + }, + { + "x": 295.4449462890625, + "y": 468.59130859375 + }, + { + "x": 211.5492401123047, + "y": 181.90713500976562 + }, + { + "x": 218.57162475585938, + "y": 229.8233642578125 + }, + { + "x": 221.82839965820312, + "y": 282.00146484375 + }, + { + "x": 226.74969482421875, + "y": 327.94244384765625 + }, + { + "x": 235.6490020751953, + "y": 377.6383361816406 + }, + { + "x": 239.947998046875, + "y": 425.7114562988281 + }, + { + "x": 248.09371948242188, + "y": 474.2010498046875 + }, + { + "x": 165.27926635742188, + "y": 186.29930114746094 + }, + { + "x": 170.07009887695312, + "y": 236.86204528808594 + }, + { + "x": 176.24136352539062, + "y": 287.4906921386719 + }, + { + "x": 181.43203735351562, + "y": 336.5746765136719 + }, + { + "x": 188.73609924316406, + "y": 385.1590881347656 + }, + { + "x": 194.8206024169922, + "y": 432.0240173339844 + }, + { + "x": 202.822998046875, + "y": 479.3831787109375 + }, + { + "x": 119.20267486572266, + "y": 193.59725952148438 + }, + { + "x": 123.63871765136719, + "y": 243.39321899414062 + }, + { + "x": 129.94676208496094, + "y": 293.4354248046875 + }, + { + "x": 133.5464324951172, + "y": 341.4080810546875 + }, + { + "x": 141.8096466064453, + "y": 391.77899169921875 + }, + { + "x": 151.4134063720703, + "y": 440.2797546386719 + }, + { + "x": 154.61672973632812, + "y": 488.0543518066406 + } + ], + "reprojectionErrors": [ + { + "x": -7.41448974609375, + "y": 2.826416015625 + }, + { + "x": -4.076904296875, + "y": -1.3935089111328125 + }, + { + "x": -0.196868896484375, + "y": -1.33526611328125 + }, + { + "x": 0.644775390625, + "y": -1.605194091796875 + }, + { + "x": 3.2476806640625, + "y": -1.288726806640625 + }, + { + "x": 2.02520751953125, + "y": -0.128692626953125 + }, + { + "x": 0.9913330078125, + "y": 6.87933349609375 + }, + { + "x": -6.212249755859375, + "y": -0.9790191650390625 + }, + { + "x": -0.944427490234375, + "y": 0.6184234619140625 + }, + { + "x": -0.8514404296875, + "y": -0.566436767578125 + }, + { + "x": 0.923919677734375, + "y": -1.650390625 + }, + { + "x": -0.550750732421875, + "y": -2.930419921875 + }, + { + "x": 3.298858642578125, + "y": 0.99200439453125 + }, + { + "x": 2.534759521484375, + "y": 2.2880859375 + }, + { + "x": -3.345458984375, + "y": 4.8202972412109375 + }, + { + "x": -0.082061767578125, + "y": 1.0350341796875 + }, + { + "x": -0.484405517578125, + "y": 2.88800048828125 + }, + { + "x": 2.328643798828125, + "y": -1.977508544921875 + }, + { + "x": 0.81890869140625, + "y": 0.1396484375 + }, + { + "x": 0.900665283203125, + "y": -1.327911376953125 + }, + { + "x": 1.782012939453125, + "y": 4.431243896484375 + }, + { + "x": -1.7027587890625, + "y": 1.0545806884765625 + }, + { + "x": 0.177520751953125, + "y": 2.0861358642578125 + }, + { + "x": 2.8770751953125, + "y": 0.517059326171875 + }, + { + "x": 1.35308837890625, + "y": -0.223388671875 + }, + { + "x": 0.51275634765625, + "y": -2.77789306640625 + }, + { + "x": 1.38775634765625, + "y": 0.233154296875 + }, + { + "x": 0.218902587890625, + "y": 1.225128173828125 + }, + { + "x": 2.3764190673828125, + "y": -0.0726318359375 + }, + { + "x": 0.974853515625, + "y": 0.860076904296875 + }, + { + "x": 3.3341827392578125, + "y": -2.442138671875 + }, + { + "x": 4.0245208740234375, + "y": 0.5220947265625 + }, + { + "x": 0.732666015625, + "y": -0.236785888671875 + }, + { + "x": 2.037200927734375, + "y": 0.661376953125 + }, + { + "x": -0.508636474609375, + "y": 1.1796875 + }, + { + "x": 0.90447998046875, + "y": 1.6776885986328125 + }, + { + "x": 1.7089996337890625, + "y": -0.13519287109375 + }, + { + "x": 1.1275787353515625, + "y": -1.987091064453125 + }, + { + "x": 1.5214996337890625, + "y": -2.26495361328125 + }, + { + "x": -0.2029571533203125, + "y": -2.01153564453125 + }, + { + "x": -0.712554931640625, + "y": -0.00439453125 + }, + { + "x": -3.144500732421875, + "y": 1.545074462890625 + }, + { + "x": -0.6019287109375, + "y": 0.485626220703125 + }, + { + "x": 0.53240966796875, + "y": -0.6560821533203125 + }, + { + "x": -0.2115478515625, + "y": -2.017120361328125 + }, + { + "x": 1.7468414306640625, + "y": -1.279327392578125 + }, + { + "x": -0.964080810546875, + "y": -2.908050537109375 + }, + { + "x": -5.0210418701171875, + "y": -2.632476806640625 + }, + { + "x": -2.68280029296875, + "y": -1.594207763671875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.13217358409063543, + "y": -0.10891049046688381, + "z": 0.5438077714849661 + }, + "rotation": { + "quaternion": { + "W": 0.7471558675306601, + "X": 0.014777334801333203, + "Y": 0.01805288966394142, + "Z": 0.6642392890859871 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img34.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img34.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 375.2999572753906, + "y": 175.31533813476562 + }, + { + "x": 379.3180236816406, + "y": 228.993896484375 + }, + { + "x": 381.7319641113281, + "y": 278.4433288574219 + }, + { + "x": 387.4686584472656, + "y": 328.4715881347656 + }, + { + "x": 391.6173095703125, + "y": 377.4256591796875 + }, + { + "x": 400.5867614746094, + "y": 426.78924560546875 + }, + { + "x": 407.6202697753906, + "y": 466.95849609375 + }, + { + "x": 326.09161376953125, + "y": 185.9413299560547 + }, + { + "x": 327.1293640136719, + "y": 234.48475646972656 + }, + { + "x": 333.5009460449219, + "y": 284.6444091796875 + }, + { + "x": 338.05950927734375, + "y": 336.6957702636719 + }, + { + "x": 345.2645568847656, + "y": 384.67041015625 + }, + { + "x": 348.80975341796875, + "y": 432.1460876464844 + }, + { + "x": 356.0395202636719, + "y": 478.3111877441406 + }, + { + "x": 275.18975830078125, + "y": 187.15708923339844 + }, + { + "x": 278.1238708496094, + "y": 241.02157592773438 + }, + { + "x": 285.4657897949219, + "y": 288.21038818359375 + }, + { + "x": 290.74005126953125, + "y": 344.51226806640625 + }, + { + "x": 297.1567077636719, + "y": 390.1268310546875 + }, + { + "x": 303.18121337890625, + "y": 439.9795227050781 + }, + { + "x": 309.8475341796875, + "y": 483.64691162109375 + }, + { + "x": 225.16647338867188, + "y": 198.5633544921875 + }, + { + "x": 228.55331420898438, + "y": 248.44155883789062 + }, + { + "x": 233.22824096679688, + "y": 297.62847900390625 + }, + { + "x": 241.96434020996094, + "y": 347.6524353027344 + }, + { + "x": 249.66610717773438, + "y": 399.8425598144531 + }, + { + "x": 255.0664520263672, + "y": 446.4256896972656 + }, + { + "x": 261.70953369140625, + "y": 491.9930725097656 + }, + { + "x": 173.39599609375, + "y": 206.49417114257812 + }, + { + "x": 181.83090209960938, + "y": 256.0788269042969 + }, + { + "x": 186.1858367919922, + "y": 307.3472900390625 + }, + { + "x": 191.920654296875, + "y": 354.6297302246094 + }, + { + "x": 201.4888916015625, + "y": 404.1739807128906 + }, + { + "x": 208.7106475830078, + "y": 453.3799743652344 + }, + { + "x": 216.50363159179688, + "y": 499.63140869140625 + }, + { + "x": 126.45133972167969, + "y": 212.00514221191406 + }, + { + "x": 132.61322021484375, + "y": 263.3489074707031 + }, + { + "x": 138.5129852294922, + "y": 313.15924072265625 + }, + { + "x": 145.57054138183594, + "y": 364.5393371582031 + }, + { + "x": 155.44981384277344, + "y": 412.8529052734375 + }, + { + "x": 161.7417755126953, + "y": 459.6656799316406 + }, + { + "x": 171.33668518066406, + "y": 506.5406494140625 + }, + { + "x": 81.00139617919922, + "y": 220.06475830078125 + }, + { + "x": 86.15283966064453, + "y": 270.9488525390625 + }, + { + "x": 94.30448913574219, + "y": 320.4461975097656 + }, + { + "x": 99.33683013916016, + "y": 370.7372741699219 + }, + { + "x": 108.05091094970703, + "y": 420.2832336425781 + }, + { + "x": 118.91276550292969, + "y": 468.6943359375 + }, + { + "x": 123.46610260009766, + "y": 515.9943237304688 + } + ], + "reprojectionErrors": [ + { + "x": -7.503387451171875, + "y": 2.900177001953125 + }, + { + "x": -4.715362548828125, + "y": -1.313201904296875 + }, + { + "x": -0.326080322265625, + "y": -1.2789306640625 + }, + { + "x": 0.7379150390625, + "y": -1.802459716796875 + }, + { + "x": 3.387725830078125, + "y": -1.22833251953125 + }, + { + "x": 1.214874267578125, + "y": -1.037750244140625 + }, + { + "x": 0.976409912109375, + "y": 8.3756103515625 + }, + { + "x": -6.7191162109375, + "y": -0.358551025390625 + }, + { + "x": -0.9786376953125, + "y": 0.4330291748046875 + }, + { + "x": -0.575714111328125, + "y": -0.373077392578125 + }, + { + "x": 1.63690185546875, + "y": -3.049896240234375 + }, + { + "x": 1.20001220703125, + "y": -1.62652587890625 + }, + { + "x": 4.420257568359375, + "y": 0.32177734375 + }, + { + "x": 3.95361328125, + "y": 3.609039306640625 + }, + { + "x": -4.01318359375, + "y": 5.7425994873046875 + }, + { + "x": -0.19635009765625, + "y": 1.0867767333984375 + }, + { + "x": -0.79180908203125, + "y": 3.12518310546875 + }, + { + "x": 0.676239013671875, + "y": -3.928466796875 + }, + { + "x": 0.998046875, + "y": -0.271331787109375 + }, + { + "x": 1.708526611328125, + "y": -0.826416015625 + }, + { + "x": 1.7740478515625, + "y": 4.83221435546875 + }, + { + "x": -1.968780517578125, + "y": 1.60467529296875 + }, + { + "x": 1.368682861328125, + "y": 0.812591552734375 + }, + { + "x": 3.4127655029296875, + "y": 0.730377197265625 + }, + { + "x": 1.3907470703125, + "y": -0.167877197265625 + }, + { + "x": 0.3984375, + "y": -3.208831787109375 + }, + { + "x": 1.7032623291015625, + "y": -0.61688232421875 + }, + { + "x": 1.7613525390625, + "y": 3.019195556640625 + }, + { + "x": 2.029052734375, + "y": 0.8953857421875 + }, + { + "x": 0.2924041748046875, + "y": 0.278045654296875 + }, + { + "x": 2.6296539306640625, + "y": -2.004486083984375 + }, + { + "x": 3.581298828125, + "y": -0.27996826171875 + }, + { + "x": 0.6941070556640625, + "y": -0.7938232421875 + }, + { + "x": 0.1483306884765625, + "y": -0.943511962890625 + }, + { + "x": -0.97344970703125, + "y": 1.889678955078125 + }, + { + "x": 1.3965911865234375, + "y": 2.560882568359375 + }, + { + "x": 1.9075164794921875, + "y": 0.0693359375 + }, + { + "x": 2.6737213134765625, + "y": -0.87017822265625 + }, + { + "x": 2.2756195068359375, + "y": -3.3583984375 + }, + { + "x": -0.9503936767578125, + "y": -2.756622314453125 + }, + { + "x": -0.594970703125, + "y": -0.628173828125 + }, + { + "x": -3.5480194091796875, + "y": 1.46636962890625 + }, + { + "x": -0.545501708984375, + "y": 1.6343536376953125 + }, + { + "x": 0.95098876953125, + "y": -0.509002685546875 + }, + { + "x": -0.560333251953125, + "y": -1.2469482421875 + }, + { + "x": 1.0403671264648438, + "y": -2.757568359375 + }, + { + "x": -1.047637939453125, + "y": -3.4996337890625 + }, + { + "x": -5.290061950683594, + "y": -3.0809326171875 + }, + { + "x": -3.2303009033203125, + "y": -1.5228271484375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.15117949869986927, + "y": -0.09740979043510635, + "z": 0.5405592230458415 + }, + "rotation": { + "quaternion": { + "W": 0.753941806109963, + "X": 0.01810295214288657, + "Y": 0.019319817368010028, + "Z": 0.6564074807466975 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img35.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img35.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 387.056640625, + "y": 99.70631408691406 + }, + { + "x": 388.3810729980469, + "y": 152.8707733154297 + }, + { + "x": 388.5453186035156, + "y": 202.4765625 + }, + { + "x": 391.2408142089844, + "y": 252.82113647460938 + }, + { + "x": 393.14312744140625, + "y": 303.12335205078125 + }, + { + "x": 399.09332275390625, + "y": 353.83953857421875 + }, + { + "x": 404.2356262207031, + "y": 396.47613525390625 + }, + { + "x": 337.78375244140625, + "y": 107.35894012451172 + }, + { + "x": 335.73614501953125, + "y": 156.19046020507812 + }, + { + "x": 339.7288513183594, + "y": 206.41976928710938 + }, + { + "x": 342.3057556152344, + "y": 257.6585693359375 + }, + { + "x": 347.13775634765625, + "y": 309.3961486816406 + }, + { + "x": 347.63116455078125, + "y": 356.6202392578125 + }, + { + "x": 352.38983154296875, + "y": 405.648193359375 + }, + { + "x": 286.4194641113281, + "y": 107.34933471679688 + }, + { + "x": 286.8753662109375, + "y": 160.0244140625 + }, + { + "x": 291.2651062011719, + "y": 207.96664428710938 + }, + { + "x": 292.139404296875, + "y": 263.62774658203125 + }, + { + "x": 297.3087463378906, + "y": 311.5607604980469 + }, + { + "x": 302.5732421875, + "y": 364.07318115234375 + }, + { + "x": 304.15997314453125, + "y": 408.83441162109375 + }, + { + "x": 236.2587432861328, + "y": 115.15386962890625 + }, + { + "x": 237.2456512451172, + "y": 165.0607147216797 + }, + { + "x": 238.76451110839844, + "y": 215.44229125976562 + }, + { + "x": 243.29641723632812, + "y": 267.0674133300781 + }, + { + "x": 247.2401580810547, + "y": 317.9456481933594 + }, + { + "x": 251.81640625, + "y": 366.3932800292969 + }, + { + "x": 258.06451416015625, + "y": 417.7821960449219 + }, + { + "x": 184.63438415527344, + "y": 121.1915054321289 + }, + { + "x": 191.6637725830078, + "y": 171.7789306640625 + }, + { + "x": 190.39212036132812, + "y": 222.54714965820312 + }, + { + "x": 193.72711181640625, + "y": 271.32379150390625 + }, + { + "x": 200.1238555908203, + "y": 321.46588134765625 + }, + { + "x": 202.261474609375, + "y": 370.943359375 + }, + { + "x": 209.3041534423828, + "y": 420.6524353027344 + }, + { + "x": 137.2546844482422, + "y": 125.20259857177734 + }, + { + "x": 139.30218505859375, + "y": 176.61965942382812 + }, + { + "x": 143.91842651367188, + "y": 228.2310028076172 + }, + { + "x": 146.5634307861328, + "y": 278.4389953613281 + }, + { + "x": 151.67202758789062, + "y": 327.7500915527344 + }, + { + "x": 157.2537841796875, + "y": 375.7899475097656 + }, + { + "x": 162.75074768066406, + "y": 425.9590148925781 + }, + { + "x": 90.80194854736328, + "y": 131.66946411132812 + }, + { + "x": 91.78434753417969, + "y": 181.98565673828125 + }, + { + "x": 97.25035858154297, + "y": 232.96759033203125 + }, + { + "x": 99.87564849853516, + "y": 284.16064453125 + }, + { + "x": 105.39628601074219, + "y": 333.81756591796875 + }, + { + "x": 112.6259536743164, + "y": 384.4955139160156 + }, + { + "x": 114.15502166748047, + "y": 434.37103271484375 + } + ], + "reprojectionErrors": [ + { + "x": -6.40667724609375, + "y": 0.5428314208984375 + }, + { + "x": -3.69512939453125, + "y": -2.4026947021484375 + }, + { + "x": 0.184112548828125, + "y": -1.6240081787109375 + }, + { + "x": 1.5399169921875, + "y": -1.4151458740234375 + }, + { + "x": 3.6968994140625, + "y": -0.991546630859375 + }, + { + "x": 1.81427001953125, + "y": -0.805999755859375 + }, + { + "x": 0.748046875, + "y": 7.638519287109375 + }, + { + "x": -6.2764892578125, + "y": -1.4879531860351562 + }, + { + "x": -0.290130615234375, + "y": -0.2776641845703125 + }, + { + "x": -0.33770751953125, + "y": -0.30072021484375 + }, + { + "x": 1.037078857421875, + "y": -1.16546630859375 + }, + { + "x": 0.16357421875, + "y": -2.3577880859375 + }, + { + "x": 3.6357421875, + "y": 1.138092041015625 + }, + { + "x": 2.84991455078125, + "y": 3.00823974609375 + }, + { + "x": -3.722076416015625, + "y": 4.083076477050781 + }, + { + "x": -0.334869384765625, + "y": 1.27716064453125 + }, + { + "x": -0.8763427734375, + "y": 3.367431640625 + }, + { + "x": 2.10302734375, + "y": -2.094451904296875 + }, + { + "x": 0.792999267578125, + "y": 0.341796875 + }, + { + "x": -0.606353759765625, + "y": -1.627838134765625 + }, + { + "x": 1.678131103515625, + "y": 4.330718994140625 + }, + { + "x": -2.0514678955078125, + "y": 1.7812881469726562 + }, + { + "x": 0.71051025390625, + "y": 1.575347900390625 + }, + { + "x": 2.944580078125, + "y": 1.0569610595703125 + }, + { + "x": 2.169830322265625, + "y": -0.53936767578125 + }, + { + "x": 1.9877166748046875, + "y": -1.2198486328125 + }, + { + "x": 1.1777496337890625, + "y": 0.70269775390625 + }, + { + "x": -1.2991943359375, + "y": -0.1402587890625 + }, + { + "x": 1.38970947265625, + "y": 1.1894073486328125 + }, + { + "x": -1.98358154296875, + "y": 0.1389312744140625 + }, + { + "x": 2.9470672607421875, + "y": -0.9310760498046875 + }, + { + "x": 3.274169921875, + "y": 0.155059814453125 + }, + { + "x": 0.5428314208984375, + "y": 0.04364013671875 + }, + { + "x": 2.074127197265625, + "y": 0.768096923828125 + }, + { + "x": -1.295928955078125, + "y": 1.4356689453125 + }, + { + "x": 0.8806304931640625, + "y": 2.5687255859375 + }, + { + "x": 2.3977813720703125, + "y": 0.528900146484375 + }, + { + "x": 1.347991943359375, + "y": -1.544952392578125 + }, + { + "x": 2.27142333984375, + "y": -2.051910400390625 + }, + { + "x": 0.733428955078125, + "y": -1.495086669921875 + }, + { + "x": -1.275360107421875, + "y": 0.503173828125 + }, + { + "x": -3.1967926025390625, + "y": 0.545806884765625 + }, + { + "x": -0.273223876953125, + "y": 1.43853759765625 + }, + { + "x": 2.218902587890625, + "y": 0.344024658203125 + }, + { + "x": 0.228118896484375, + "y": -1.256927490234375 + }, + { + "x": 1.0789413452148438, + "y": -2.90643310546875 + }, + { + "x": -0.9645309448242188, + "y": -2.853973388671875 + }, + { + "x": -4.715789794921875, + "y": -3.65338134765625 + }, + { + "x": -2.7650375366210938, + "y": -3.477783203125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.14222000946599325, + "y": -0.13475077078879782, + "z": 0.5315258456571815 + }, + "rotation": { + "quaternion": { + "W": 0.7376468463485543, + "X": 0.015052824710040146, + "Y": 0.038247328837556126, + "Z": 0.6739344807747063 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img36.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img36.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 713.7987670898438, + "y": 131.77743530273438 + }, + { + "x": 719.1181030273438, + "y": 185.14852905273438 + }, + { + "x": 719.8683471679688, + "y": 234.46412658691406 + }, + { + "x": 725.2608032226562, + "y": 284.55426025390625 + }, + { + "x": 726.2587890625, + "y": 335.2748718261719 + }, + { + "x": 734.46875, + "y": 383.30340576171875 + }, + { + "x": 739.0923461914062, + "y": 423.6643981933594 + }, + { + "x": 670.0230102539062, + "y": 141.043212890625 + }, + { + "x": 670.055419921875, + "y": 190.96347045898438 + }, + { + "x": 678.1678466796875, + "y": 241.541259765625 + }, + { + "x": 680.7832641601562, + "y": 294.4457702636719 + }, + { + "x": 687.5318603515625, + "y": 343.7510070800781 + }, + { + "x": 688.5416870117188, + "y": 390.9283447265625 + }, + { + "x": 694.4656372070312, + "y": 439.2646789550781 + }, + { + "x": 621.5723266601562, + "y": 141.07443237304688 + }, + { + "x": 625.5621337890625, + "y": 197.28121948242188 + }, + { + "x": 631.8861083984375, + "y": 245.79505920410156 + }, + { + "x": 636.1646118164062, + "y": 304.1402893066406 + }, + { + "x": 640.2681884765625, + "y": 352.003173828125 + }, + { + "x": 646.202392578125, + "y": 403.0306701660156 + }, + { + "x": 647.7073364257812, + "y": 450.5672607421875 + }, + { + "x": 571.4677734375, + "y": 151.27793884277344 + }, + { + "x": 575.5079345703125, + "y": 204.30596923828125 + }, + { + "x": 580.14697265625, + "y": 256.72991943359375 + }, + { + "x": 587.40673828125, + "y": 310.2222595214844 + }, + { + "x": 594.53369140625, + "y": 364.7206726074219 + }, + { + "x": 597.3283081054688, + "y": 414.37774658203125 + }, + { + "x": 602.3453369140625, + "y": 462.6769714355469 + }, + { + "x": 516.5864868164062, + "y": 159.80882263183594 + }, + { + "x": 526.1882934570312, + "y": 212.36126708984375 + }, + { + "x": 529.9454956054688, + "y": 268.6060791015625 + }, + { + "x": 536.724853515625, + "y": 320.330322265625 + }, + { + "x": 544.0030517578125, + "y": 372.7897644042969 + }, + { + "x": 548.4305419921875, + "y": 424.4244079589844 + }, + { + "x": 555.8192138671875, + "y": 473.4640197753906 + }, + { + "x": 465.6271057128906, + "y": 165.53431701660156 + }, + { + "x": 473.13922119140625, + "y": 219.78443908691406 + }, + { + "x": 480.47314453125, + "y": 278.6734619140625 + }, + { + "x": 485.13623046875, + "y": 331.447021484375 + }, + { + "x": 495.381591796875, + "y": 385.8310546875 + }, + { + "x": 500.15008544921875, + "y": 434.1837158203125 + }, + { + "x": 506.21173095703125, + "y": 487.5323181152344 + }, + { + "x": 411.88824462890625, + "y": 173.1182098388672 + }, + { + "x": 418.1181335449219, + "y": 230.29315185546875 + }, + { + "x": 425.4092712402344, + "y": 286.4383544921875 + }, + { + "x": 434.7445068359375, + "y": 344.69384765625 + }, + { + "x": 439.6251220703125, + "y": 396.711669921875 + }, + { + "x": 450.60723876953125, + "y": 452.45452880859375 + }, + { + "x": 455.19427490234375, + "y": 500.5130310058594 + } + ], + "reprojectionErrors": [ + { + "x": 0.5303955078125, + "y": 0.6597137451171875 + }, + { + "x": -1.1656494140625, + "y": -0.3519744873046875 + }, + { + "x": 1.6199951171875, + "y": 1.2988739013671875 + }, + { + "x": -0.32037353515625, + "y": 0.839263916015625 + }, + { + "x": 2.05340576171875, + "y": -1.532745361328125 + }, + { + "x": -2.86199951171875, + "y": -2.4434814453125 + }, + { + "x": -4.26507568359375, + "y": 3.130950927734375 + }, + { + "x": -1.552734375, + "y": -2.9467315673828125 + }, + { + "x": 2.74591064453125, + "y": 0.5098876953125 + }, + { + "x": -1.14453125, + "y": 1.859710693359375 + }, + { + "x": 0.3575439453125, + "y": -0.50592041015625 + }, + { + "x": -2.37371826171875, + "y": -0.603851318359375 + }, + { + "x": 0.53765869140625, + "y": 0.148712158203125 + }, + { + "x": -1.55731201171875, + "y": -1.483917236328125 + }, + { + "x": -0.916748046875, + "y": 2.9286956787109375 + }, + { + "x": 0.1904296875, + "y": 1.1595306396484375 + }, + { + "x": -1.169921875, + "y": 5.574066162109375 + }, + { + "x": -0.6124267578125, + "y": -1.2877197265625 + }, + { + "x": -0.0023193359375, + "y": 0.9486083984375 + }, + { + "x": -1.3399658203125, + "y": -1.30657958984375 + }, + { + "x": 1.63922119140625, + "y": -1.343505859375 + }, + { + "x": -0.72186279296875, + "y": -1.103240966796875 + }, + { + "x": 1.16485595703125, + "y": 1.4131011962890625 + }, + { + "x": 2.292236328125, + "y": 2.960357666015625 + }, + { + "x": 0.64532470703125, + "y": 1.9344482421875 + }, + { + "x": -1.01568603515625, + "y": -1.537811279296875 + }, + { + "x": 1.51495361328125, + "y": -1.54815673828125 + }, + { + "x": 1.6883544921875, + "y": -1.522613525390625 + }, + { + "x": 2.00201416015625, + "y": -3.1783599853515625 + }, + { + "x": -0.772216796875, + "y": 0.9694061279296875 + }, + { + "x": 2.107177734375, + "y": -0.2166748046875 + }, + { + "x": 1.781982421875, + "y": 1.54925537109375 + }, + { + "x": 0.78338623046875, + "y": 1.079986572265625 + }, + { + "x": 2.46856689453125, + "y": 2.44140625E-4 + }, + { + "x": 1.03271484375, + "y": 0.141265869140625 + }, + { + "x": -1.611724853515625, + "y": -2.1426849365234375 + }, + { + "x": -1.317169189453125, + "y": 1.5155792236328125 + }, + { + "x": -1.06964111328125, + "y": -1.1795654296875 + }, + { + "x": 1.63372802734375, + "y": 0.604034423828125 + }, + { + "x": -1.450531005859375, + "y": -0.786468505859375 + }, + { + "x": 0.7457275390625, + "y": 2.359619140625 + }, + { + "x": 1.4610595703125, + "y": -0.920135498046875 + }, + { + "x": -5.0465087890625, + "y": -2.6366729736328125 + }, + { + "x": -2.40374755859375, + "y": -0.63909912109375 + }, + { + "x": -1.0859375, + "y": 0.595489501953125 + }, + { + "x": -2.063720703125, + "y": -1.9898681640625 + }, + { + "x": 1.173095703125, + "y": 0.030853271484375 + }, + { + "x": -1.920806884765625, + "y": -3.231658935546875 + }, + { + "x": 1.161346435546875, + "y": -0.29901123046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.024180387423259606, + "y": -0.11576425844411457, + "z": 0.5185428420698454 + }, + "rotation": { + "quaternion": { + "W": 0.7324692848012576, + "X": -0.07450544059234013, + "Y": -0.2538784762785725, + "Z": 0.6272825562912984 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img37.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img37.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 753.658447265625, + "y": 284.7068786621094 + }, + { + "x": 759.5956420898438, + "y": 338.7987060546875 + }, + { + "x": 762.5223388671875, + "y": 390.3333740234375 + }, + { + "x": 768.1790771484375, + "y": 439.2652587890625 + }, + { + "x": 770.3021850585938, + "y": 488.9274597167969 + }, + { + "x": 776.3218994140625, + "y": 532.9453125 + }, + { + "x": 782.5830688476562, + "y": 572.7184448242188 + }, + { + "x": 704.8646850585938, + "y": 298.0351257324219 + }, + { + "x": 708.2943725585938, + "y": 348.28887939453125 + }, + { + "x": 715.2994384765625, + "y": 400.72509765625 + }, + { + "x": 718.9349975585938, + "y": 453.7573547363281 + }, + { + "x": 726.4269409179688, + "y": 500.51666259765625 + }, + { + "x": 729.4417724609375, + "y": 545.4392700195312 + }, + { + "x": 733.2107543945312, + "y": 589.3792114257812 + }, + { + "x": 650.646728515625, + "y": 304.042724609375 + }, + { + "x": 657.124755859375, + "y": 360.3741760253906 + }, + { + "x": 664.5858764648438, + "y": 410.149658203125 + }, + { + "x": 672.9949951171875, + "y": 467.294921875 + }, + { + "x": 676.1459350585938, + "y": 512.14404296875 + }, + { + "x": 681.9981079101562, + "y": 559.3558349609375 + }, + { + "x": 686.6865234375, + "y": 602.80224609375 + }, + { + "x": 597.6305541992188, + "y": 318.4471435546875 + }, + { + "x": 605.426513671875, + "y": 368.2451171875 + }, + { + "x": 609.7327880859375, + "y": 424.3931579589844 + }, + { + "x": 619.0823364257812, + "y": 475.6187744140625 + }, + { + "x": 628.472412109375, + "y": 527.7030639648438 + }, + { + "x": 632.3511352539062, + "y": 572.2679443359375 + }, + { + "x": 639.1393432617188, + "y": 617.64306640625 + }, + { + "x": 538.7045288085938, + "y": 329.24896240234375 + }, + { + "x": 547.1223754882812, + "y": 383.3779296875 + }, + { + "x": 555.1880493164062, + "y": 440.3804626464844 + }, + { + "x": 563.7752075195312, + "y": 487.96246337890625 + }, + { + "x": 573.4036865234375, + "y": 539.363037109375 + }, + { + "x": 577.6912841796875, + "y": 583.737548828125 + }, + { + "x": 590.2257080078125, + "y": 629.0737915039062 + }, + { + "x": 483.08734130859375, + "y": 341.4057312011719 + }, + { + "x": 493.03411865234375, + "y": 395.0828552246094 + }, + { + "x": 503.2987060546875, + "y": 451.6822814941406 + }, + { + "x": 511.6378479003906, + "y": 501.84423828125 + }, + { + "x": 524.5150756835938, + "y": 552.1697998046875 + }, + { + "x": 532.082763671875, + "y": 595.270751953125 + }, + { + "x": 540.1222534179688, + "y": 643.3228759765625 + }, + { + "x": 425.68011474609375, + "y": 352.4601135253906 + }, + { + "x": 434.4689636230469, + "y": 407.4945983886719 + }, + { + "x": 447.0339660644531, + "y": 462.4546203613281 + }, + { + "x": 460.1284484863281, + "y": 516.6255493164062 + }, + { + "x": 470.8901672363281, + "y": 561.5020141601562 + }, + { + "x": 482.5920104980469, + "y": 614.51416015625 + }, + { + "x": 489.11090087890625, + "y": 655.144775390625 + } + ], + "reprojectionErrors": [ + { + "x": 0.0638427734375, + "y": 2.614532470703125 + }, + { + "x": -0.8310546875, + "y": 0.57000732421875 + }, + { + "x": 1.13458251953125, + "y": -0.536529541015625 + }, + { + "x": 0.22723388671875, + "y": -0.582550048828125 + }, + { + "x": 2.71728515625, + "y": -2.828948974609375 + }, + { + "x": 1.18084716796875, + "y": -0.833251953125 + }, + { + "x": -0.7210693359375, + "y": 4.06842041015625 + }, + { + "x": -2.3226318359375, + "y": -0.462066650390625 + }, + { + "x": 0.17742919921875, + "y": 1.843048095703125 + }, + { + "x": -1.0787353515625, + "y": 0.309814453125 + }, + { + "x": 0.862548828125, + "y": -3.395660400390625 + }, + { + "x": -1.216552734375, + "y": -2.329803466796875 + }, + { + "x": 1.02520751953125, + "y": -0.8587646484375 + }, + { + "x": 2.3636474609375, + "y": 0.22906494140625 + }, + { + "x": -0.6318359375, + "y": 4.072662353515625 + }, + { + "x": -0.24700927734375, + "y": 0.8238525390625 + }, + { + "x": -1.05908203125, + "y": 2.43701171875 + }, + { + "x": -3.022705078125, + "y": -4.93115234375 + }, + { + "x": 0.07818603515625, + "y": -1.53741455078125 + }, + { + "x": 0.29327392578125, + "y": -1.96820068359375 + }, + { + "x": 1.49615478515625, + "y": -0.027587890625 + }, + { + "x": -1.55548095703125, + "y": 0.5152587890625 + }, + { + "x": -1.506591796875, + "y": 4.3363037109375 + }, + { + "x": 1.78253173828125, + "y": 0.073577880859375 + }, + { + "x": -0.208740234375, + "y": -0.914886474609375 + }, + { + "x": -2.4661865234375, + "y": -4.3302001953125 + }, + { + "x": 0.57281494140625, + "y": -1.7193603515625 + }, + { + "x": 0.49761962890625, + "y": -1.3419189453125 + }, + { + "x": 1.94805908203125, + "y": 0.88006591796875 + }, + { + "x": 2.4093017578125, + "y": 0.91943359375 + }, + { + "x": 2.9349365234375, + "y": -3.689727783203125 + }, + { + "x": 2.66571044921875, + "y": -0.564605712890625 + }, + { + "x": 1.09527587890625, + "y": -2.8614501953125 + }, + { + "x": 4.6182861328125, + "y": 0.34185791015625 + }, + { + "x": -0.34100341796875, + "y": 1.1302490234375 + }, + { + "x": 0.585693359375, + "y": 0.225433349609375 + }, + { + "x": 0.608001708984375, + "y": 1.279296875 + }, + { + "x": -0.016448974609375, + "y": -2.407012939453125 + }, + { + "x": 0.972198486328125, + "y": -1.38177490234375 + }, + { + "x": -2.8740234375, + "y": -2.16009521484375 + }, + { + "x": -1.6929931640625, + "y": 2.72650146484375 + }, + { + "x": -1.25238037109375, + "y": 1.17742919921875 + }, + { + "x": -0.623291015625, + "y": 1.025665283203125 + }, + { + "x": 1.70684814453125, + "y": 1.298583984375 + }, + { + "x": -0.11260986328125, + "y": -0.216705322265625 + }, + { + "x": -2.81585693359375, + "y": -2.7099609375 + }, + { + "x": -3.522796630859375, + "y": 2.4132080078125 + }, + { + "x": -5.489593505859375, + "y": -2.1939697265625 + }, + { + "x": -2.577545166015625, + "y": 4.06341552734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.04132698656219061, + "y": -0.03830620976658155, + "z": 0.4936042710341613 + }, + "rotation": { + "quaternion": { + "W": 0.7484248220896473, + "X": 0.002246064091891242, + "Y": -0.20659288319205962, + "Z": 0.6302179158755858 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img38.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img38.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 626.7576904296875, + "y": 281.60400390625 + }, + { + "x": 633.9312744140625, + "y": 338.219970703125 + }, + { + "x": 638.1658325195312, + "y": 391.11492919921875 + }, + { + "x": 645.5634155273438, + "y": 442.47723388671875 + }, + { + "x": 649.7517700195312, + "y": 493.6427307128906 + }, + { + "x": 659.2551879882812, + "y": 541.7210693359375 + }, + { + "x": 666.5045776367188, + "y": 581.5310668945312 + }, + { + "x": 575.1629028320312, + "y": 295.2491149902344 + }, + { + "x": 579.2304077148438, + "y": 347.4822082519531 + }, + { + "x": 588.2216796875, + "y": 401.1031188964844 + }, + { + "x": 594.7750244140625, + "y": 454.5626525878906 + }, + { + "x": 606.191650390625, + "y": 506.9571838378906 + }, + { + "x": 607.7499389648438, + "y": 552.263427734375 + }, + { + "x": 615.3233642578125, + "y": 599.1939086914062 + }, + { + "x": 518.6799926757812, + "y": 300.4783935546875 + }, + { + "x": 526.8029174804688, + "y": 359.0501708984375 + }, + { + "x": 535.5368041992188, + "y": 408.8770751953125 + }, + { + "x": 543.2904663085938, + "y": 467.3148193359375 + }, + { + "x": 550.089111328125, + "y": 516.7625732421875 + }, + { + "x": 560.076416015625, + "y": 566.4656982421875 + }, + { + "x": 565.69580078125, + "y": 610.2952270507812 + }, + { + "x": 464.4610290527344, + "y": 315.4161682128906 + }, + { + "x": 470.5213623046875, + "y": 369.9006042480469 + }, + { + "x": 478.139404296875, + "y": 423.315185546875 + }, + { + "x": 488.5830993652344, + "y": 478.14996337890625 + }, + { + "x": 499.1483459472656, + "y": 529.0922241210938 + }, + { + "x": 506.45672607421875, + "y": 578.6728515625 + }, + { + "x": 515.649169921875, + "y": 624.1775512695312 + }, + { + "x": 403.8151550292969, + "y": 327.25677490234375 + }, + { + "x": 416.0467834472656, + "y": 381.5967712402344 + }, + { + "x": 424.5085144042969, + "y": 437.4455871582031 + }, + { + "x": 437.3701171875, + "y": 491.1117858886719 + }, + { + "x": 447.1358337402344, + "y": 538.4159545898438 + }, + { + "x": 457.041015625, + "y": 590.1965942382812 + }, + { + "x": 466.29278564453125, + "y": 634.3527221679688 + }, + { + "x": 349.7379455566406, + "y": 337.03961181640625 + }, + { + "x": 360.25347900390625, + "y": 391.5194091796875 + }, + { + "x": 371.0990905761719, + "y": 449.316650390625 + }, + { + "x": 380.54681396484375, + "y": 501.9017639160156 + }, + { + "x": 394.1384582519531, + "y": 553.0711059570312 + }, + { + "x": 402.0464782714844, + "y": 602.0545654296875 + }, + { + "x": 411.27850341796875, + "y": 646.3492431640625 + }, + { + "x": 292.3426208496094, + "y": 348.0968017578125 + }, + { + "x": 303.0880432128906, + "y": 403.8211975097656 + }, + { + "x": 316.0168762207031, + "y": 459.07135009765625 + }, + { + "x": 329.6343688964844, + "y": 515.3621826171875 + }, + { + "x": 339.45782470703125, + "y": 563.7385864257812 + }, + { + "x": 354.49810791015625, + "y": 615.9972534179688 + }, + { + "x": 364.91650390625, + "y": 657.2401733398438 + } + ], + "reprojectionErrors": [ + { + "x": -2.8074951171875, + "y": 7.150909423828125 + }, + { + "x": -2.46484375, + "y": 2.818084716796875 + }, + { + "x": 0.6510009765625, + "y": 1.02313232421875 + }, + { + "x": 0.4439697265625, + "y": -0.380035400390625 + }, + { + "x": 3.2919921875, + "y": -2.68701171875 + }, + { + "x": 0.6761474609375, + "y": -2.96893310546875 + }, + { + "x": 0.17071533203125, + "y": 3.991943359375 + }, + { + "x": -3.52288818359375, + "y": 2.79620361328125 + }, + { + "x": 0.62744140625, + "y": 3.388946533203125 + }, + { + "x": -0.330810546875, + "y": 1.383880615234375 + }, + { + "x": 0.97076416015625, + "y": -1.626068115234375 + }, + { + "x": -2.7626953125, + "y": -4.6956787109375 + }, + { + "x": 3.19647216796875, + "y": -1.76190185546875 + }, + { + "x": 2.980712890625, + "y": -1.4993896484375 + }, + { + "x": -0.67266845703125, + "y": 7.10406494140625 + }, + { + "x": 0.15771484375, + "y": 1.9151611328125 + }, + { + "x": 0.1719970703125, + "y": 4.233184814453125 + }, + { + "x": 0.9688720703125, + "y": -3.252288818359375 + }, + { + "x": 2.5303955078125, + "y": -2.89739990234375 + }, + { + "x": 0.71954345703125, + "y": -3.90643310546875 + }, + { + "x": 3.09942626953125, + "y": -0.11126708984375 + }, + { + "x": -1.471343994140625, + "y": 1.961761474609375 + }, + { + "x": 2.193115234375, + "y": 1.43206787109375 + }, + { + "x": 4.073028564453125, + "y": 0.705230712890625 + }, + { + "x": 2.90887451171875, + "y": -2.661956787109375 + }, + { + "x": 1.412750244140625, + "y": -3.3121337890625 + }, + { + "x": 2.97064208984375, + "y": -3.73382568359375 + }, + { + "x": 2.44891357421875, + "y": -1.17218017578125 + }, + { + "x": 2.70550537109375, + "y": 0.187225341796875 + }, + { + "x": 1.008575439453125, + "y": 0.389251708984375 + }, + { + "x": 2.831512451171875, + "y": -2.214813232421875 + }, + { + "x": 0.013885498046875, + "y": -3.884979248046875 + }, + { + "x": 0.06036376953125, + "y": -0.3956298828125 + }, + { + "x": -0.25592041015625, + "y": -2.54132080078125 + }, + { + "x": -0.134033203125, + "y": 1.8206787109375 + }, + { + "x": -1.208282470703125, + "y": 0.75408935546875 + }, + { + "x": -0.33819580078125, + "y": 1.41961669921875 + }, + { + "x": -0.0731201171875, + "y": -2.5611572265625 + }, + { + "x": 1.325347900390625, + "y": -2.608245849609375 + }, + { + "x": -1.674713134765625, + "y": -2.47021484375 + }, + { + "x": 0.763671875, + "y": -1.331298828125 + }, + { + "x": 1.641815185546875, + "y": 3.35455322265625 + }, + { + "x": -3.400970458984375, + "y": 0.34417724609375 + }, + { + "x": -1.8660888671875, + "y": 0.38494873046875 + }, + { + "x": -2.81622314453125, + "y": -0.46173095703125 + }, + { + "x": -4.745025634765625, + "y": -3.6585693359375 + }, + { + "x": -3.1588134765625, + "y": -0.2008056640625 + }, + { + "x": -7.05804443359375, + "y": -1.83795166015625 + }, + { + "x": -6.594024658203125, + "y": 6.37286376953125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.019289821764886063, + "y": -0.03823554037420963, + "z": 0.5014028395097627 + }, + "rotation": { + "quaternion": { + "W": 0.7522833108176559, + "X": -0.021835103758204126, + "Y": -0.17018826959443192, + "Z": 0.6361045522565827 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img39.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img39.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 518.01171875, + "y": 334.2819519042969 + }, + { + "x": 520.9807739257812, + "y": 391.544677734375 + }, + { + "x": 523.6768188476562, + "y": 446.4381408691406 + }, + { + "x": 528.0869140625, + "y": 497.92529296875 + }, + { + "x": 530.2847290039062, + "y": 550.9225463867188 + }, + { + "x": 538.25537109375, + "y": 598.38623046875 + }, + { + "x": 544.7694702148438, + "y": 640.2005004882812 + }, + { + "x": 463.5802917480469, + "y": 344.84869384765625 + }, + { + "x": 465.1585998535156, + "y": 397.7149658203125 + }, + { + "x": 471.275634765625, + "y": 452.57733154296875 + }, + { + "x": 474.7518005371094, + "y": 506.9952392578125 + }, + { + "x": 483.4339599609375, + "y": 559.0094604492188 + }, + { + "x": 486.5337219238281, + "y": 603.548828125 + }, + { + "x": 493.2483215332031, + "y": 653.6810913085938 + }, + { + "x": 405.8648376464844, + "y": 345.6645812988281 + }, + { + "x": 410.6535949707031, + "y": 405.2574462890625 + }, + { + "x": 416.78814697265625, + "y": 456.193115234375 + }, + { + "x": 420.554931640625, + "y": 513.6616821289062 + }, + { + "x": 427.04229736328125, + "y": 563.9380493164062 + }, + { + "x": 433.1168518066406, + "y": 612.5825805664062 + }, + { + "x": 438.36590576171875, + "y": 659.7626342773438 + }, + { + "x": 350.6001281738281, + "y": 356.1465148925781 + }, + { + "x": 356.1128234863281, + "y": 408.2464599609375 + }, + { + "x": 359.91973876953125, + "y": 465.9858703613281 + }, + { + "x": 368.2738342285156, + "y": 518.9005737304688 + }, + { + "x": 377.1529235839844, + "y": 573.5182495117188 + }, + { + "x": 383.2865295410156, + "y": 617.4309692382812 + }, + { + "x": 394.67974853515625, + "y": 672.1383056640625 + }, + { + "x": 289.82354736328125, + "y": 363.7309265136719 + }, + { + "x": 297.5665283203125, + "y": 417.3870849609375 + }, + { + "x": 304.751220703125, + "y": 474.2195739746094 + }, + { + "x": 315.1427307128906, + "y": 527.8958740234375 + }, + { + "x": 322.35845947265625, + "y": 576.5924682617188 + }, + { + "x": 325.2182922363281, + "y": 624.5377197265625 + }, + { + "x": 338.7746887207031, + "y": 672.5673828125 + }, + { + "x": 235.41738891601562, + "y": 368.41265869140625 + }, + { + "x": 244.66400146484375, + "y": 422.5390319824219 + }, + { + "x": 250.44862365722656, + "y": 479.51849365234375 + }, + { + "x": 259.42974853515625, + "y": 533.8797607421875 + }, + { + "x": 271.14971923828125, + "y": 585.322265625 + }, + { + "x": 278.94110107421875, + "y": 631.0936889648438 + }, + { + "x": 282.52349853515625, + "y": 675.460693359375 + }, + { + "x": 182.2839813232422, + "y": 374.0503845214844 + }, + { + "x": 186.76170349121094, + "y": 429.2782897949219 + }, + { + "x": 199.1542205810547, + "y": 485.7264099121094 + }, + { + "x": 209.07493591308594, + "y": 541.5614013671875 + }, + { + "x": 214.9595184326172, + "y": 592.0171508789062 + }, + { + "x": 228.46746826171875, + "y": 640.9337158203125 + }, + { + "x": 233.8662567138672, + "y": 689.0209350585938 + } + ], + "reprojectionErrors": [ + { + "x": -6.288665771484375, + "y": 7.09857177734375 + }, + { + "x": -3.11663818359375, + "y": 2.680328369140625 + }, + { + "x": 0.239990234375, + "y": -0.121185302734375 + }, + { + "x": 1.79638671875, + "y": -0.250152587890625 + }, + { + "x": 5.48101806640625, + "y": -2.60491943359375 + }, + { + "x": 3.31072998046875, + "y": -0.12432861328125 + }, + { + "x": 2.51702880859375, + "y": 7.324462890625 + }, + { + "x": -5.994598388671875, + "y": 2.214263916015625 + }, + { + "x": -1.013336181640625, + "y": 2.38006591796875 + }, + { + "x": -0.666534423828125, + "y": -0.20855712890625 + }, + { + "x": 2.227783203125, + "y": -3.092132568359375 + }, + { + "x": -0.174896240234375, + "y": -4.29315185546875 + }, + { + "x": 2.915985107421875, + "y": 1.27734375 + }, + { + "x": 2.305389404296875, + "y": 0.56866455078125 + }, + { + "x": -2.90106201171875, + "y": 7.13934326171875 + }, + { + "x": -0.704132080078125, + "y": 0.77099609375 + }, + { + "x": 0.04376220703125, + "y": 2.295562744140625 + }, + { + "x": 3.058746337890625, + "y": -3.457977294921875 + }, + { + "x": 3.2550048828125, + "y": -2.74603271484375 + }, + { + "x": 3.768280029296875, + "y": -1.11090087890625 + }, + { + "x": 5.013641357421875, + "y": 1.29718017578125 + }, + { + "x": -2.760711669921875, + "y": 2.458831787109375 + }, + { + "x": -0.8536376953125, + "y": 3.780853271484375 + }, + { + "x": 2.64825439453125, + "y": -1.307098388671875 + }, + { + "x": 1.494781494140625, + "y": -2.32147216796875 + }, + { + "x": -0.289154052734375, + "y": -5.77117919921875 + }, + { + "x": 0.569488525390625, + "y": 0.769775390625 + }, + { + "x": -3.931884765625, + "y": -4.1806640625 + }, + { + "x": 2.37060546875, + "y": 0.738372802734375 + }, + { + "x": 2.48974609375, + "y": 0.7066650390625 + }, + { + "x": 3.04833984375, + "y": -3.2781982421875 + }, + { + "x": 0.284210205078125, + "y": -4.8641357421875 + }, + { + "x": 0.582855224609375, + "y": -2.20867919921875 + }, + { + "x": 5.127166748046875, + "y": 0.4781494140625 + }, + { + "x": -1.132568359375, + "y": 2.37841796875 + }, + { + "x": 0.5915679931640625, + "y": 1.985260009765625 + }, + { + "x": -0.341888427734375, + "y": 1.69097900390625 + }, + { + "x": 2.05963134765625, + "y": -2.239776611328125 + }, + { + "x": 1.140838623046875, + "y": -4.31591796875 + }, + { + "x": -2.63751220703125, + "y": -4.21759033203125 + }, + { + "x": -2.605010986328125, + "y": 0.82598876953125 + }, + { + "x": 1.52166748046875, + "y": 6.566162109375 + }, + { + "x": -3.0197296142578125, + "y": 2.34295654296875 + }, + { + "x": 1.275726318359375, + "y": 1.1600341796875 + }, + { + "x": -2.478973388671875, + "y": -2.033233642578125 + }, + { + "x": -3.893829345703125, + "y": -5.38336181640625 + }, + { + "x": -1.4011993408203125, + "y": -4.10491943359375 + }, + { + "x": -6.6573944091796875, + "y": -2.01904296875 + }, + { + "x": -3.926788330078125, + "y": 0.18255615234375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.07234427675030017, + "y": -0.013435774987790031, + "z": 0.501876378514644 + }, + "rotation": { + "quaternion": { + "W": 0.7396296913333298, + "X": 0.014415640232054022, + "Y": -0.08325344089820302, + "Z": 0.6676892792261028 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img40.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img40.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 444.64447021484375, + "y": 308.0574035644531 + }, + { + "x": 447.04327392578125, + "y": 363.9061279296875 + }, + { + "x": 448.4029846191406, + "y": 415.33221435546875 + }, + { + "x": 452.7906188964844, + "y": 466.6210632324219 + }, + { + "x": 455.4831237792969, + "y": 515.3817138671875 + }, + { + "x": 461.8582763671875, + "y": 564.989990234375 + }, + { + "x": 468.0654602050781, + "y": 603.8239135742188 + }, + { + "x": 392.2398986816406, + "y": 316.4232482910156 + }, + { + "x": 392.74993896484375, + "y": 367.45111083984375 + }, + { + "x": 397.39923095703125, + "y": 419.6380920410156 + }, + { + "x": 400.3230895996094, + "y": 472.7620849609375 + }, + { + "x": 406.4711608886719, + "y": 521.6932983398438 + }, + { + "x": 409.2117919921875, + "y": 567.9732055664062 + }, + { + "x": 413.6867980957031, + "y": 613.9103393554688 + }, + { + "x": 338.17388916015625, + "y": 315.6904296875 + }, + { + "x": 340.5080261230469, + "y": 371.990478515625 + }, + { + "x": 346.487060546875, + "y": 420.99432373046875 + }, + { + "x": 351.2486267089844, + "y": 478.8604736328125 + }, + { + "x": 356.620849609375, + "y": 524.02734375 + }, + { + "x": 361.0498046875, + "y": 574.7744140625 + }, + { + "x": 368.7386779785156, + "y": 613.6238403320312 + }, + { + "x": 286.08392333984375, + "y": 324.2186584472656 + }, + { + "x": 289.2098388671875, + "y": 374.74822998046875 + }, + { + "x": 291.4649963378906, + "y": 428.0484924316406 + }, + { + "x": 298.81463623046875, + "y": 480.22607421875 + }, + { + "x": 305.58502197265625, + "y": 531.7476806640625 + }, + { + "x": 310.15484619140625, + "y": 578.4583740234375 + }, + { + "x": 314.4100341796875, + "y": 622.430419921875 + }, + { + "x": 229.62525939941406, + "y": 329.6844787597656 + }, + { + "x": 236.52015686035156, + "y": 381.0997619628906 + }, + { + "x": 240.80343627929688, + "y": 435.14654541015625 + }, + { + "x": 249.40664672851562, + "y": 486.60723876953125 + }, + { + "x": 255.24118041992188, + "y": 533.8038330078125 + }, + { + "x": 259.20648193359375, + "y": 581.5653076171875 + }, + { + "x": 268.2457275390625, + "y": 628.7684326171875 + }, + { + "x": 179.62542724609375, + "y": 332.47161865234375 + }, + { + "x": 186.33465576171875, + "y": 384.5834655761719 + }, + { + "x": 190.2957000732422, + "y": 437.8526611328125 + }, + { + "x": 196.6817626953125, + "y": 491.85430908203125 + }, + { + "x": 207.57276916503906, + "y": 540.3844604492188 + }, + { + "x": 212.76380920410156, + "y": 585.9033813476562 + }, + { + "x": 220.12327575683594, + "y": 632.166015625 + }, + { + "x": 129.94091796875, + "y": 337.08868408203125 + }, + { + "x": 133.7289276123047, + "y": 388.8414306640625 + }, + { + "x": 143.05523681640625, + "y": 442.46356201171875 + }, + { + "x": 148.86643981933594, + "y": 494.5067443847656 + }, + { + "x": 154.92942810058594, + "y": 544.9769287109375 + }, + { + "x": 167.33688354492188, + "y": 592.9157104492188 + }, + { + "x": 172.0845184326172, + "y": 638.4248046875 + } + ], + "reprojectionErrors": [ + { + "x": -6.89453125, + "y": 5.49273681640625 + }, + { + "x": -4.053558349609375, + "y": 0.628936767578125 + }, + { + "x": -0.227752685546875, + "y": -0.3070068359375 + }, + { + "x": 0.5169677734375, + "y": -1.590789794921875 + }, + { + "x": 2.9046630859375, + "y": -0.822021484375 + }, + { + "x": 1.558563232421875, + "y": -1.3671875 + }, + { + "x": 0.33026123046875, + "y": 8.4046630859375 + }, + { + "x": -5.86669921875, + "y": 1.34906005859375 + }, + { + "x": -0.88055419921875, + "y": 1.3284912109375 + }, + { + "x": -0.091278076171875, + "y": -0.3465576171875 + }, + { + "x": 2.366943359375, + "y": -3.444244384765625 + }, + { + "x": 1.54547119140625, + "y": -2.82525634765625 + }, + { + "x": 4.07708740234375, + "y": -0.0218505859375 + }, + { + "x": 4.82098388671875, + "y": 2.66650390625 + }, + { + "x": -3.2845458984375, + "y": 6.315032958984375 + }, + { + "x": 0.135284423828125, + "y": 1.048004150390625 + }, + { + "x": -0.15081787109375, + "y": 2.581207275390625 + }, + { + "x": 0.720672607421875, + "y": -5.234161376953125 + }, + { + "x": 0.922760009765625, + "y": -0.82696533203125 + }, + { + "x": 2.010498046875, + "y": -2.4674072265625 + }, + { + "x": -0.218231201171875, + "y": 7.33148193359375 + }, + { + "x": -2.796112060546875, + "y": 2.0318603515625 + }, + { + "x": 0.0911865234375, + "y": 2.56439208984375 + }, + { + "x": 3.78472900390625, + "y": -0.170440673828125 + }, + { + "x": 2.320526123046875, + "y": -2.269500732421875 + }, + { + "x": 1.373504638671875, + "y": -4.19000244140625 + }, + { + "x": 2.566162109375, + "y": -1.767578125 + }, + { + "x": 4.013702392578125, + "y": 2.9344482421875 + }, + { + "x": 1.9327239990234375, + "y": 0.823883056640625 + }, + { + "x": 1.3118438720703125, + "y": 0.503143310546875 + }, + { + "x": 3.2345733642578125, + "y": -2.946502685546875 + }, + { + "x": 0.7706756591796875, + "y": -4.2977294921875 + }, + { + "x": 1.010040283203125, + "y": -1.86297607421875 + }, + { + "x": 3.054443359375, + "y": -0.4617919921875 + }, + { + "x": -0.0380859375, + "y": 1.03802490234375 + }, + { + "x": 0.0636749267578125, + "y": 2.308197021484375 + }, + { + "x": -0.1090850830078125, + "y": 1.3267822265625 + }, + { + "x": 2.3948211669921875, + "y": -1.310272216796875 + }, + { + "x": 2.403564453125, + "y": -5.168243408203125 + }, + { + "x": -2.161468505859375, + "y": -4.0335693359375 + }, + { + "x": -1.094024658203125, + "y": -0.357177734375 + }, + { + "x": -2.261260986328125, + "y": 2.11505126953125 + }, + { + "x": -2.2705612182617188, + "y": 1.9771728515625 + }, + { + "x": 0.74212646484375, + "y": 1.39410400390625 + }, + { + "x": -1.858551025390625, + "y": -1.55755615234375 + }, + { + "x": -1.01776123046875, + "y": -3.4195556640625 + }, + { + "x": -0.5009918212890625, + "y": -4.18829345703125 + }, + { + "x": -6.3995361328125, + "y": -2.89593505859375 + }, + { + "x": -4.7078094482421875, + "y": 0.3648681640625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.11236677887402534, + "y": -0.027823926083745367, + "z": 0.5255633509227468 + }, + "rotation": { + "quaternion": { + "W": 0.7346628943584418, + "X": 0.026224305354362227, + "Y": -0.0444953646453021, + "Z": 0.6764635097229117 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img41.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img41.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 425.0460205078125, + "y": 310.8395080566406 + }, + { + "x": 426.84661865234375, + "y": 366.7098083496094 + }, + { + "x": 427.53216552734375, + "y": 417.6119689941406 + }, + { + "x": 431.1272888183594, + "y": 467.79949951171875 + }, + { + "x": 432.619140625, + "y": 517.6044311523438 + }, + { + "x": 438.1971740722656, + "y": 564.169677734375 + }, + { + "x": 444.3929748535156, + "y": 606.1279907226562 + }, + { + "x": 373.1530456542969, + "y": 319.0456848144531 + }, + { + "x": 373.2787170410156, + "y": 368.4485168457031 + }, + { + "x": 378.3503112792969, + "y": 422.0098876953125 + }, + { + "x": 380.1181945800781, + "y": 472.8407897949219 + }, + { + "x": 386.5058898925781, + "y": 522.8729248046875 + }, + { + "x": 389.5117492675781, + "y": 565.6885375976562 + }, + { + "x": 397.8850402832031, + "y": 616.2161865234375 + }, + { + "x": 319.15753173828125, + "y": 317.5712585449219 + }, + { + "x": 320.8807678222656, + "y": 372.486328125 + }, + { + "x": 326.6391906738281, + "y": 421.4465637207031 + }, + { + "x": 330.570068359375, + "y": 478.1780700683594 + }, + { + "x": 335.431396484375, + "y": 523.723876953125 + }, + { + "x": 339.6516418457031, + "y": 573.126220703125 + }, + { + "x": 346.4842224121094, + "y": 613.3403930664062 + }, + { + "x": 266.8789978027344, + "y": 324.3547058105469 + }, + { + "x": 270.3392333984375, + "y": 375.4530334472656 + }, + { + "x": 272.49371337890625, + "y": 427.6874694824219 + }, + { + "x": 280.1990051269531, + "y": 478.4029541015625 + }, + { + "x": 286.6985168457031, + "y": 530.8768920898438 + }, + { + "x": 288.9132385253906, + "y": 578.31298828125 + }, + { + "x": 293.84716796875, + "y": 619.59619140625 + }, + { + "x": 212.64154052734375, + "y": 329.3616638183594 + }, + { + "x": 218.33062744140625, + "y": 379.9625244140625 + }, + { + "x": 222.43991088867188, + "y": 434.0798034667969 + }, + { + "x": 228.62599182128906, + "y": 482.4629821777344 + }, + { + "x": 235.13436889648438, + "y": 532.2357177734375 + }, + { + "x": 240.37796020507812, + "y": 578.484375 + }, + { + "x": 248.48890686035156, + "y": 624.8988647460938 + }, + { + "x": 163.3999786376953, + "y": 331.5417785644531 + }, + { + "x": 170.1221466064453, + "y": 383.0410461425781 + }, + { + "x": 173.2689666748047, + "y": 435.46142578125 + }, + { + "x": 179.03179931640625, + "y": 488.8501892089844 + }, + { + "x": 189.14215087890625, + "y": 536.4251098632812 + }, + { + "x": 194.43319702148438, + "y": 581.3964233398438 + }, + { + "x": 202.1122589111328, + "y": 627.8692626953125 + }, + { + "x": 114.87986755371094, + "y": 335.7026062011719 + }, + { + "x": 118.56717681884766, + "y": 386.5184020996094 + }, + { + "x": 126.28475189208984, + "y": 439.9897155761719 + }, + { + "x": 132.2447052001953, + "y": 490.2834777832031 + }, + { + "x": 138.31752014160156, + "y": 540.3963012695312 + }, + { + "x": 149.79248046875, + "y": 587.2944946289062 + }, + { + "x": 154.187255859375, + "y": 632.2929077148438 + } + ], + "reprojectionErrors": [ + { + "x": -7.151092529296875, + "y": 5.097564697265625 + }, + { + "x": -4.158111572265625, + "y": 0.035308837890625 + }, + { + "x": -0.10382080078125, + "y": -0.5843505859375 + }, + { + "x": 0.98822021484375, + "y": -1.004241943359375 + }, + { + "x": 4.131866455078125, + "y": -1.54608154296875 + }, + { + "x": 3.138702392578125, + "y": 0.657470703125 + }, + { + "x": 1.478118896484375, + "y": 6.98333740234375 + }, + { + "x": -6.16534423828125, + "y": 0.41229248046875 + }, + { + "x": -1.23345947265625, + "y": 1.77850341796875 + }, + { + "x": -1.3048095703125, + "y": -1.5386962890625 + }, + { + "x": 1.871368408203125, + "y": -2.639617919921875 + }, + { + "x": 0.372650146484375, + "y": -3.4456787109375 + }, + { + "x": 2.201751708984375, + "y": 2.4710693359375 + }, + { + "x": -1.3895263671875, + "y": 0.19183349609375 + }, + { + "x": -3.058319091796875, + "y": 5.4093017578125 + }, + { + "x": 0.540008544921875, + "y": 1.22760009765625 + }, + { + "x": 0.042266845703125, + "y": 2.476531982421875 + }, + { + "x": 1.3123779296875, + "y": -4.559478759765625 + }, + { + "x": 1.593536376953125, + "y": -0.91302490234375 + }, + { + "x": 2.458404541015625, + "y": -1.6163330078125 + }, + { + "x": 0.6546630859375, + "y": 6.3851318359375 + }, + { + "x": -1.65966796875, + "y": 2.150787353515625 + }, + { + "x": 0.4658203125, + "y": 1.7535400390625 + }, + { + "x": 3.832611083984375, + "y": -0.303558349609375 + }, + { + "x": 1.58538818359375, + "y": -1.354766845703125 + }, + { + "x": 0.48199462890625, + "y": -4.667236328125 + }, + { + "x": 3.602630615234375, + "y": -3.43450927734375 + }, + { + "x": 3.94451904296875, + "y": 3.46820068359375 + }, + { + "x": 1.6964874267578125, + "y": 0.67181396484375 + }, + { + "x": 1.857513427734375, + "y": 0.7430419921875 + }, + { + "x": 3.5303192138671875, + "y": -3.22540283203125 + }, + { + "x": 3.0596160888671875, + "y": -1.972381591796875 + }, + { + "x": 2.20123291015625, + "y": -2.61126708984375 + }, + { + "x": 2.54351806640625, + "y": -0.21826171875 + }, + { + "x": -0.0444488525390625, + "y": 1.5263671875 + }, + { + "x": 0.04522705078125, + "y": 2.0234375 + }, + { + "x": -0.56207275390625, + "y": 1.170562744140625 + }, + { + "x": 2.3343505859375, + "y": -1.126251220703125 + }, + { + "x": 2.5445404052734375, + "y": -4.9036865234375 + }, + { + "x": -1.6616058349609375, + "y": -3.36920166015625 + }, + { + "x": -1.115966796875, + "y": 0.2769775390625 + }, + { + "x": -3.0245361328125, + "y": 1.93951416015625 + }, + { + "x": -2.349029541015625, + "y": 1.398773193359375 + }, + { + "x": 0.34372711181640625, + "y": 1.20703125 + }, + { + "x": -1.069000244140625, + "y": -2.162750244140625 + }, + { + "x": -0.7978363037109375, + "y": -2.866912841796875 + }, + { + "x": -0.711822509765625, + "y": -3.89178466796875 + }, + { + "x": -6.098846435546875, + "y": -2.19354248046875 + }, + { + "x": -4.4752197265625, + "y": 0.92266845703125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.12261198907962137, + "y": -0.026735699928477113, + "z": 0.5273667158799453 + }, + "rotation": { + "quaternion": { + "W": 0.7300311793211617, + "X": 0.03849580434580796, + "Y": -0.038053141900886225, + "Z": 0.6812668410088621 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img42.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img42.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 406.3718566894531, + "y": 213.11878967285156 + }, + { + "x": 409.10516357421875, + "y": 274.3621520996094 + }, + { + "x": 410.10333251953125, + "y": 331.1094970703125 + }, + { + "x": 414.97088623046875, + "y": 387.6519775390625 + }, + { + "x": 417.59844970703125, + "y": 443.818359375 + }, + { + "x": 425.5084533691406, + "y": 497.99658203125 + }, + { + "x": 432.3648376464844, + "y": 544.8047485351562 + }, + { + "x": 351.295166015625, + "y": 223.34278869628906 + }, + { + "x": 350.3835144042969, + "y": 279.1185302734375 + }, + { + "x": 356.2687072753906, + "y": 336.7698669433594 + }, + { + "x": 359.4381408691406, + "y": 396.74786376953125 + }, + { + "x": 367.0223083496094, + "y": 451.7653503417969 + }, + { + "x": 369.50616455078125, + "y": 504.63629150390625 + }, + { + "x": 376.5027160644531, + "y": 557.3575439453125 + }, + { + "x": 292.6744384765625, + "y": 222.9940185546875 + }, + { + "x": 295.24114990234375, + "y": 284.9464416503906 + }, + { + "x": 301.4840393066406, + "y": 339.5894775390625 + }, + { + "x": 305.61224365234375, + "y": 404.27349853515625 + }, + { + "x": 313.450439453125, + "y": 455.3330383300781 + }, + { + "x": 321.1691589355469, + "y": 515.6617431640625 + }, + { + "x": 325.3576965332031, + "y": 560.8524780273438 + }, + { + "x": 235.22467041015625, + "y": 232.23414611816406 + }, + { + "x": 238.03311157226562, + "y": 291.23870849609375 + }, + { + "x": 241.40711975097656, + "y": 348.86492919921875 + }, + { + "x": 249.3521728515625, + "y": 408.0904846191406 + }, + { + "x": 254.4585418701172, + "y": 464.5644226074219 + }, + { + "x": 259.32684326171875, + "y": 526.529052734375 + }, + { + "x": 268.0657958984375, + "y": 571.6844482421875 + }, + { + "x": 175.17300415039062, + "y": 240.3755340576172 + }, + { + "x": 182.6754150390625, + "y": 298.0625 + }, + { + "x": 186.00559997558594, + "y": 359.1908264160156 + }, + { + "x": 193.15481567382812, + "y": 415.21380615234375 + }, + { + "x": 201.5070343017578, + "y": 471.8162536621094 + }, + { + "x": 206.37893676757812, + "y": 526.085693359375 + }, + { + "x": 218.00729370117188, + "y": 579.4654541015625 + }, + { + "x": 121.012451171875, + "y": 245.260986328125 + }, + { + "x": 126.93358612060547, + "y": 304.0629577636719 + }, + { + "x": 132.35107421875, + "y": 365.2987060546875 + }, + { + "x": 138.4468536376953, + "y": 423.74859619140625 + }, + { + "x": 149.56561279296875, + "y": 480.897705078125 + }, + { + "x": 157.5799560546875, + "y": 530.6273193359375 + }, + { + "x": 163.34487915039062, + "y": 586.442626953125 + }, + { + "x": 67.20540618896484, + "y": 251.17388916015625 + }, + { + "x": 70.61724853515625, + "y": 311.6964416503906 + }, + { + "x": 78.46874237060547, + "y": 371.23626708984375 + }, + { + "x": 85.27601623535156, + "y": 431.2884826660156 + }, + { + "x": 94.64323425292969, + "y": 486.1765441894531 + }, + { + "x": 106.2105484008789, + "y": 544.5370483398438 + }, + { + "x": 112.8060531616211, + "y": 595.101318359375 + } + ], + "reprojectionErrors": [ + { + "x": -8.4339599609375, + "y": 2.7750396728515625 + }, + { + "x": -4.54290771484375, + "y": -1.6357421875 + }, + { + "x": 1.07666015625, + "y": -1.55865478515625 + }, + { + "x": 2.820587158203125, + "y": -1.281646728515625 + }, + { + "x": 6.79864501953125, + "y": -0.630279541015625 + }, + { + "x": 5.48876953125, + "y": 2.010833740234375 + }, + { + "x": 5.2274169921875, + "y": 12.02679443359375 + }, + { + "x": -9.164031982421875, + "y": -0.44757080078125 + }, + { + "x": -1.642181396484375, + "y": 0.455780029296875 + }, + { + "x": -0.924835205078125, + "y": -0.524444580078125 + }, + { + "x": 2.5009765625, + "y": -3.836151123046875 + }, + { + "x": 1.505157470703125, + "y": -2.18890380859375 + }, + { + "x": 5.603118896484375, + "y": 1.6065673828125 + }, + { + "x": 5.1822509765625, + "y": 5.55657958984375 + }, + { + "x": -6.081756591796875, + "y": 6.8551177978515625 + }, + { + "x": -2.0518798828125, + "y": 1.43328857421875 + }, + { + "x": -1.70684814453125, + "y": 3.31298828125 + }, + { + "x": 0.7445068359375, + "y": -4.8529052734375 + }, + { + "x": -0.52203369140625, + "y": 0.604248046875 + }, + { + "x": -1.676666259765625, + "y": -3.20599365234375 + }, + { + "x": 0.691680908203125, + "y": 8.126708984375 + }, + { + "x": -3.916473388671875, + "y": 4.5233154296875 + }, + { + "x": -0.1414031982421875, + "y": 1.90576171875 + }, + { + "x": 3.0583953857421875, + "y": 0.65887451171875 + }, + { + "x": 1.677825927734375, + "y": -2.19183349609375 + }, + { + "x": 3.1269683837890625, + "y": -2.292236328125 + }, + { + "x": 4.80560302734375, + "y": -7.88140869140625 + }, + { + "x": 2.6053466796875, + "y": 3.34368896484375 + }, + { + "x": 1.090576171875, + "y": 3.24652099609375 + }, + { + "x": 0.1591339111328125, + "y": 1.807830810546875 + }, + { + "x": 3.3892059326171875, + "y": -3.079742431640625 + }, + { + "x": 2.7899169921875, + "y": -2.86627197265625 + }, + { + "x": 0.977630615234375, + "y": -3.233489990234375 + }, + { + "x": 2.6360626220703125, + "y": -1.26568603515625 + }, + { + "x": -2.47119140625, + "y": 1.59698486328125 + }, + { + "x": 0.43251800537109375, + "y": 5.18377685546875 + }, + { + "x": 1.0703506469726562, + "y": 2.496124267578125 + }, + { + "x": 2.200103759765625, + "y": -2.63262939453125 + }, + { + "x": 2.640228271484375, + "y": -4.979736328125 + }, + { + "x": -1.95361328125, + "y": -6.027130126953125 + }, + { + "x": -3.4536590576171875, + "y": 0.34710693359375 + }, + { + "x": -2.7145233154296875, + "y": 0.64093017578125 + }, + { + "x": -0.36660003662109375, + "y": 6.053466796875 + }, + { + "x": 2.7690277099609375, + "y": 1.516021728515625 + }, + { + "x": 1.4522933959960938, + "y": -2.045867919921875 + }, + { + "x": 1.1674423217773438, + "y": -6.124237060546875 + }, + { + "x": -1.6893386840820312, + "y": -5.03936767578125 + }, + { + "x": -6.7578277587890625, + "y": -7.4246826171875 + }, + { + "x": -6.865745544433594, + "y": -2.0084228515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.11864575355876025, + "y": -0.06835319563257751, + "z": 0.4721456828470361 + }, + "rotation": { + "quaternion": { + "W": 0.7466599154213465, + "X": 0.01726162802997238, + "Y": 0.015254954714145863, + "Z": 0.6648069593930346 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img43.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img43.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 106.33485412597656, + "y": 617.9019775390625 + }, + { + "x": 101.30768585205078, + "y": 565.651123046875 + }, + { + "x": 91.09632110595703, + "y": 507.99908447265625 + }, + { + "x": 85.63192749023438, + "y": 450.2707824707031 + }, + { + "x": 81.51549530029297, + "y": 389.26934814453125 + }, + { + "x": 76.2443618774414, + "y": 328.4091796875 + }, + { + "x": 75.08447265625, + "y": 267.31085205078125 + }, + { + "x": 159.0784149169922, + "y": 612.228759765625 + }, + { + "x": 153.083251953125, + "y": 556.0702514648438 + }, + { + "x": 148.05882263183594, + "y": 503.576171875 + }, + { + "x": 139.4399871826172, + "y": 445.2511901855469 + }, + { + "x": 136.29908752441406, + "y": 385.85296630859375 + }, + { + "x": 132.6920166015625, + "y": 324.18560791015625 + }, + { + "x": 130.1189422607422, + "y": 264.2413635253906 + }, + { + "x": 210.6964569091797, + "y": 608.226318359375 + }, + { + "x": 202.07810974121094, + "y": 550.4201049804688 + }, + { + "x": 201.04653930664062, + "y": 496.1206970214844 + }, + { + "x": 194.45703125, + "y": 438.9566650390625 + }, + { + "x": 190.08038330078125, + "y": 382.3162536621094 + }, + { + "x": 190.23764038085938, + "y": 320.8458557128906 + }, + { + "x": 183.65826416015625, + "y": 262.59912109375 + }, + { + "x": 268.0628662109375, + "y": 604.0625610351562 + }, + { + "x": 260.56793212890625, + "y": 545.8600463867188 + }, + { + "x": 256.7947998046875, + "y": 494.428466796875 + }, + { + "x": 250.92774963378906, + "y": 434.3834228515625 + }, + { + "x": 245.58969116210938, + "y": 374.58709716796875 + }, + { + "x": 243.86520385742188, + "y": 317.1620788574219 + }, + { + "x": 243.65008544921875, + "y": 257.003662109375 + }, + { + "x": 317.16717529296875, + "y": 593.5206909179688 + }, + { + "x": 314.0834655761719, + "y": 542.3085327148438 + }, + { + "x": 310.2445373535156, + "y": 485.8168640136719 + }, + { + "x": 306.2928466796875, + "y": 432.6251525878906 + }, + { + "x": 305.3023986816406, + "y": 367.6041564941406 + }, + { + "x": 301.6310729980469, + "y": 313.80181884765625 + }, + { + "x": 301.20721435546875, + "y": 251.1484832763672 + }, + { + "x": 372.3144226074219, + "y": 588.7067260742188 + }, + { + "x": 366.1651306152344, + "y": 534.347412109375 + }, + { + "x": 365.5771484375, + "y": 482.6539611816406 + }, + { + "x": 359.9731140136719, + "y": 427.3378601074219 + }, + { + "x": 359.134033203125, + "y": 367.626708984375 + }, + { + "x": 354.0953674316406, + "y": 310.6977844238281 + }, + { + "x": 358.3879089355469, + "y": 254.44740295410156 + }, + { + "x": 427.2791748046875, + "y": 575.78466796875 + }, + { + "x": 422.1202087402344, + "y": 532.6971435546875 + }, + { + "x": 414.39141845703125, + "y": 476.45465087890625 + }, + { + "x": 413.68603515625, + "y": 420.5172119140625 + }, + { + "x": 411.3957214355469, + "y": 363.8427734375 + }, + { + "x": 412.75537109375, + "y": 308.34259033203125 + }, + { + "x": 412.10565185546875, + "y": 247.18809509277344 + } + ], + "reprojectionErrors": [ + { + "x": -6.796424865722656, + "y": -3.93463134765625 + }, + { + "x": -5.85418701171875, + "y": -8.072265625 + }, + { + "x": 0.2651824951171875, + "y": -6.740478515625 + }, + { + "x": 1.630279541015625, + "y": -5.26739501953125 + }, + { + "x": 1.6399154663085938, + "y": -0.459381103515625 + }, + { + "x": 2.7965240478515625, + "y": 4.265838623046875 + }, + { + "x": -0.1660614013671875, + "y": 9.284515380859375 + }, + { + "x": -4.7990875244140625, + "y": -2.05865478515625 + }, + { + "x": -2.932098388671875, + "y": -2.44012451171875 + }, + { + "x": -2.0418701171875, + "y": -6.41748046875 + }, + { + "x": 2.4365386962890625, + "y": -4.49859619140625 + }, + { + "x": 1.4305419921875, + "y": -1.4444580078125 + }, + { + "x": 0.884033203125, + "y": 3.937530517578125 + }, + { + "x": -0.7033843994140625, + "y": 7.65191650390625 + }, + { + "x": -1.4146728515625, + "y": -1.8572998046875 + }, + { + "x": 3.0315399169921875, + "y": -0.74749755859375 + }, + { + "x": -0.1139678955078125, + "y": -3.07568359375 + }, + { + "x": 2.2932891845703125, + "y": -2.4736328125 + }, + { + "x": 2.4822845458984375, + "y": -2.332916259765625 + }, + { + "x": -1.868255615234375, + "y": 2.696746826171875 + }, + { + "x": 0.5119781494140625, + "y": 4.5584716796875 + }, + { + "x": -3.502685546875, + "y": -1.49932861328125 + }, + { + "x": -0.224578857421875, + "y": -0.15478515625 + }, + { + "x": -0.672119140625, + "y": -5.511962890625 + }, + { + "x": 0.9701690673828125, + "y": -2.1898193359375 + }, + { + "x": 2.079132080078125, + "y": 0.9461669921875 + }, + { + "x": -0.4300384521484375, + "y": 1.77008056640625 + }, + { + "x": -4.4533843994140625, + "y": 5.383331298828125 + }, + { + "x": 2.961944580078125, + "y": 5.231201171875 + }, + { + "x": 1.783416748046875, + "y": -0.581298828125 + }, + { + "x": 1.35736083984375, + "y": -1.044708251953125 + }, + { + "x": 1.041046142578125, + "y": -4.741943359375 + }, + { + "x": -2.23974609375, + "y": 3.45294189453125 + }, + { + "x": -2.843170166015625, + "y": 0.48870849609375 + }, + { + "x": -6.697784423828125, + "y": 6.4316558837890625 + }, + { + "x": 3.689178466796875, + "y": 6.227294921875 + }, + { + "x": 5.530059814453125, + "y": 3.39007568359375 + }, + { + "x": 1.8079833984375, + "y": -2.043121337890625 + }, + { + "x": 3.10003662109375, + "y": -3.78717041015625 + }, + { + "x": -0.375030517578125, + "y": -1.07305908203125 + }, + { + "x": 0.34710693359375, + "y": -1.081390380859375 + }, + { + "x": -8.264617919921875, + "y": -1.7118072509765625 + }, + { + "x": 4.91973876953125, + "y": 15.3240966796875 + }, + { + "x": 5.723297119140625, + "y": 1.03790283203125 + }, + { + "x": 9.09613037109375, + "y": -0.023101806640625 + }, + { + "x": 5.444793701171875, + "y": -1.322357177734375 + }, + { + "x": 3.3773193359375, + "y": -1.8211669921875 + }, + { + "x": -2.341400146484375, + "y": -3.434173583984375 + }, + { + "x": -6.052276611328125, + "y": 0.66387939453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.25466749676494793, + "y": 0.10983096194381303, + "z": 0.4784545706962318 + }, + "rotation": { + "quaternion": { + "W": 0.6784408016818753, + "X": -0.02245695423958301, + "Y": 0.016952110277019122, + "Z": -0.7341160601544496 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img44.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img44.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 59.676353454589844, + "y": 272.21502685546875 + }, + { + "x": 116.58785247802734, + "y": 271.15447998046875 + }, + { + "x": 172.50328063964844, + "y": 271.5703430175781 + }, + { + "x": 234.4118194580078, + "y": 269.1594543457031 + }, + { + "x": 293.1291198730469, + "y": 264.558349609375 + }, + { + "x": 351.9195556640625, + "y": 270.75994873046875 + }, + { + "x": 406.7176818847656, + "y": 265.35028076171875 + }, + { + "x": 59.36439895629883, + "y": 335.4723205566406 + }, + { + "x": 117.22442626953125, + "y": 333.2735595703125 + }, + { + "x": 176.04954528808594, + "y": 332.22735595703125 + }, + { + "x": 232.26473999023438, + "y": 330.24884033203125 + }, + { + "x": 291.1784973144531, + "y": 329.5398864746094 + }, + { + "x": 347.0633544921875, + "y": 327.5269470214844 + }, + { + "x": 405.777099609375, + "y": 328.2667236328125 + }, + { + "x": 62.49638748168945, + "y": 398.4294128417969 + }, + { + "x": 118.7548599243164, + "y": 397.3406066894531 + }, + { + "x": 174.14990234375, + "y": 395.8576354980469 + }, + { + "x": 231.656982421875, + "y": 390.35455322265625 + }, + { + "x": 292.5306091308594, + "y": 385.7413330078125 + }, + { + "x": 348.40692138671875, + "y": 387.4957275390625 + }, + { + "x": 402.35870361328125, + "y": 385.39447021484375 + }, + { + "x": 65.37879943847656, + "y": 461.511962890625 + }, + { + "x": 120.2452163696289, + "y": 458.5947265625 + }, + { + "x": 176.8313751220703, + "y": 454.2862854003906 + }, + { + "x": 235.52061462402344, + "y": 451.50799560546875 + }, + { + "x": 291.4989929199219, + "y": 451.6942443847656 + }, + { + "x": 347.208984375, + "y": 448.4027099609375 + }, + { + "x": 402.90338134765625, + "y": 443.611328125 + }, + { + "x": 69.5582046508789, + "y": 520.2692260742188 + }, + { + "x": 127.22232055664062, + "y": 518.7163696289062 + }, + { + "x": 181.05406188964844, + "y": 514.0662231445312 + }, + { + "x": 239.3096160888672, + "y": 513.704833984375 + }, + { + "x": 293.1688537597656, + "y": 507.2564392089844 + }, + { + "x": 351.264892578125, + "y": 505.70745849609375 + }, + { + "x": 401.6230163574219, + "y": 500.8701171875 + }, + { + "x": 78.45909118652344, + "y": 580.8971557617188 + }, + { + "x": 131.6029052734375, + "y": 572.1290893554688 + }, + { + "x": 181.66339111328125, + "y": 569.2073974609375 + }, + { + "x": 242.02455139160156, + "y": 565.8743896484375 + }, + { + "x": 296.4107360839844, + "y": 565.2444458007812 + }, + { + "x": 348.5748291015625, + "y": 559.910888671875 + }, + { + "x": 407.359130859375, + "y": 558.5624389648438 + }, + { + "x": 81.43330383300781, + "y": 633.8262939453125 + }, + { + "x": 135.17221069335938, + "y": 629.6825561523438 + }, + { + "x": 189.20669555664062, + "y": 627.6001586914062 + }, + { + "x": 247.28353881835938, + "y": 625.6859741210938 + }, + { + "x": 298.41680908203125, + "y": 616.7099609375 + }, + { + "x": 351.993896484375, + "y": 612.9575805664062 + }, + { + "x": 410.1547546386719, + "y": 603.06103515625 + } + ], + "reprojectionErrors": [ + { + "x": -0.009899139404296875, + "y": 10.210693359375 + }, + { + "x": -0.896270751953125, + "y": 8.556182861328125 + }, + { + "x": -0.46368408203125, + "y": 5.40728759765625 + }, + { + "x": -5.6951141357421875, + "y": 5.066925048828125 + }, + { + "x": -7.39996337890625, + "y": 6.898162841796875 + }, + { + "x": -8.83612060546875, + "y": -2.092193603515625 + }, + { + "x": -5.931640625, + "y": 0.509429931640625 + }, + { + "x": 2.852947235107422, + "y": 4.77215576171875 + }, + { + "x": 1.016937255859375, + "y": 4.427825927734375 + }, + { + "x": -1.461273193359375, + "y": 2.9151611328125 + }, + { + "x": -1.0005035400390625, + "y": 2.318756103515625 + }, + { + "x": -2.902923583984375, + "y": 0.4364013671875 + }, + { + "x": -1.434661865234375, + "y": -0.158660888671875 + }, + { + "x": -2.44696044921875, + "y": -3.523406982421875 + }, + { + "x": 2.2217140197753906, + "y": -0.381866455078125 + }, + { + "x": 1.9902114868164062, + "y": -1.664398193359375 + }, + { + "x": 2.9450531005859375, + "y": -2.566436767578125 + }, + { + "x": 2.1169891357421875, + "y": 0.537750244140625 + }, + { + "x": -1.74224853515625, + "y": 2.7379150390625 + }, + { + "x": -0.262298583984375, + "y": -1.4439697265625 + }, + { + "x": 3.490509033203125, + "y": -1.784942626953125 + }, + { + "x": 1.7904891967773438, + "y": -5.66400146484375 + }, + { + "x": 2.9580535888671875, + "y": -4.94659423828125 + }, + { + "x": 2.7288818359375, + "y": -2.8494873046875 + }, + { + "x": 0.725830078125, + "y": -2.29425048828125 + }, + { + "x": 1.769134521484375, + "y": -4.71551513671875 + }, + { + "x": 3.422760009765625, + "y": -3.67120361328125 + }, + { + "x": 5.4404296875, + "y": -1.139495849609375 + }, + { + "x": 0.0132598876953125, + "y": -6.61053466796875 + }, + { + "x": -1.6057968139648438, + "y": -7.08612060546875 + }, + { + "x": 0.9306640625, + "y": -4.4737548828125 + }, + { + "x": -0.627349853515625, + "y": -6.15972900390625 + }, + { + "x": 2.54656982421875, + "y": -1.7684326171875 + }, + { + "x": 1.825775146484375, + "y": -2.286529541015625 + }, + { + "x": 9.191497802734375, + "y": 0.47357177734375 + }, + { + "x": -6.533927917480469, + "y": -9.4044189453125 + }, + { + "x": -3.6175460815429688, + "y": -2.49346923828125 + }, + { + "x": 2.7054901123046875, + "y": -1.43603515625 + }, + { + "x": -0.9426116943359375, + "y": 0.0252685546875 + }, + { + "x": 1.7200927734375, + "y": -1.2239990234375 + }, + { + "x": 6.9471435546875, + "y": 2.22259521484375 + }, + { + "x": 5.902740478515625, + "y": 1.6761474609375 + }, + { + "x": -7.202423095703125, + "y": -4.4632568359375 + }, + { + "x": -4.861907958984375, + "y": -2.00518798828125 + }, + { + "x": -2.4934234619140625, + "y": -1.61358642578125 + }, + { + "x": -3.8375244140625, + "y": -1.3953857421875 + }, + { + "x": 2.097991943359375, + "y": 5.87933349609375 + }, + { + "x": 5.9322509765625, + "y": 7.92486572265625 + }, + { + "x": 5.53173828125, + "y": 16.10894775390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.26598487423455897, + "y": -0.03837431089541356, + "z": 0.4667912552206656 + }, + "rotation": { + "quaternion": { + "W": 0.9993910860437739, + "X": -5.824979917293113E-5, + "Y": 0.027739197347395352, + "Z": -0.021165790174935157 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img45.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img45.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 63.25421142578125, + "y": 270.7091979980469 + }, + { + "x": 120.3185806274414, + "y": 269.75396728515625 + }, + { + "x": 176.1949920654297, + "y": 270.1815185546875 + }, + { + "x": 238.254150390625, + "y": 267.14471435546875 + }, + { + "x": 297.574951171875, + "y": 262.6850280761719 + }, + { + "x": 356.54925537109375, + "y": 268.4413757324219 + }, + { + "x": 412.2772216796875, + "y": 262.73046875 + }, + { + "x": 62.44987869262695, + "y": 334.334716796875 + }, + { + "x": 121.14881134033203, + "y": 332.06915283203125 + }, + { + "x": 181.13229370117188, + "y": 331.3132019042969 + }, + { + "x": 236.34996032714844, + "y": 328.9631652832031 + }, + { + "x": 296.1232604980469, + "y": 327.8143005371094 + }, + { + "x": 350.12890625, + "y": 326.7804260253906 + }, + { + "x": 411.61962890625, + "y": 326.9718322753906 + }, + { + "x": 66.46821594238281, + "y": 397.4620361328125 + }, + { + "x": 122.516845703125, + "y": 396.2781066894531 + }, + { + "x": 178.17515563964844, + "y": 395.098388671875 + }, + { + "x": 236.072021484375, + "y": 388.979248046875 + }, + { + "x": 298.2267150878906, + "y": 383.47821044921875 + }, + { + "x": 353.7699279785156, + "y": 385.9851989746094 + }, + { + "x": 407.46441650390625, + "y": 383.6855163574219 + }, + { + "x": 68.68838500976562, + "y": 460.8300476074219 + }, + { + "x": 124.31148529052734, + "y": 457.7816162109375 + }, + { + "x": 181.2597198486328, + "y": 453.4863586425781 + }, + { + "x": 240.09051513671875, + "y": 450.6025085449219 + }, + { + "x": 296.9990234375, + "y": 451.1849060058594 + }, + { + "x": 352.6048278808594, + "y": 447.22479248046875 + }, + { + "x": 408.1474914550781, + "y": 442.3647766113281 + }, + { + "x": 73.80683135986328, + "y": 519.6678466796875 + }, + { + "x": 131.39703369140625, + "y": 518.3858642578125 + }, + { + "x": 186.0483856201172, + "y": 513.276611328125 + }, + { + "x": 244.27565002441406, + "y": 513.0869140625 + }, + { + "x": 299.2721862792969, + "y": 506.2035217285156 + }, + { + "x": 356.5267639160156, + "y": 504.7448425292969 + }, + { + "x": 407.0957336425781, + "y": 499.7306823730469 + }, + { + "x": 82.48210906982422, + "y": 581.3258056640625 + }, + { + "x": 136.4447021484375, + "y": 571.4993286132812 + }, + { + "x": 186.2081756591797, + "y": 568.82373046875 + }, + { + "x": 247.17930603027344, + "y": 565.2368774414062 + }, + { + "x": 302.6478576660156, + "y": 565.047607421875 + }, + { + "x": 354.3289794921875, + "y": 558.8058471679688 + }, + { + "x": 413.50457763671875, + "y": 558.661376953125 + }, + { + "x": 84.55174255371094, + "y": 635.7423095703125 + }, + { + "x": 140.2657012939453, + "y": 630.5830078125 + }, + { + "x": 193.75828552246094, + "y": 627.7023315429688 + }, + { + "x": 252.25753784179688, + "y": 625.6473388671875 + }, + { + "x": 304.6063232421875, + "y": 614.762939453125 + }, + { + "x": 359.240966796875, + "y": 612.971435546875 + }, + { + "x": 417.5179138183594, + "y": 601.81689453125 + } + ], + "reprojectionErrors": [ + { + "x": -0.5936813354492188, + "y": 10.4432373046875 + }, + { + "x": -1.202972412109375, + "y": 8.5335693359375 + }, + { + "x": -0.3199462890625, + "y": 5.223358154296875 + }, + { + "x": -5.3094329833984375, + "y": 5.35943603515625 + }, + { + "x": -7.24432373046875, + "y": 6.899993896484375 + }, + { + "x": -8.5103759765625, + "y": -1.79425048828125 + }, + { + "x": -6.201568603515625, + "y": 0.959716796875 + }, + { + "x": 2.975444793701172, + "y": 4.94677734375 + }, + { + "x": 0.7259521484375, + "y": 4.509765625 + }, + { + "x": -2.5037841796875, + "y": 2.54742431640625 + }, + { + "x": -0.6575164794921875, + "y": 2.16314697265625 + }, + { + "x": -3.05072021484375, + "y": 0.5614013671875 + }, + { + "x": 0.646026611328125, + "y": -1.17193603515625 + }, + { + "x": -2.813812255859375, + "y": -4.1474609375 + }, + { + "x": 1.671539306640625, + "y": -0.07659912109375 + }, + { + "x": 2.0708389282226562, + "y": -1.433258056640625 + }, + { + "x": 3.1647491455078125, + "y": -2.80780029296875 + }, + { + "x": 2.330291748046875, + "y": 0.74310302734375 + }, + { + "x": -2.445831298828125, + "y": 3.6617431640625 + }, + { + "x": -0.288177490234375, + "y": -1.442169189453125 + }, + { + "x": 4.046630859375, + "y": -1.754180908203125 + }, + { + "x": 2.1160736083984375, + "y": -5.35260009765625 + }, + { + "x": 2.943511962890625, + "y": -4.68304443359375 + }, + { + "x": 2.750152587890625, + "y": -2.778289794921875 + }, + { + "x": 0.9844512939453125, + "y": -2.296844482421875 + }, + { + "x": 1.457244873046875, + "y": -5.29376220703125 + }, + { + "x": 3.5550537109375, + "y": -3.76055908203125 + }, + { + "x": 6.044525146484375, + "y": -1.34002685546875 + }, + { + "x": -0.38677215576171875, + "y": -6.09722900390625 + }, + { + "x": -1.51971435546875, + "y": -7.0325927734375 + }, + { + "x": 0.5906219482421875, + "y": -4.150299072265625 + }, + { + "x": -0.56463623046875, + "y": -6.1973876953125 + }, + { + "x": 1.827117919921875, + "y": -1.560791015625 + }, + { + "x": 2.28326416015625, + "y": -2.35919189453125 + }, + { + "x": 9.753570556640625, + "y": 0.387420654296875 + }, + { + "x": -6.4949798583984375, + "y": -9.647705078125 + }, + { + "x": -3.98944091796875, + "y": -1.87713623046875 + }, + { + "x": 3.0197601318359375, + "y": -1.26507568359375 + }, + { + "x": -0.8682403564453125, + "y": 0.25048828125 + }, + { + "x": 1.062774658203125, + "y": -1.63946533203125 + }, + { + "x": 7.103759765625, + "y": 2.514892578125 + }, + { + "x": 5.97900390625, + "y": 0.563720703125 + }, + { + "x": -6.0454864501953125, + "y": -5.9293212890625 + }, + { + "x": -5.2763214111328125, + "y": -2.66461181640625 + }, + { + "x": -1.981048583984375, + "y": -1.68402099609375 + }, + { + "x": -3.3818206787109375, + "y": -1.534912109375 + }, + { + "x": 1.684478759765625, + "y": 7.43780517578125 + }, + { + "x": 4.78765869140625, + "y": 7.31158447265625 + }, + { + "x": 4.57745361328125, + "y": 16.542236328125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2632360113635425, + "y": -0.03872244254428629, + "z": 0.46426418526429736 + }, + "rotation": { + "quaternion": { + "W": 0.9994123746253758, + "X": 6.686333864508305E-4, + "Y": 0.02587838709483932, + "Z": -0.022467030431985918 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img46.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img46.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 876.3975830078125, + "y": 215.07998657226562 + }, + { + "x": 877.9874877929688, + "y": 272.2264709472656 + }, + { + "x": 877.2802734375, + "y": 328.231201171875 + }, + { + "x": 876.2659912109375, + "y": 384.5606384277344 + }, + { + "x": 877.6411743164062, + "y": 434.29254150390625 + }, + { + "x": 874.0899047851562, + "y": 493.5478210449219 + }, + { + "x": 868.81201171875, + "y": 547.9644775390625 + }, + { + "x": 820.9668579101562, + "y": 213.6376495361328 + }, + { + "x": 819.7206420898438, + "y": 275.0963134765625 + }, + { + "x": 821.9404296875, + "y": 331.4853210449219 + }, + { + "x": 823.0859985351562, + "y": 385.5562438964844 + }, + { + "x": 820.7443237304688, + "y": 442.7139892578125 + }, + { + "x": 819.2181396484375, + "y": 496.7611999511719 + }, + { + "x": 819.2481079101562, + "y": 547.572509765625 + }, + { + "x": 761.8591918945312, + "y": 220.000732421875 + }, + { + "x": 764.7357177734375, + "y": 275.546630859375 + }, + { + "x": 765.7892456054688, + "y": 335.87799072265625 + }, + { + "x": 764.744873046875, + "y": 388.8096618652344 + }, + { + "x": 766.6091918945312, + "y": 447.8883361816406 + }, + { + "x": 770.0352172851562, + "y": 500.9835510253906 + }, + { + "x": 764.6859130859375, + "y": 552.520751953125 + }, + { + "x": 704.6857299804688, + "y": 218.5298614501953 + }, + { + "x": 704.5676879882812, + "y": 280.44970703125 + }, + { + "x": 706.7997436523438, + "y": 338.01470947265625 + }, + { + "x": 709.0115356445312, + "y": 395.19500732421875 + }, + { + "x": 710.1622314453125, + "y": 450.0161437988281 + }, + { + "x": 711.3607177734375, + "y": 501.51239013671875 + }, + { + "x": 711.3038330078125, + "y": 557.1129150390625 + }, + { + "x": 642.0228271484375, + "y": 222.37171936035156 + }, + { + "x": 647.5106201171875, + "y": 280.4701843261719 + }, + { + "x": 650.2892456054688, + "y": 334.226806640625 + }, + { + "x": 649.7937622070312, + "y": 395.4679870605469 + }, + { + "x": 650.1311645507812, + "y": 455.841552734375 + }, + { + "x": 655.2740478515625, + "y": 509.6505432128906 + }, + { + "x": 656.1383666992188, + "y": 558.64013671875 + }, + { + "x": 582.9873657226562, + "y": 224.66455078125 + }, + { + "x": 585.108642578125, + "y": 284.374755859375 + }, + { + "x": 587.934814453125, + "y": 343.2329406738281 + }, + { + "x": 591.739013671875, + "y": 398.39398193359375 + }, + { + "x": 596.5506591796875, + "y": 455.7732849121094 + }, + { + "x": 596.5505981445312, + "y": 512.96044921875 + }, + { + "x": 599.400390625, + "y": 563.1526489257812 + }, + { + "x": 521.3807373046875, + "y": 227.78990173339844 + }, + { + "x": 524.86962890625, + "y": 287.90985107421875 + }, + { + "x": 529.07275390625, + "y": 344.8031005859375 + }, + { + "x": 531.3902587890625, + "y": 403.5819396972656 + }, + { + "x": 535.7257690429688, + "y": 459.5323791503906 + }, + { + "x": 539.7567138671875, + "y": 513.675537109375 + }, + { + "x": 543.078857421875, + "y": 562.7001953125 + } + ], + "reprojectionErrors": [ + { + "x": 2.748046875, + "y": -2.4303741455078125 + }, + { + "x": 0.24407958984375, + "y": -0.80401611328125 + }, + { + "x": 0.06561279296875, + "y": 0.5269775390625 + }, + { + "x": 0.2215576171875, + "y": 0.151458740234375 + }, + { + "x": -1.9857177734375, + "y": 5.044097900390625 + }, + { + "x": 0.75885009765625, + "y": -0.866058349609375 + }, + { + "x": 5.25439453125, + "y": -3.16961669921875 + }, + { + "x": 0.2154541015625, + "y": 1.2642364501953125 + }, + { + "x": 1.2659912109375, + "y": -1.168975830078125 + }, + { + "x": -1.1396484375, + "y": 0.01739501953125 + }, + { + "x": -2.46173095703125, + "y": 2.1278076171875 + }, + { + "x": -0.2874755859375, + "y": -0.189483642578125 + }, + { + "x": 1.08001708984375, + "y": -0.686492919921875 + }, + { + "x": 0.8997802734375, + "y": 0.81005859375 + }, + { + "x": 0.81201171875, + "y": -2.8179473876953125 + }, + { + "x": -1.52801513671875, + "y": 0.920654296875 + }, + { + "x": -2.05438232421875, + "y": -1.589630126953125 + }, + { + "x": -0.4918212890625, + "y": 1.8931884765625 + }, + { + "x": -1.84661865234375, + "y": -2.12371826171875 + }, + { + "x": -4.77142333984375, + "y": -1.458648681640625 + }, + { + "x": 1.07110595703125, + "y": -0.4884033203125 + }, + { + "x": -1.0948486328125, + "y": 0.9633941650390625 + }, + { + "x": 0.306396484375, + "y": -1.40631103515625 + }, + { + "x": -0.67156982421875, + "y": -0.8983154296875 + }, + { + "x": -1.6572265625, + "y": -1.4251708984375 + }, + { + "x": -1.60858154296875, + "y": -0.957763671875 + }, + { + "x": -1.63360595703125, + "y": 1.521514892578125 + }, + { + "x": -0.4281005859375, + "y": -1.3671875 + }, + { + "x": 1.89654541015625, + "y": -0.5374603271484375 + }, + { + "x": -1.54638671875, + "y": 1.186614990234375 + }, + { + "x": -2.3294677734375, + "y": 5.76123046875 + }, + { + "x": 0.1141357421875, + "y": 1.418426513671875 + }, + { + "x": 1.67926025390625, + "y": -3.43426513671875 + }, + { + "x": -1.60498046875, + "y": -3.047210693359375 + }, + { + "x": -0.65277099609375, + "y": 0.88433837890625 + }, + { + "x": 0.6463623046875, + "y": -0.457733154296875 + }, + { + "x": 1.3475341796875, + "y": -0.06610107421875 + }, + { + "x": 1.27349853515625, + "y": -0.328338623046875 + }, + { + "x": 0.1539306640625, + "y": 1.65997314453125 + }, + { + "x": -2.0379638671875, + "y": 0.03961181640625 + }, + { + "x": 0.51947021484375, + "y": -2.72564697265625 + }, + { + "x": 0.16705322265625, + "y": 0.2176513671875 + }, + { + "x": 1.32977294921875, + "y": -1.1779327392578125 + }, + { + "x": 1.45733642578125, + "y": -0.909698486328125 + }, + { + "x": 0.77880859375, + "y": 1.064361572265625 + }, + { + "x": 1.89776611328125, + "y": -0.307952880859375 + }, + { + "x": 0.91387939453125, + "y": -0.255584716796875 + }, + { + "x": 0.15313720703125, + "y": 0.25445556640625 + }, + { + "x": 0.0228271484375, + "y": 4.58477783203125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.09225365258229293, + "y": -0.06756848726296331, + "z": 0.45709334588167594 + }, + "rotation": { + "quaternion": { + "W": 0.7162088526565655, + "X": 0.04556452573100576, + "Y": -0.11343927423917308, + "Z": 0.6870955424330478 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img47.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img47.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 532.1683349609375, + "y": 162.76734924316406 + }, + { + "x": 591.5545654296875, + "y": 160.116943359375 + }, + { + "x": 649.3292236328125, + "y": 159.22874450683594 + }, + { + "x": 712.0641479492188, + "y": 155.3115997314453 + }, + { + "x": 769.4542236328125, + "y": 150.7343292236328 + }, + { + "x": 827.5582885742188, + "y": 155.14895629882812 + }, + { + "x": 880.2000122070312, + "y": 149.86538696289062 + }, + { + "x": 535.18212890625, + "y": 223.1775665283203 + }, + { + "x": 595.1429443359375, + "y": 218.61331176757812 + }, + { + "x": 657.0156860351562, + "y": 216.27017211914062 + }, + { + "x": 713.4083862304688, + "y": 212.61378479003906 + }, + { + "x": 771.6500244140625, + "y": 211.1547393798828 + }, + { + "x": 823.9839477539062, + "y": 210.2166290283203 + }, + { + "x": 882.8514404296875, + "y": 209.40615844726562 + }, + { + "x": 545.1869506835938, + "y": 277.4175109863281 + }, + { + "x": 599.9056396484375, + "y": 279.4624938964844 + }, + { + "x": 655.4400634765625, + "y": 277.0096740722656 + }, + { + "x": 714.2100830078125, + "y": 269.4271545410156 + }, + { + "x": 775.0269775390625, + "y": 264.3903503417969 + }, + { + "x": 829.8903198242188, + "y": 266.0693054199219 + }, + { + "x": 880.7364501953125, + "y": 263.862548828125 + }, + { + "x": 545.513427734375, + "y": 343.4565734863281 + }, + { + "x": 601.614013671875, + "y": 336.1392822265625 + }, + { + "x": 659.9739990234375, + "y": 331.4010925292969 + }, + { + "x": 718.6511840820312, + "y": 328.30450439453125 + }, + { + "x": 775.5640258789062, + "y": 328.2560119628906 + }, + { + "x": 827.7572631835938, + "y": 326.0943908691406 + }, + { + "x": 883.2494506835938, + "y": 319.9815673828125 + }, + { + "x": 546.653076171875, + "y": 396.5217590332031 + }, + { + "x": 605.7761840820312, + "y": 393.2861633300781 + }, + { + "x": 663.5336303710938, + "y": 388.0747375488281 + }, + { + "x": 722.0867919921875, + "y": 387.4118957519531 + }, + { + "x": 776.2062377929688, + "y": 380.8272705078125 + }, + { + "x": 833.339599609375, + "y": 380.1498718261719 + }, + { + "x": 879.9924926757812, + "y": 375.7272644042969 + }, + { + "x": 553.4185180664062, + "y": 456.3540954589844 + }, + { + "x": 608.8076171875, + "y": 447.16357421875 + }, + { + "x": 664.0615844726562, + "y": 443.55682373046875 + }, + { + "x": 720.575927734375, + "y": 441.4979248046875 + }, + { + "x": 778.2479248046875, + "y": 437.33319091796875 + }, + { + "x": 831.5001220703125, + "y": 428.9963073730469 + }, + { + "x": 883.371337890625, + "y": 428.3836975097656 + }, + { + "x": 551.7577514648438, + "y": 508.3638000488281 + }, + { + "x": 613.2254028320312, + "y": 504.307861328125 + }, + { + "x": 667.7885131835938, + "y": 497.62249755859375 + }, + { + "x": 725.7992553710938, + "y": 497.54437255859375 + }, + { + "x": 774.4317016601562, + "y": 489.7150573730469 + }, + { + "x": 828.68994140625, + "y": 482.57135009765625 + }, + { + "x": 888.661865234375, + "y": 472.545654296875 + } + ], + "reprojectionErrors": [ + { + "x": 1.3509521484375, + "y": -0.5055084228515625 + }, + { + "x": 2.0191650390625, + "y": -0.4402008056640625 + }, + { + "x": 3.47430419921875, + "y": -2.101837158203125 + }, + { + "x": -0.8350830078125, + "y": -0.7001190185546875 + }, + { + "x": -0.58428955078125, + "y": 1.395294189453125 + }, + { + "x": -1.81317138671875, + "y": -5.4684295654296875 + }, + { + "x": 1.67303466796875, + "y": -2.6020050048828125 + }, + { + "x": 2.2935791015625, + "y": -0.254058837890625 + }, + { + "x": 1.7235107421875, + "y": 1.3363037109375 + }, + { + "x": -1.56536865234375, + "y": 0.7469024658203125 + }, + { + "x": -0.16131591796875, + "y": 1.511077880859375 + }, + { + "x": -1.374267578125, + "y": 0.1172943115234375 + }, + { + "x": 2.57086181640625, + "y": -1.7590179443359375 + }, + { + "x": -0.7493896484375, + "y": -3.7254486083984375 + }, + { + "x": -3.8367919921875, + "y": 4.89447021484375 + }, + { + "x": 0.1903076171875, + "y": -0.496612548828125 + }, + { + "x": 2.61199951171875, + "y": -1.342864990234375 + }, + { + "x": 1.0274658203125, + "y": 2.986480712890625 + }, + { + "x": -3.3560791015625, + "y": 4.81494140625 + }, + { + "x": -2.520263671875, + "y": -0.028594970703125 + }, + { + "x": 1.6158447265625, + "y": -0.943695068359375 + }, + { + "x": -0.367431640625, + "y": -2.976470947265625 + }, + { + "x": 1.6510009765625, + "y": 0.6380615234375 + }, + { + "x": 0.63671875, + "y": 1.72589111328125 + }, + { + "x": -1.44940185546875, + "y": 1.223297119140625 + }, + { + "x": -2.508056640625, + "y": -2.2774658203125 + }, + { + "x": 0.43359375, + "y": -3.616302490234375 + }, + { + "x": -0.626220703125, + "y": -0.956298828125 + }, + { + "x": 2.21337890625, + "y": 0.95611572265625 + }, + { + "x": 0.599853515625, + "y": 0.147064208984375 + }, + { + "x": -0.40545654296875, + "y": 1.371246337890625 + }, + { + "x": -2.9459228515625, + "y": -1.89703369140625 + }, + { + "x": -1.774658203125, + "y": 0.81121826171875 + }, + { + "x": -4.32232666015625, + "y": -2.334228515625 + }, + { + "x": 2.92181396484375, + "y": -1.68218994140625 + }, + { + "x": -0.90386962890625, + "y": -3.00115966796875 + }, + { + "x": 0.6239013671875, + "y": 1.816680908203125 + }, + { + "x": 1.5445556640625, + "y": 1.112945556640625 + }, + { + "x": 0.48016357421875, + "y": -1.07794189453125 + }, + { + "x": -2.4495849609375, + "y": -1.103668212890625 + }, + { + "x": -1.65081787109375, + "y": 3.100738525390625 + }, + { + "x": -0.1463623046875, + "y": -0.36248779296875 + }, + { + "x": 4.335693359375, + "y": -0.213348388671875 + }, + { + "x": -0.791748046875, + "y": -0.845001220703125 + }, + { + "x": 0.2578125, + "y": 1.21942138671875 + }, + { + "x": -2.85076904296875, + "y": -3.25830078125 + }, + { + "x": 2.7249755859375, + "y": 0.07879638671875 + }, + { + "x": 1.99700927734375, + "y": 2.792449951171875 + }, + { + "x": -5.10711669921875, + "y": 8.4488525390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.05543689922949652, + "y": -0.0875357185048586, + "z": 0.4484325044524634 + }, + "rotation": { + "quaternion": { + "W": 0.9932985082696213, + "X": 0.09204914364619379, + "Y": -0.06411324682747212, + "Z": -0.027830203099999166 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img48.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img48.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 890.0477294921875, + "y": 288.0325622558594 + }, + { + "x": 889.9004516601562, + "y": 345.6119689941406 + }, + { + "x": 886.649658203125, + "y": 398.5050964355469 + }, + { + "x": 885.3961791992188, + "y": 450.29840087890625 + }, + { + "x": 883.5679321289062, + "y": 500.8537902832031 + }, + { + "x": 885.2692260742188, + "y": 552.9710083007812 + }, + { + "x": 881.0344848632812, + "y": 592.7579345703125 + }, + { + "x": 840.2152099609375, + "y": 295.30316162109375 + }, + { + "x": 837.7189331054688, + "y": 348.0910949707031 + }, + { + "x": 838.37646484375, + "y": 402.819091796875 + }, + { + "x": 836.4151000976562, + "y": 457.779541015625 + }, + { + "x": 838.3859252929688, + "y": 509.701416015625 + }, + { + "x": 832.74072265625, + "y": 556.7515258789062 + }, + { + "x": 831.4470825195312, + "y": 603.2970581054688 + }, + { + "x": 785.5368041992188, + "y": 293.0929260253906 + }, + { + "x": 785.3062744140625, + "y": 352.79949951171875 + }, + { + "x": 786.3594970703125, + "y": 404.9470520019531 + }, + { + "x": 788.07470703125, + "y": 467.3396911621094 + }, + { + "x": 786.3927001953125, + "y": 512.888916015625 + }, + { + "x": 785.7392578125, + "y": 566.6621704101562 + }, + { + "x": 782.0772705078125, + "y": 611.1135864257812 + }, + { + "x": 728.7158203125, + "y": 299.8460998535156 + }, + { + "x": 730.2877197265625, + "y": 355.38873291015625 + }, + { + "x": 728.82080078125, + "y": 411.5379333496094 + }, + { + "x": 733.5703125, + "y": 466.1067199707031 + }, + { + "x": 736.01611328125, + "y": 525.4503784179688 + }, + { + "x": 732.4044799804688, + "y": 570.9002685546875 + }, + { + "x": 733.814453125, + "y": 622.1652221679688 + }, + { + "x": 668.5650024414062, + "y": 305.3504638671875 + }, + { + "x": 671.3658447265625, + "y": 360.5757141113281 + }, + { + "x": 672.3414306640625, + "y": 422.13275146484375 + }, + { + "x": 671.0728149414062, + "y": 471.1966857910156 + }, + { + "x": 674.3909912109375, + "y": 530.0782470703125 + }, + { + "x": 676.5880126953125, + "y": 576.984130859375 + }, + { + "x": 679.12060546875, + "y": 627.2601318359375 + }, + { + "x": 611.6157836914062, + "y": 308.51373291015625 + }, + { + "x": 616.193603515625, + "y": 364.6687316894531 + }, + { + "x": 620.4007568359375, + "y": 427.9234619140625 + }, + { + "x": 619.969970703125, + "y": 479.8189697265625 + }, + { + "x": 624.5029907226562, + "y": 535.9508056640625 + }, + { + "x": 625.2989501953125, + "y": 582.3329467773438 + }, + { + "x": 627.8048095703125, + "y": 636.1152954101562 + }, + { + "x": 549.678466796875, + "y": 312.40740966796875 + }, + { + "x": 552.3729858398438, + "y": 370.52069091796875 + }, + { + "x": 555.032958984375, + "y": 432.3138122558594 + }, + { + "x": 558.4675903320312, + "y": 486.2672424316406 + }, + { + "x": 561.547607421875, + "y": 542.22265625 + }, + { + "x": 568.0095825195312, + "y": 593.0405883789062 + }, + { + "x": 567.0729370117188, + "y": 643.7583618164062 + } + ], + "reprojectionErrors": [ + { + "x": 2.8941650390625, + "y": -0.328369140625 + }, + { + "x": 1.18951416015625, + "y": -2.386871337890625 + }, + { + "x": 2.6492919921875, + "y": -1.322906494140625 + }, + { + "x": 2.1700439453125, + "y": -0.65484619140625 + }, + { + "x": 2.3214111328125, + "y": -0.180419921875 + }, + { + "x": -1.00335693359375, + "y": -2.6387939453125 + }, + { + "x": 1.6591796875, + "y": 5.91937255859375 + }, + { + "x": -0.80853271484375, + "y": -3.547119140625 + }, + { + "x": 0.59051513671875, + "y": -0.2200927734375 + }, + { + "x": -1.1251220703125, + "y": -0.431976318359375 + }, + { + "x": -0.1844482421875, + "y": -2.404754638671875 + }, + { + "x": -3.14013671875, + "y": -2.8011474609375 + }, + { + "x": 1.55450439453125, + "y": 0.27459716796875 + }, + { + "x": 1.93048095703125, + "y": 2.51434326171875 + }, + { + "x": -0.930419921875, + "y": 2.828216552734375 + }, + { + "x": -1.0059814453125, + "y": -0.15289306640625 + }, + { + "x": -2.3494873046875, + "y": 2.78973388671875 + }, + { + "x": -4.33990478515625, + "y": -6.075164794921875 + }, + { + "x": -2.918701171875, + "y": 0.40936279296875 + }, + { + "x": -2.51226806640625, + "y": -2.759521484375 + }, + { + "x": 0.916015625, + "y": 2.02496337890625 + }, + { + "x": -0.23345947265625, + "y": 0.358489990234375 + }, + { + "x": -1.2813720703125, + "y": 2.168914794921875 + }, + { + "x": 0.70025634765625, + "y": 1.699615478515625 + }, + { + "x": -3.54351806640625, + "y": 1.212890625 + }, + { + "x": -5.49200439453125, + "y": -5.57574462890625 + }, + { + "x": -1.3912353515625, + "y": 0.06915283203125 + }, + { + "x": -2.31976318359375, + "y": -1.49847412109375 + }, + { + "x": 2.40771484375, + "y": -0.738739013671875 + }, + { + "x": 1.0023193359375, + "y": 2.03448486328125 + }, + { + "x": 1.38592529296875, + "y": -3.2366943359375 + }, + { + "x": 3.9791259765625, + "y": 2.35052490234375 + }, + { + "x": 1.95245361328125, + "y": -3.44122314453125 + }, + { + "x": 1.01531982421875, + "y": 1.2503662109375 + }, + { + "x": -0.28759765625, + "y": 1.1444091796875 + }, + { + "x": 0.39569091796875, + "y": 0.63458251953125 + }, + { + "x": -1.8709716796875, + "y": 3.141998291015625 + }, + { + "x": -3.832275390625, + "y": -3.2041015625 + }, + { + "x": -1.2178955078125, + "y": 0.13604736328125 + }, + { + "x": -3.626708984375, + "y": -2.35723876953125 + }, + { + "x": -2.355224609375, + "y": 3.37347412109375 + }, + { + "x": -2.847900390625, + "y": 0.24542236328125 + }, + { + "x": 1.8504638671875, + "y": 1.4129638671875 + }, + { + "x": 2.42987060546875, + "y": 2.64532470703125 + }, + { + "x": 2.9473876953125, + "y": -1.59881591796875 + }, + { + "x": 2.5982666015625, + "y": 0.283843994140625 + }, + { + "x": 2.51611328125, + "y": -1.46978759765625 + }, + { + "x": -1.03173828125, + "y": 0.3536376953125 + }, + { + "x": 2.73895263671875, + "y": 0.786376953125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.10130130344026018, + "y": -0.03642640364208068, + "z": 0.47156887024887667 + }, + "rotation": { + "quaternion": { + "W": 0.7159428356707052, + "X": 0.011438221464065064, + "Y": -0.1770887301835755, + "Z": 0.6752292979303383 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img49.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img49.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 928.8486938476562, + "y": 288.603271484375 + }, + { + "x": 928.7232055664062, + "y": 344.1726379394531 + }, + { + "x": 925.4041748046875, + "y": 394.9554138183594 + }, + { + "x": 921.784423828125, + "y": 446.1087951660156 + }, + { + "x": 920.3944091796875, + "y": 495.69073486328125 + }, + { + "x": 919.6660766601562, + "y": 544.7860107421875 + }, + { + "x": 917.4284057617188, + "y": 584.7697143554688 + }, + { + "x": 881.7341918945312, + "y": 294.015625 + }, + { + "x": 879.5697631835938, + "y": 347.57891845703125 + }, + { + "x": 879.4443969726562, + "y": 399.51702880859375 + }, + { + "x": 877.0913696289062, + "y": 455.6676025390625 + }, + { + "x": 874.5376586914062, + "y": 500.9518737792969 + }, + { + "x": 871.4808959960938, + "y": 552.1536865234375 + }, + { + "x": 867.7866821289062, + "y": 595.3789672851562 + }, + { + "x": 832.3607177734375, + "y": 293.2257080078125 + }, + { + "x": 832.0586547851562, + "y": 351.9203796386719 + }, + { + "x": 831.5301513671875, + "y": 403.3779296875 + }, + { + "x": 828.8792114257812, + "y": 461.5643615722656 + }, + { + "x": 828.0452270507812, + "y": 510.3981018066406 + }, + { + "x": 827.1593017578125, + "y": 560.1566162109375 + }, + { + "x": 822.4771728515625, + "y": 607.3013916015625 + }, + { + "x": 777.9542236328125, + "y": 299.067626953125 + }, + { + "x": 777.7434692382812, + "y": 357.3330993652344 + }, + { + "x": 779.5833129882812, + "y": 410.9380798339844 + }, + { + "x": 780.1672973632812, + "y": 465.719970703125 + }, + { + "x": 778.7930297851562, + "y": 519.1022338867188 + }, + { + "x": 777.4795532226562, + "y": 568.32177734375 + }, + { + "x": 777.08837890625, + "y": 616.1143798828125 + }, + { + "x": 722.4812622070312, + "y": 305.3753356933594 + }, + { + "x": 726.047607421875, + "y": 361.4499206542969 + }, + { + "x": 726.2913818359375, + "y": 418.9067687988281 + }, + { + "x": 726.7589111328125, + "y": 473.6468505859375 + }, + { + "x": 729.1371459960938, + "y": 523.4186401367188 + }, + { + "x": 728.1005249023438, + "y": 576.3311767578125 + }, + { + "x": 726.3976440429688, + "y": 624.215576171875 + }, + { + "x": 666.7677612304688, + "y": 307.89581298828125 + }, + { + "x": 669.9359741210938, + "y": 365.47955322265625 + }, + { + "x": 671.1019897460938, + "y": 424.36328125 + }, + { + "x": 671.4959716796875, + "y": 480.8934326171875 + }, + { + "x": 676.5488891601562, + "y": 535.1067504882812 + }, + { + "x": 675.2103271484375, + "y": 582.0916137695312 + }, + { + "x": 675.5390014648438, + "y": 634.1307373046875 + }, + { + "x": 607.5466918945312, + "y": 312.1717529296875 + }, + { + "x": 611.3886108398438, + "y": 371.5887756347656 + }, + { + "x": 612.1168212890625, + "y": 431.1517639160156 + }, + { + "x": 611.0614624023438, + "y": 485.3581237792969 + }, + { + "x": 612.5096435546875, + "y": 544.474853515625 + }, + { + "x": 620.0827026367188, + "y": 594.4942016601562 + }, + { + "x": 619.6928100585938, + "y": 642.166748046875 + } + ], + "reprojectionErrors": [ + { + "x": 2.73968505859375, + "y": -1.243621826171875 + }, + { + "x": 0.26226806640625, + "y": -2.84039306640625 + }, + { + "x": 1.05755615234375, + "y": -1.07464599609375 + }, + { + "x": 2.2296142578125, + "y": -1.04522705078125 + }, + { + "x": 1.2447509765625, + "y": -0.75494384765625 + }, + { + "x": -0.33172607421875, + "y": -1.23626708984375 + }, + { + "x": -0.33154296875, + "y": 6.1851806640625 + }, + { + "x": 0.44024658203125, + "y": -2.490081787109375 + }, + { + "x": 0.635009765625, + "y": -1.311370849609375 + }, + { + "x": -1.14666748046875, + "y": 0.0263671875 + }, + { + "x": -0.6407470703125, + "y": -4.25360107421875 + }, + { + "x": 0.1234130859375, + "y": 0.98504638671875 + }, + { + "x": 1.44586181640625, + "y": -0.98699951171875 + }, + { + "x": 3.458740234375, + "y": 3.77581787109375 + }, + { + "x": -1.12213134765625, + "y": 2.61102294921875 + }, + { + "x": -2.11578369140625, + "y": -0.54656982421875 + }, + { + "x": -2.8387451171875, + "y": 2.02264404296875 + }, + { + "x": -1.39678955078125, + "y": -3.583740234375 + }, + { + "x": -1.7310791015625, + "y": -1.223968505859375 + }, + { + "x": -1.97442626953125, + "y": -1.11871337890625 + }, + { + "x": 1.61590576171875, + "y": 0.32440185546875 + }, + { + "x": 0.74249267578125, + "y": 1.2335205078125 + }, + { + "x": 0.3753662109375, + "y": -0.672882080078125 + }, + { + "x": -2.01812744140625, + "y": 0.52447509765625 + }, + { + "x": -3.13262939453125, + "y": -0.945220947265625 + }, + { + "x": -2.26666259765625, + "y": -2.44268798828125 + }, + { + "x": -1.440185546875, + "y": -1.14532470703125 + }, + { + "x": -1.5155029296875, + "y": 0.26708984375 + }, + { + "x": 1.9774169921875, + "y": -0.448028564453125 + }, + { + "x": -1.4014892578125, + "y": 0.686737060546875 + }, + { + "x": -1.45574951171875, + "y": -1.166290283203125 + }, + { + "x": -1.731689453125, + "y": -1.83837890625 + }, + { + "x": -3.9163818359375, + "y": 0.9876708984375 + }, + { + "x": -2.68438720703125, + "y": -0.73504638671875 + }, + { + "x": -0.7843017578125, + "y": 1.22088623046875 + }, + { + "x": 1.65966796875, + "y": 1.828521728515625 + }, + { + "x": -0.50439453125, + "y": 2.3341064453125 + }, + { + "x": -0.6884765625, + "y": -0.11712646484375 + }, + { + "x": -0.12176513671875, + "y": -1.79864501953125 + }, + { + "x": -4.2342529296875, + "y": -2.6783447265625 + }, + { + "x": -1.97467041015625, + "y": 2.22021484375 + }, + { + "x": -1.40087890625, + "y": 0.6756591796875 + }, + { + "x": 2.9517822265625, + "y": 2.5302734375 + }, + { + "x": 0.9864501953125, + "y": 2.1138916015625 + }, + { + "x": 2.08587646484375, + "y": -0.159423828125 + }, + { + "x": 4.9219970703125, + "y": 1.28955078125 + }, + { + "x": 5.20989990234375, + "y": -3.734130859375 + }, + { + "x": -0.6697998046875, + "y": -1.1546630859375 + }, + { + "x": 1.37249755859375, + "y": 2.34130859375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.12223749415145645, + "y": -0.03774502157728254, + "z": 0.48659850427305285 + }, + "rotation": { + "quaternion": { + "W": 0.7132424598428453, + "X": -0.019409760477527176, + "Y": -0.20021961307802577, + "Z": 0.6714317249091064 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img50.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img50.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 780.4310302734375, + "y": 211.68585205078125 + }, + { + "x": 846.5342407226562, + "y": 208.75137329101562 + }, + { + "x": 911.6768188476562, + "y": 209.51405334472656 + }, + { + "x": 981.5222778320312, + "y": 206.63577270507812 + }, + { + "x": 1044.542236328125, + "y": 202.08035278320312 + }, + { + "x": 1107.4295654296875, + "y": 208.2996063232422 + }, + { + "x": 1166.251708984375, + "y": 202.28402709960938 + }, + { + "x": 783.8817749023438, + "y": 276.3836669921875 + }, + { + "x": 851.371337890625, + "y": 276.4276428222656 + }, + { + "x": 919.9358520507812, + "y": 274.684814453125 + }, + { + "x": 982.3251953125, + "y": 272.5817565917969 + }, + { + "x": 1046.105712890625, + "y": 271.3341979980469 + }, + { + "x": 1104.827880859375, + "y": 270.8049011230469 + }, + { + "x": 1166.8739013671875, + "y": 271.27850341796875 + }, + { + "x": 789.5578002929688, + "y": 344.4364013671875 + }, + { + "x": 856.0748901367188, + "y": 342.193115234375 + }, + { + "x": 918.8218383789062, + "y": 342.231201171875 + }, + { + "x": 982.7786254882812, + "y": 335.8860168457031 + }, + { + "x": 1049.2174072265625, + "y": 332.4887390136719 + }, + { + "x": 1109.3240966796875, + "y": 336.0229187011719 + }, + { + "x": 1163.87353515625, + "y": 334.36602783203125 + }, + { + "x": 794.4389038085938, + "y": 409.583740234375 + }, + { + "x": 857.24365234375, + "y": 407.72552490234375 + }, + { + "x": 922.4762573242188, + "y": 403.6574401855469 + }, + { + "x": 985.5272827148438, + "y": 402.7069091796875 + }, + { + "x": 1048.430908203125, + "y": 404.0926513671875 + }, + { + "x": 1104.8228759765625, + "y": 402.7266845703125 + }, + { + "x": 1163.7891845703125, + "y": 397.23211669921875 + }, + { + "x": 794.5189208984375, + "y": 471.5590515136719 + }, + { + "x": 862.1178588867188, + "y": 469.2074890136719 + }, + { + "x": 922.779296875, + "y": 466.51080322265625 + }, + { + "x": 987.3690795898438, + "y": 466.8175964355469 + }, + { + "x": 1046.280029296875, + "y": 461.9258117675781 + }, + { + "x": 1106.90869140625, + "y": 462.242919921875 + }, + { + "x": 1156.6282958984375, + "y": 460.4956970214844 + }, + { + "x": 800.1464233398438, + "y": 531.6014404296875 + }, + { + "x": 862.7734375, + "y": 525.8567504882812 + }, + { + "x": 919.7744750976562, + "y": 523.116455078125 + }, + { + "x": 982.4497680664062, + "y": 526.7115478515625 + }, + { + "x": 1046.0849609375, + "y": 523.990234375 + }, + { + "x": 1100.4329833984375, + "y": 519.1968383789062 + }, + { + "x": 1157.0330810546875, + "y": 517.1898803710938 + }, + { + "x": 797.2647705078125, + "y": 587.6763916015625 + }, + { + "x": 860.3508911132812, + "y": 583.42431640625 + }, + { + "x": 923.3967895507812, + "y": 582.1825561523438 + }, + { + "x": 982.4136962890625, + "y": 582.1316528320312 + }, + { + "x": 1041.7342529296875, + "y": 575.6174926757812 + }, + { + "x": 1096.1925048828125, + "y": 574.1915893554688 + }, + { + "x": 1155.5533447265625, + "y": 567.8416137695312 + } + ], + "reprojectionErrors": [ + { + "x": 10.2718505859375, + "y": 3.5300445556640625 + }, + { + "x": 8.33111572265625, + "y": 4.4975128173828125 + }, + { + "x": 6.91925048828125, + "y": 1.780548095703125 + }, + { + "x": 0.381103515625, + "y": 2.7170257568359375 + }, + { + "x": 0.25341796875, + "y": 5.342864990234375 + }, + { + "x": -0.148681640625, + "y": -2.7939910888671875 + }, + { + "x": 3.1153564453125, + "y": 1.3157501220703125 + }, + { + "x": 7.90704345703125, + "y": 4.036590576171875 + }, + { + "x": 4.0999755859375, + "y": 1.8182373046875 + }, + { + "x": -1.20745849609375, + "y": 1.402130126953125 + }, + { + "x": -0.75677490234375, + "y": 1.361358642578125 + }, + { + "x": -2.106201171875, + "y": 0.47991943359375 + }, + { + "x": 1.2017822265625, + "y": -1.105224609375 + }, + { + "x": 0.7926025390625, + "y": -3.678985595703125 + }, + { + "x": 3.3167724609375, + "y": 0.232147216796875 + }, + { + "x": 0.01434326171875, + "y": 0.099822998046875 + }, + { + "x": 0.06292724609375, + "y": -2.2958984375 + }, + { + "x": -1.50927734375, + "y": 1.709320068359375 + }, + { + "x": -5.9664306640625, + "y": 2.78399658203125 + }, + { + "x": -4.4866943359375, + "y": -3.055755615234375 + }, + { + "x": 2.1627197265625, + "y": -3.687713623046875 + }, + { + "x": -0.4786376953125, + "y": -1.58636474609375 + }, + { + "x": -0.52459716796875, + "y": -2.29925537109375 + }, + { + "x": -3.4114990234375, + "y": -0.781768798828125 + }, + { + "x": -4.52191162109375, + "y": -2.361724853515625 + }, + { + "x": -5.8822021484375, + "y": -6.2581787109375 + }, + { + "x": -1.120361328125, + "y": -7.38348388671875 + }, + { + "x": 0.68505859375, + "y": -4.361114501953125 + }, + { + "x": 0.52734375, + "y": -1.117279052734375 + }, + { + "x": -4.7572021484375, + "y": -1.526763916015625 + }, + { + "x": -3.511474609375, + "y": -1.568267822265625 + }, + { + "x": -6.59344482421875, + "y": -4.590728759765625 + }, + { + "x": -4.3883056640625, + "y": -2.39251708984375 + }, + { + "x": -4.2850341796875, + "y": -5.3814697265625 + }, + { + "x": 6.3507080078125, + "y": -6.28472900390625 + }, + { + "x": -4.013671875, + "y": 0.43408203125 + }, + { + "x": -4.759521484375, + "y": 3.23297119140625 + }, + { + "x": -0.28094482421875, + "y": 3.05267333984375 + }, + { + "x": -1.87042236328125, + "y": -3.438232421875 + }, + { + "x": -4.80615234375, + "y": -3.58837890625 + }, + { + "x": 1.1663818359375, + "y": -1.64251708984375 + }, + { + "x": 4.515380859375, + "y": -2.45947265625 + }, + { + "x": -0.0447998046875, + "y": 5.13446044921875 + }, + { + "x": -1.67205810546875, + "y": 6.26092529296875 + }, + { + "x": -3.65521240234375, + "y": 4.404541015625 + }, + { + "x": -1.9979248046875, + "y": 1.38433837890625 + }, + { + "x": -1.0252685546875, + "y": 4.8538818359375 + }, + { + "x": 4.435791015625, + "y": 3.2613525390625 + }, + { + "x": 4.6278076171875, + "y": 6.6185302734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.0492207556819594, + "y": -0.06037392423187354, + "z": 0.41520106841433263 + }, + "rotation": { + "quaternion": { + "W": 0.9976954416462228, + "X": 0.05892551269851306, + "Y": -0.028700042830209258, + "Z": -0.017547000117112407 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img51.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img51.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 815.8740844726562, + "y": 208.1206817626953 + }, + { + "x": 882.7432861328125, + "y": 206.74977111816406 + }, + { + "x": 945.5983276367188, + "y": 208.39674377441406 + }, + { + "x": 1014.9143676757812, + "y": 206.33773803710938 + }, + { + "x": 1077.1005859375, + "y": 201.76449584960938 + }, + { + "x": 1137.1253662109375, + "y": 209.21946716308594 + }, + { + "x": 1195.005126953125, + "y": 204.43382263183594 + }, + { + "x": 818.243896484375, + "y": 272.28460693359375 + }, + { + "x": 886.2586059570312, + "y": 272.74554443359375 + }, + { + "x": 952.04931640625, + "y": 271.8448486328125 + }, + { + "x": 1015.571533203125, + "y": 270.39727783203125 + }, + { + "x": 1077.3824462890625, + "y": 271.4215087890625 + }, + { + "x": 1134.534912109375, + "y": 271.46075439453125 + }, + { + "x": 1194.68408203125, + "y": 273.13238525390625 + }, + { + "x": 822.85107421875, + "y": 340.3627624511719 + }, + { + "x": 889.3375854492188, + "y": 339.55322265625 + }, + { + "x": 951.1349487304688, + "y": 340.11737060546875 + }, + { + "x": 1014.30126953125, + "y": 334.5307922363281 + }, + { + "x": 1079.1119384765625, + "y": 332.34857177734375 + }, + { + "x": 1137.4478759765625, + "y": 335.89373779296875 + }, + { + "x": 1190.8165283203125, + "y": 335.0664367675781 + }, + { + "x": 826.2940673828125, + "y": 405.4387512207031 + }, + { + "x": 888.7372436523438, + "y": 404.7239990234375 + }, + { + "x": 953.6759643554688, + "y": 401.2871398925781 + }, + { + "x": 1015.7780151367188, + "y": 400.8595275878906 + }, + { + "x": 1076.9847412109375, + "y": 402.37371826171875 + }, + { + "x": 1132.9359130859375, + "y": 400.73223876953125 + }, + { + "x": 1189.771240234375, + "y": 397.51385498046875 + }, + { + "x": 825.4098510742188, + "y": 467.5793151855469 + }, + { + "x": 892.9112548828125, + "y": 466.2851867675781 + }, + { + "x": 953.2838745117188, + "y": 463.4090576171875 + }, + { + "x": 1016.615234375, + "y": 464.8008728027344 + }, + { + "x": 1074.116943359375, + "y": 460.493896484375 + }, + { + "x": 1132.6287841796875, + "y": 460.2674865722656 + }, + { + "x": 1183.55859375, + "y": 458.4503479003906 + }, + { + "x": 829.680419921875, + "y": 527.9764404296875 + }, + { + "x": 892.2399291992188, + "y": 522.63134765625 + }, + { + "x": 949.4415893554688, + "y": 520.9677124023438 + }, + { + "x": 1010.3302612304688, + "y": 524.4922485351562 + }, + { + "x": 1071.50927734375, + "y": 521.263916015625 + }, + { + "x": 1125.87939453125, + "y": 517.8925170898438 + }, + { + "x": 1182.2664794921875, + "y": 517.470703125 + }, + { + "x": 826.2597045898438, + "y": 583.6365966796875 + }, + { + "x": 887.996826171875, + "y": 579.8973388671875 + }, + { + "x": 950.896728515625, + "y": 579.3969116210938 + }, + { + "x": 1007.9916381835938, + "y": 579.503662109375 + }, + { + "x": 1065.66357421875, + "y": 575.5914916992188 + }, + { + "x": 1120.5152587890625, + "y": 572.3078002929688 + }, + { + "x": 1178.7474365234375, + "y": 566.4688110351562 + } + ], + "reprojectionErrors": [ + { + "x": 10.5770263671875, + "y": 2.961822509765625 + }, + { + "x": 7.16693115234375, + "y": 3.4498291015625 + }, + { + "x": 7.14788818359375, + "y": 0.9278411865234375 + }, + { + "x": 0.057861328125, + "y": 2.119537353515625 + }, + { + "x": -0.4993896484375, + "y": 5.833038330078125 + }, + { + "x": 0.5201416015625, + "y": -2.4742889404296875 + }, + { + "x": 3.1123046875, + "y": 1.4662322998046875 + }, + { + "x": 8.11529541015625, + "y": 3.93402099609375 + }, + { + "x": 3.1151123046875, + "y": 2.27313232421875 + }, + { + "x": -0.2755126953125, + "y": 1.986175537109375 + }, + { + "x": -1.9991455078125, + "y": 2.2581787109375 + }, + { + "x": -2.600341796875, + "y": 0.070220947265625 + }, + { + "x": 0.88037109375, + "y": -1.1212158203125 + }, + { + "x": 0.7998046875, + "y": -3.93365478515625 + }, + { + "x": 3.4381103515625, + "y": 0.0875244140625 + }, + { + "x": -0.46728515625, + "y": -0.6112060546875 + }, + { + "x": -0.28948974609375, + "y": -2.667022705078125 + }, + { + "x": -2.073974609375, + "y": 1.44415283203125 + }, + { + "x": -6.083740234375, + "y": 2.166900634765625 + }, + { + "x": -4.1875, + "y": -2.8221435546875 + }, + { + "x": 2.118896484375, + "y": -3.42340087890625 + }, + { + "x": -0.05340576171875, + "y": -1.62689208984375 + }, + { + "x": -0.3380126953125, + "y": -2.720367431640625 + }, + { + "x": -3.7159423828125, + "y": -1.071044921875 + }, + { + "x": -4.84259033203125, + "y": -2.41064453125 + }, + { + "x": -5.6470947265625, + "y": -5.67218017578125 + }, + { + "x": -1.75732421875, + "y": -5.758544921875 + }, + { + "x": 0.698486328125, + "y": -4.248870849609375 + }, + { + "x": 0.80328369140625, + "y": -1.242950439453125 + }, + { + "x": -4.9515380859375, + "y": -2.049102783203125 + }, + { + "x": -4.16748046875, + "y": -1.248565673828125 + }, + { + "x": -6.91973876953125, + "y": -4.691802978515625 + }, + { + "x": -4.4080810546875, + "y": -2.412506103515625 + }, + { + "x": -3.460693359375, + "y": -4.1905517578125 + }, + { + "x": 4.526123046875, + "y": -4.35504150390625 + }, + { + "x": -3.4742431640625, + "y": 0.0791015625 + }, + { + "x": -4.68890380859375, + "y": 3.0394287109375 + }, + { + "x": -1.1279296875, + "y": 2.3468017578125 + }, + { + "x": -1.82415771484375, + "y": -3.50604248046875 + }, + { + "x": -3.3692626953125, + "y": -2.57867431640625 + }, + { + "x": 1.34765625, + "y": -1.48126220703125 + }, + { + "x": 3.51171875, + "y": -3.30712890625 + }, + { + "x": -0.040283203125, + "y": 5.36334228515625 + }, + { + "x": -0.8243408203125, + "y": 6.44049072265625 + }, + { + "x": -3.345947265625, + "y": 4.31103515625 + }, + { + "x": -0.6256103515625, + "y": 1.60595703125 + }, + { + "x": 0.96630859375, + "y": 2.9508056640625 + }, + { + "x": 4.83837890625, + "y": 3.697509765625 + }, + { + "x": 4.8006591796875, + "y": 7.0294189453125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.06332981452140299, + "y": -0.06211798016211215, + "z": 0.4160735133824154 + }, + "rotation": { + "quaternion": { + "W": 0.9975309495806008, + "X": 0.055789293917605405, + "Y": -0.04130823744155026, + "Z": -0.01063902403758788 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img52.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img52.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 839.3908081054688, + "y": 194.66180419921875 + }, + { + "x": 904.5106811523438, + "y": 194.52993774414062 + }, + { + "x": 966.1707153320312, + "y": 197.3875732421875 + }, + { + "x": 1033.3438720703125, + "y": 197.18841552734375 + }, + { + "x": 1093.5029296875, + "y": 194.29811096191406 + }, + { + "x": 1152.0732421875, + "y": 202.71603393554688 + }, + { + "x": 1208.2420654296875, + "y": 199.6410369873047 + }, + { + "x": 841.0831909179688, + "y": 258.1186218261719 + }, + { + "x": 907.0899658203125, + "y": 259.6341552734375 + }, + { + "x": 970.7922973632812, + "y": 259.6851501464844 + }, + { + "x": 1033.2197265625, + "y": 259.8423767089844 + }, + { + "x": 1093.096435546875, + "y": 262.4654541015625 + }, + { + "x": 1149.5384521484375, + "y": 263.1658630371094 + }, + { + "x": 1207.0582275390625, + "y": 266.5935974121094 + }, + { + "x": 843.646728515625, + "y": 324.86346435546875 + }, + { + "x": 908.4812622070312, + "y": 324.730224609375 + }, + { + "x": 968.6766357421875, + "y": 327.5219421386719 + }, + { + "x": 1030.943115234375, + "y": 322.7103271484375 + }, + { + "x": 1094.0562744140625, + "y": 321.9627380371094 + }, + { + "x": 1150.6630859375, + "y": 327.0525817871094 + }, + { + "x": 1202.9141845703125, + "y": 327.59259033203125 + }, + { + "x": 846.166259765625, + "y": 388.9109802246094 + }, + { + "x": 907.3258056640625, + "y": 389.3384094238281 + }, + { + "x": 970.4288940429688, + "y": 386.9141540527344 + }, + { + "x": 1031.482177734375, + "y": 388.2285461425781 + }, + { + "x": 1091.226806640625, + "y": 391.13922119140625 + }, + { + "x": 1145.2379150390625, + "y": 391.47332763671875 + }, + { + "x": 1200.993896484375, + "y": 388.93841552734375 + }, + { + "x": 843.9077758789062, + "y": 450.3133850097656 + }, + { + "x": 909.6846923828125, + "y": 450.20941162109375 + }, + { + "x": 968.8753051757812, + "y": 449.1924133300781 + }, + { + "x": 1030.724609375, + "y": 450.8822021484375 + }, + { + "x": 1087.396240234375, + "y": 448.58154296875 + }, + { + "x": 1144.392333984375, + "y": 449.35064697265625 + }, + { + "x": 1193.5240478515625, + "y": 449.47552490234375 + }, + { + "x": 846.7196655273438, + "y": 509.81329345703125 + }, + { + "x": 907.6785278320312, + "y": 507.04522705078125 + }, + { + "x": 964.8018188476562, + "y": 506.2060852050781 + }, + { + "x": 1023.454345703125, + "y": 510.9957580566406 + }, + { + "x": 1083.1090087890625, + "y": 507.1619873046875 + }, + { + "x": 1137.3262939453125, + "y": 506.244873046875 + }, + { + "x": 1191.3614501953125, + "y": 506.5918273925781 + }, + { + "x": 841.8169555664062, + "y": 566.2664184570312 + }, + { + "x": 903.1376953125, + "y": 563.3339233398438 + }, + { + "x": 964.7059936523438, + "y": 563.8225708007812 + }, + { + "x": 1020.5345458984375, + "y": 564.8729248046875 + }, + { + "x": 1077.0653076171875, + "y": 562.9051513671875 + }, + { + "x": 1130.885009765625, + "y": 560.38623046875 + }, + { + "x": 1187.544677734375, + "y": 556.5869140625 + } + ], + "reprojectionErrors": [ + { + "x": 10.3656005859375, + "y": 2.4697723388671875 + }, + { + "x": 7.16363525390625, + "y": 3.282806396484375 + }, + { + "x": 6.72003173828125, + "y": 1.0970306396484375 + }, + { + "x": 0.0775146484375, + "y": 1.9589691162109375 + }, + { + "x": -0.2213134765625, + "y": 5.5031280517578125 + }, + { + "x": 0.4130859375, + "y": -2.2696380615234375 + }, + { + "x": 2.807861328125, + "y": 1.4419708251953125 + }, + { + "x": 7.3204345703125, + "y": 3.0802001953125 + }, + { + "x": 2.88311767578125, + "y": 1.87457275390625 + }, + { + "x": 0.0567626953125, + "y": 2.129791259765625 + }, + { + "x": -2.1728515625, + "y": 2.275146484375 + }, + { + "x": -2.5146484375, + "y": -0.04888916015625 + }, + { + "x": -0.070068359375, + "y": -0.453704833984375 + }, + { + "x": 0.6627197265625, + "y": -3.589263916015625 + }, + { + "x": 3.44268798828125, + "y": -0.330108642578125 + }, + { + "x": -0.162109375, + "y": -0.249755859375 + }, + { + "x": 0.18646240234375, + "y": -3.092681884765625 + }, + { + "x": -2.2066650390625, + "y": 1.669403076171875 + }, + { + "x": -6.102294921875, + "y": 2.369140625 + }, + { + "x": -4.1328125, + "y": -2.766937255859375 + }, + { + "x": 1.5650634765625, + "y": -3.351593017578125 + }, + { + "x": -0.3533935546875, + "y": -1.748016357421875 + }, + { + "x": -0.61444091796875, + "y": -2.583160400390625 + }, + { + "x": -3.49737548828125, + "y": -0.559661865234375 + }, + { + "x": -4.993896484375, + "y": -2.2679443359375 + }, + { + "x": -5.83056640625, + "y": -5.56585693359375 + }, + { + "x": -1.568115234375, + "y": -6.280609130859375 + }, + { + "x": 0.3287353515625, + "y": -4.11993408203125 + }, + { + "x": 0.665283203125, + "y": -1.1990966796875 + }, + { + "x": -4.5361328125, + "y": -1.8499755859375 + }, + { + "x": -3.8223876953125, + "y": -1.57574462890625 + }, + { + "x": -6.4237060546875, + "y": -3.996490478515625 + }, + { + "x": -4.4892578125, + "y": -2.415191650390625 + }, + { + "x": -3.507080078125, + "y": -3.892303466796875 + }, + { + "x": 4.72509765625, + "y": -4.71405029296875 + }, + { + "x": -3.35052490234375, + "y": 0.59991455078125 + }, + { + "x": -4.04888916015625, + "y": 2.273345947265625 + }, + { + "x": -1.57574462890625, + "y": 2.03485107421875 + }, + { + "x": -1.2813720703125, + "y": -3.8157958984375 + }, + { + "x": -2.62451171875, + "y": -1.026641845703125 + }, + { + "x": 0.8482666015625, + "y": -1.138153076171875 + }, + { + "x": 3.8951416015625, + "y": -2.498016357421875 + }, + { + "x": 0.3831787109375, + "y": 4.81829833984375 + }, + { + "x": -0.984130859375, + "y": 6.3232421875 + }, + { + "x": -3.25628662109375, + "y": 4.428955078125 + }, + { + "x": -0.431640625, + "y": 1.99432373046875 + }, + { + "x": 1.0618896484375, + "y": 2.59881591796875 + }, + { + "x": 4.6512451171875, + "y": 3.77496337890625 + }, + { + "x": 4.7984619140625, + "y": 6.2515869140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.0738062681358552, + "y": -0.06883136498872634, + "z": 0.42380108461046573 + }, + "rotation": { + "quaternion": { + "W": 0.9977610175953829, + "X": 0.04659334156545095, + "Y": -0.047978873746436994, + "Z": -1.9990701529041673E-4 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img53.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img53.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 833.5890502929688, + "y": 150.22567749023438 + }, + { + "x": 897.869384765625, + "y": 151.3629913330078 + }, + { + "x": 959.7920532226562, + "y": 155.0489501953125 + }, + { + "x": 1026.96630859375, + "y": 156.5681915283203 + }, + { + "x": 1085.96875, + "y": 155.16290283203125 + }, + { + "x": 1144.040771484375, + "y": 163.82618713378906 + }, + { + "x": 1199.3900146484375, + "y": 162.4640350341797 + }, + { + "x": 833.6235961914062, + "y": 214.4334716796875 + }, + { + "x": 899.6690673828125, + "y": 217.16213989257812 + }, + { + "x": 965.1800537109375, + "y": 218.24742126464844 + }, + { + "x": 1025.6480712890625, + "y": 219.2194366455078 + }, + { + "x": 1085.553466796875, + "y": 222.20693969726562 + }, + { + "x": 1141.628173828125, + "y": 224.09628295898438 + }, + { + "x": 1197.9334716796875, + "y": 228.2591552734375 + }, + { + "x": 835.9880981445312, + "y": 280.83685302734375 + }, + { + "x": 900.4546508789062, + "y": 281.2064514160156 + }, + { + "x": 961.8208618164062, + "y": 284.9327392578125 + }, + { + "x": 1023.775146484375, + "y": 281.5879211425781 + }, + { + "x": 1086.3271484375, + "y": 282.3400573730469 + }, + { + "x": 1141.89306640625, + "y": 287.5912170410156 + }, + { + "x": 1194.806640625, + "y": 289.274658203125 + }, + { + "x": 838.6185913085938, + "y": 346.3808288574219 + }, + { + "x": 898.7811279296875, + "y": 347.2374267578125 + }, + { + "x": 963.3605346679688, + "y": 345.681884765625 + }, + { + "x": 1024.73388671875, + "y": 346.52069091796875 + }, + { + "x": 1083.545166015625, + "y": 350.11663818359375 + }, + { + "x": 1137.541259765625, + "y": 351.246826171875 + }, + { + "x": 1193.58349609375, + "y": 350.9164733886719 + }, + { + "x": 834.516357421875, + "y": 408.6692810058594 + }, + { + "x": 901.822998046875, + "y": 409.23394775390625 + }, + { + "x": 959.6858520507812, + "y": 409.4881591796875 + }, + { + "x": 1024.2154541015625, + "y": 411.54693603515625 + }, + { + "x": 1078.779296875, + "y": 409.3344421386719 + }, + { + "x": 1134.98779296875, + "y": 408.9452209472656 + }, + { + "x": 1186.61181640625, + "y": 410.4619445800781 + }, + { + "x": 837.6660766601562, + "y": 468.8976135253906 + }, + { + "x": 899.146728515625, + "y": 466.4161071777344 + }, + { + "x": 956.349365234375, + "y": 465.79559326171875 + }, + { + "x": 1016.587158203125, + "y": 469.544189453125 + }, + { + "x": 1074.0009765625, + "y": 467.4482116699219 + }, + { + "x": 1129.689453125, + "y": 467.4851989746094 + }, + { + "x": 1180.9486083984375, + "y": 465.6398620605469 + }, + { + "x": 833.3120727539062, + "y": 525.4547119140625 + }, + { + "x": 894.4341430664062, + "y": 524.7481079101562 + }, + { + "x": 955.6699829101562, + "y": 525.4591064453125 + }, + { + "x": 1013.669677734375, + "y": 527.6512451171875 + }, + { + "x": 1067.5382080078125, + "y": 526.1226196289062 + }, + { + "x": 1121.83349609375, + "y": 522.5386962890625 + }, + { + "x": 1177.19189453125, + "y": 521.4689331054688 + } + ], + "reprojectionErrors": [ + { + "x": 9.734130859375, + "y": 2.3335723876953125 + }, + { + "x": 7.31195068359375, + "y": 2.906524658203125 + }, + { + "x": 6.40716552734375, + "y": 0.9047088623046875 + }, + { + "x": -0.5684814453125, + "y": 1.0441436767578125 + }, + { + "x": -0.1715087890625, + "y": 4.083221435546875 + }, + { + "x": 0.37646484375, + "y": -2.97052001953125 + }, + { + "x": 2.88671875, + "y": -0.02252197265625 + }, + { + "x": 7.9700927734375, + "y": 2.7137298583984375 + }, + { + "x": 3.48541259765625, + "y": 1.2426910400390625 + }, + { + "x": -1.29681396484375, + "y": 1.39654541015625 + }, + { + "x": -1.8475341796875, + "y": 1.6456298828125 + }, + { + "x": -2.6270751953125, + "y": -0.1383819580078125 + }, + { + "x": -0.3480224609375, + "y": -0.841400146484375 + }, + { + "x": 0.947021484375, + "y": -3.834716796875 + }, + { + "x": 3.91754150390625, + "y": 0.251220703125 + }, + { + "x": 0.72210693359375, + "y": 0.695587158203125 + }, + { + "x": -0.19708251953125, + "y": -2.227783203125 + }, + { + "x": -2.5081787109375, + "y": 1.909149169921875 + }, + { + "x": -6.2010498046875, + "y": 1.938568115234375 + }, + { + "x": -3.6728515625, + "y": -2.541290283203125 + }, + { + "x": 0.7613525390625, + "y": -3.46343994140625 + }, + { + "x": -0.36041259765625, + "y": -1.97393798828125 + }, + { + "x": 0.46588134765625, + "y": -2.451629638671875 + }, + { + "x": -3.94110107421875, + "y": -0.521026611328125 + }, + { + "x": -5.9383544921875, + "y": -0.988525390625 + }, + { + "x": -6.1505126953125, + "y": -4.216796875 + }, + { + "x": -2.305419921875, + "y": -4.982879638671875 + }, + { + "x": -1.246337890625, + "y": -4.291900634765625 + }, + { + "x": 2.1337890625, + "y": -1.541351318359375 + }, + { + "x": -4.45892333984375, + "y": -2.153961181640625 + }, + { + "x": -2.4168701171875, + "y": -2.452972412109375 + }, + { + "x": -7.8306884765625, + "y": -4.55340576171875 + }, + { + "x": -4.0487060546875, + "y": -2.3795166015625 + }, + { + "x": -2.6627197265625, + "y": -2.02593994140625 + }, + { + "x": 2.574462890625, + "y": -3.57537841796875 + }, + { + "x": -2.58538818359375, + "y": 0.377105712890625 + }, + { + "x": -3.61993408203125, + "y": 2.391632080078125 + }, + { + "x": -1.17828369140625, + "y": 2.55517578125 + }, + { + "x": -2.55389404296875, + "y": -1.640594482421875 + }, + { + "x": -1.8687744140625, + "y": 0.01776123046875 + }, + { + "x": -0.203125, + "y": -0.44744873046875 + }, + { + "x": 5.164794921875, + "y": 0.978790283203125 + }, + { + "x": 0.23687744140625, + "y": 5.41534423828125 + }, + { + "x": -0.70001220703125, + "y": 5.243408203125 + }, + { + "x": -2.54541015625, + "y": 3.6705322265625 + }, + { + "x": -1.9300537109375, + "y": 0.6328125 + }, + { + "x": 2.059814453125, + "y": 1.331787109375 + }, + { + "x": 4.8843994140625, + "y": 4.1016845703125 + }, + { + "x": 5.925048828125, + "y": 4.3726806640625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.07089361045186529, + "y": -0.08617436649919621, + "z": 0.4217462458945454 + }, + "rotation": { + "quaternion": { + "W": 0.9975404740702483, + "X": 0.04027960935625621, + "Y": -0.057223845993523086, + "Z": 0.003998388615608491 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img54.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img54.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 877.297607421875, + "y": 116.45875549316406 + }, + { + "x": 938.4671020507812, + "y": 119.59298706054688 + }, + { + "x": 995.3533935546875, + "y": 124.13434600830078 + }, + { + "x": 1055.1400146484375, + "y": 127.22711181640625 + }, + { + "x": 1107.7213134765625, + "y": 127.21812438964844 + }, + { + "x": 1157.6566162109375, + "y": 137.18655395507812 + }, + { + "x": 1203.574951171875, + "y": 138.113037109375 + }, + { + "x": 876.8179931640625, + "y": 180.22982788085938 + }, + { + "x": 938.44091796875, + "y": 183.3090057373047 + }, + { + "x": 999.6150512695312, + "y": 185.5432891845703 + }, + { + "x": 1054.0618896484375, + "y": 186.47604370117188 + }, + { + "x": 1106.7332763671875, + "y": 190.61611938476562 + }, + { + "x": 1154.646484375, + "y": 193.1978302001953 + }, + { + "x": 1203.5557861328125, + "y": 197.72042846679688 + }, + { + "x": 877.0542602539062, + "y": 245.34368896484375 + }, + { + "x": 937.7029418945312, + "y": 244.7606201171875 + }, + { + "x": 995.5973510742188, + "y": 248.79708862304688 + }, + { + "x": 1051.4947509765625, + "y": 246.60043334960938 + }, + { + "x": 1106.4884033203125, + "y": 246.97486877441406 + }, + { + "x": 1156.1197509765625, + "y": 253.2324676513672 + }, + { + "x": 1199.6983642578125, + "y": 253.77671813964844 + }, + { + "x": 878.3255004882812, + "y": 310.49755859375 + }, + { + "x": 935.4528198242188, + "y": 310.28338623046875 + }, + { + "x": 996.3271484375, + "y": 309.4653625488281 + }, + { + "x": 1050.832275390625, + "y": 309.00189208984375 + }, + { + "x": 1103.40625, + "y": 311.59375 + }, + { + "x": 1150.1602783203125, + "y": 312.33807373046875 + }, + { + "x": 1197.727783203125, + "y": 311.2215270996094 + }, + { + "x": 873.9255981445312, + "y": 371.4993896484375 + }, + { + "x": 936.9247436523438, + "y": 371.43487548828125 + }, + { + "x": 992.1460571289062, + "y": 369.7339782714844 + }, + { + "x": 1048.7969970703125, + "y": 370.57379150390625 + }, + { + "x": 1098.697021484375, + "y": 367.5086364746094 + }, + { + "x": 1150.1114501953125, + "y": 369.3692932128906 + }, + { + "x": 1190.4537353515625, + "y": 368.0915222167969 + }, + { + "x": 874.3333740234375, + "y": 433.53643798828125 + }, + { + "x": 933.4400634765625, + "y": 427.74322509765625 + }, + { + "x": 987.1473388671875, + "y": 426.1556091308594 + }, + { + "x": 1040.8592529296875, + "y": 428.3440856933594 + }, + { + "x": 1094.55126953125, + "y": 424.373291015625 + }, + { + "x": 1142.3602294921875, + "y": 421.7270202636719 + }, + { + "x": 1188.1124267578125, + "y": 421.4254150390625 + }, + { + "x": 869.1241455078125, + "y": 490.08978271484375 + }, + { + "x": 927.214111328125, + "y": 486.9164123535156 + }, + { + "x": 985.7517700195312, + "y": 482.6685485839844 + }, + { + "x": 1034.7919921875, + "y": 480.57904052734375 + }, + { + "x": 1088.2908935546875, + "y": 478.975341796875 + }, + { + "x": 1136.33203125, + "y": 476.657470703125 + }, + { + "x": 1183.4129638671875, + "y": 471.6162414550781 + } + ], + "reprojectionErrors": [ + { + "x": 8.30743408203125, + "y": 2.6516647338867188 + }, + { + "x": 4.58123779296875, + "y": 2.2472915649414062 + }, + { + "x": 3.65081787109375, + "y": 0.3618011474609375 + }, + { + "x": -1.606689453125, + "y": -0.146087646484375 + }, + { + "x": -1.0283203125, + "y": 2.379638671875 + }, + { + "x": 0.881103515625, + "y": -5.137481689453125 + }, + { + "x": 5.5440673828125, + "y": -3.6755218505859375 + }, + { + "x": 6.6427001953125, + "y": 2.55755615234375 + }, + { + "x": 2.1585693359375, + "y": 1.3555145263671875 + }, + { + "x": -3.347900390625, + "y": 0.948150634765625 + }, + { + "x": -3.5384521484375, + "y": 1.7941131591796875 + }, + { + "x": -3.3084716796875, + "y": -0.613525390625 + }, + { + "x": 0.378173828125, + "y": -1.507232666015625 + }, + { + "x": 1.818115234375, + "y": -4.384552001953125 + }, + { + "x": 4.32330322265625, + "y": 0.3760833740234375 + }, + { + "x": 0.5159912109375, + "y": 2.0032196044921875 + }, + { + "x": -1.9923095703125, + "y": -1.016448974609375 + }, + { + "x": -3.900146484375, + "y": 2.17083740234375 + }, + { + "x": -6.2451171875, + "y": 2.761932373046875 + }, + { + "x": -4.515869140625, + "y": -2.554290771484375 + }, + { + "x": 2.02783203125, + "y": -2.1803436279296875 + }, + { + "x": 1.02862548828125, + "y": -2.5625 + }, + { + "x": 0.4521484375, + "y": -2.11859130859375 + }, + { + "x": -5.3111572265625, + "y": -1.075897216796875 + }, + { + "x": -6.0872802734375, + "y": -0.392578125 + }, + { + "x": -6.259521484375, + "y": -2.76922607421875 + }, + { + "x": -1.88720703125, + "y": -3.30279541015625 + }, + { + "x": 0.445556640625, + "y": -1.979766845703125 + }, + { + "x": 3.46331787109375, + "y": -2.0396728515625 + }, + { + "x": -3.26873779296875, + "y": -2.541839599609375 + }, + { + "x": -3.6478271484375, + "y": -1.39117431640625 + }, + { + "x": -6.8245849609375, + "y": -2.765411376953125 + }, + { + "x": -4.5643310546875, + "y": -0.219482421875 + }, + { + "x": -5.0814208984375, + "y": -2.584716796875 + }, + { + "x": 4.2593994140625, + "y": -1.797515869140625 + }, + { + "x": 1.14715576171875, + "y": -3.217041015625 + }, + { + "x": -1.9696044921875, + "y": 1.23016357421875 + }, + { + "x": -1.09735107421875, + "y": 1.509063720703125 + }, + { + "x": -1.583984375, + "y": -1.952301025390625 + }, + { + "x": -3.351806640625, + "y": 0.780029296875 + }, + { + "x": -0.4873046875, + "y": 2.220947265625 + }, + { + "x": 3.23095703125, + "y": 1.34906005859375 + }, + { + "x": 4.50341796875, + "y": 0.448974609375 + }, + { + "x": 2.13262939453125, + "y": 1.51336669921875 + }, + { + "x": -2.08203125, + "y": 3.709716796875 + }, + { + "x": 1.8597412109375, + "y": 3.802978515625 + }, + { + "x": 0.05419921875, + "y": 3.4635009765625 + }, + { + "x": 2.4674072265625, + "y": 3.889251708984375 + }, + { + "x": 4.649169921875, + "y": 7.08746337890625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.08929476092406274, + "y": -0.10126540660783487, + "z": 0.42948954711885406 + }, + "rotation": { + "quaternion": { + "W": 0.9923505430966699, + "X": 0.04837548929533674, + "Y": -0.11357599087376438, + "Z": 8.402072503883651E-4 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img55.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img55.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 878.3885498046875, + "y": 113.22075653076172 + }, + { + "x": 939.5213012695312, + "y": 116.60067749023438 + }, + { + "x": 996.2513427734375, + "y": 121.5158920288086 + }, + { + "x": 1056.097900390625, + "y": 125.1716079711914 + }, + { + "x": 1108.1510009765625, + "y": 125.39679718017578 + }, + { + "x": 1157.7779541015625, + "y": 135.4747314453125 + }, + { + "x": 1203.3487548828125, + "y": 136.94110107421875 + }, + { + "x": 877.4443359375, + "y": 176.9966583251953 + }, + { + "x": 938.98583984375, + "y": 180.59715270996094 + }, + { + "x": 999.788330078125, + "y": 182.66017150878906 + }, + { + "x": 1054.2933349609375, + "y": 184.6772918701172 + }, + { + "x": 1107.4129638671875, + "y": 189.18409729003906 + }, + { + "x": 1155.0089111328125, + "y": 191.4735107421875 + }, + { + "x": 1203.3785400390625, + "y": 196.48358154296875 + }, + { + "x": 877.5421752929688, + "y": 242.3860321044922 + }, + { + "x": 938.3298950195312, + "y": 241.8178253173828 + }, + { + "x": 996.09033203125, + "y": 246.30577087402344 + }, + { + "x": 1051.7637939453125, + "y": 244.4610595703125 + }, + { + "x": 1106.6295166015625, + "y": 245.03004455566406 + }, + { + "x": 1155.5218505859375, + "y": 251.27130126953125 + }, + { + "x": 1198.799560546875, + "y": 252.5931854248047 + }, + { + "x": 878.299560546875, + "y": 307.4471435546875 + }, + { + "x": 935.542724609375, + "y": 307.9480895996094 + }, + { + "x": 996.6198120117188, + "y": 307.17144775390625 + }, + { + "x": 1050.843994140625, + "y": 306.6712646484375 + }, + { + "x": 1102.9073486328125, + "y": 309.3490295410156 + }, + { + "x": 1149.5970458984375, + "y": 310.6824035644531 + }, + { + "x": 1196.8995361328125, + "y": 309.7755432128906 + }, + { + "x": 874.2197265625, + "y": 368.6702880859375 + }, + { + "x": 936.8009033203125, + "y": 368.81640625 + }, + { + "x": 991.79541015625, + "y": 367.4823913574219 + }, + { + "x": 1048.493408203125, + "y": 368.2618713378906 + }, + { + "x": 1098.291259765625, + "y": 365.5793151855469 + }, + { + "x": 1149.329345703125, + "y": 367.3118591308594 + }, + { + "x": 1189.5716552734375, + "y": 366.4517822265625 + }, + { + "x": 873.8999633789062, + "y": 430.6392822265625 + }, + { + "x": 933.3480834960938, + "y": 425.26116943359375 + }, + { + "x": 986.3534545898438, + "y": 423.4443054199219 + }, + { + "x": 1040.364013671875, + "y": 426.3533935546875 + }, + { + "x": 1094.185546875, + "y": 422.6673278808594 + }, + { + "x": 1141.2945556640625, + "y": 420.28302001953125 + }, + { + "x": 1186.836181640625, + "y": 419.6968078613281 + }, + { + "x": 868.766845703125, + "y": 487.6825256347656 + }, + { + "x": 926.5226440429688, + "y": 484.0997314453125 + }, + { + "x": 985.4996337890625, + "y": 480.4513854980469 + }, + { + "x": 1034.3857421875, + "y": 479.0743713378906 + }, + { + "x": 1086.873046875, + "y": 477.4853515625 + }, + { + "x": 1135.227783203125, + "y": 474.7483825683594 + }, + { + "x": 1182.725830078125, + "y": 469.6490478515625 + } + ], + "reprojectionErrors": [ + { + "x": 8.24884033203125, + "y": 2.6814041137695312 + }, + { + "x": 4.44744873046875, + "y": 2.3695907592773438 + }, + { + "x": 3.52886962890625, + "y": 0.4377288818359375 + }, + { + "x": -1.962890625, + "y": -0.31587982177734375 + }, + { + "x": -1.0579833984375, + "y": 2.2831344604492188 + }, + { + "x": 0.9327392578125, + "y": -5.0453643798828125 + }, + { + "x": 5.693115234375, + "y": -3.8340606689453125 + }, + { + "x": 6.79937744140625, + "y": 2.66473388671875 + }, + { + "x": 2.291015625, + "y": 1.256500244140625 + }, + { + "x": -2.98175048828125, + "y": 1.3259429931640625 + }, + { + "x": -3.398193359375, + "y": 1.38397216796875 + }, + { + "x": -3.8115234375, + "y": -1.102691650390625 + }, + { + "x": -0.02783203125, + "y": -1.424713134765625 + }, + { + "x": 1.70849609375, + "y": -4.518096923828125 + }, + { + "x": 4.37237548828125, + "y": 0.2922515869140625 + }, + { + "x": 0.32647705078125, + "y": 2.1969451904296875 + }, + { + "x": -2.17950439453125, + "y": -0.99017333984375 + }, + { + "x": -4.024658203125, + "y": 2.1211700439453125 + }, + { + "x": -6.43017578125, + "y": 2.7860107421875 + }, + { + "x": -4.1756591796875, + "y": -2.2529144287109375 + }, + { + "x": 2.4322509765625, + "y": -2.4027099609375 + }, + { + "x": 1.3486328125, + "y": -2.466949462890625 + }, + { + "x": 0.56280517578125, + "y": -2.468017578125 + }, + { + "x": -5.52886962890625, + "y": -1.20379638671875 + }, + { + "x": -6.1790771484375, + "y": -0.22784423828125 + }, + { + "x": -6.02294921875, + "y": -2.441162109375 + }, + { + "x": -1.79345703125, + "y": -3.320953369140625 + }, + { + "x": 0.5740966796875, + "y": -1.970977783203125 + }, + { + "x": 3.22344970703125, + "y": -2.07672119140625 + }, + { + "x": -3.17840576171875, + "y": -2.541229248046875 + }, + { + "x": -3.45025634765625, + "y": -1.51531982421875 + }, + { + "x": -6.8228759765625, + "y": -2.593017578125 + }, + { + "x": -4.636474609375, + "y": -0.199188232421875 + }, + { + "x": -4.9781494140625, + "y": -2.21136474609375 + }, + { + "x": 4.238525390625, + "y": -1.622161865234375 + }, + { + "x": 1.39788818359375, + "y": -3.095367431640625 + }, + { + "x": -2.142333984375, + "y": 1.16357421875 + }, + { + "x": -0.681884765625, + "y": 1.893463134765625 + }, + { + "x": -1.610107421875, + "y": -2.07171630859375 + }, + { + "x": -3.677490234375, + "y": 0.587921142578125 + }, + { + "x": -0.307861328125, + "y": 1.97430419921875 + }, + { + "x": 3.4031982421875, + "y": 1.5899658203125 + }, + { + "x": 4.4439697265625, + "y": 0.17340087890625 + }, + { + "x": 2.3309326171875, + "y": 1.85296630859375 + }, + { + "x": -2.43109130859375, + "y": 3.6514892578125 + }, + { + "x": 1.527587890625, + "y": 3.229949951171875 + }, + { + "x": 0.569580078125, + "y": 3.069671630859375 + }, + { + "x": 2.4803466796875, + "y": 4.104644775390625 + }, + { + "x": 4.033203125, + "y": 7.547454833984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.08961302881590016, + "y": -0.10244764520388862, + "z": 0.4290143766618818 + }, + "rotation": { + "quaternion": { + "W": 0.9920487243504681, + "X": 0.04832745488192213, + "Y": -0.11617416456570422, + "Z": 0.0027109235890526644 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img56.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img56.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 880.5886840820312, + "y": 111.10765075683594 + }, + { + "x": 941.4613647460938, + "y": 114.65122985839844 + }, + { + "x": 998.0203247070312, + "y": 120.03460693359375 + }, + { + "x": 1057.527587890625, + "y": 123.45783996582031 + }, + { + "x": 1109.5970458984375, + "y": 124.06285858154297 + }, + { + "x": 1159.0966796875, + "y": 134.603515625 + }, + { + "x": 1204.2076416015625, + "y": 136.23133850097656 + }, + { + "x": 879.2918701171875, + "y": 174.6351776123047 + }, + { + "x": 940.8494873046875, + "y": 178.4864044189453 + }, + { + "x": 1001.5558471679688, + "y": 181.0652618408203 + }, + { + "x": 1055.3927001953125, + "y": 183.4852752685547 + }, + { + "x": 1108.38330078125, + "y": 187.45838928222656 + }, + { + "x": 1155.438720703125, + "y": 190.51785278320312 + }, + { + "x": 1203.8782958984375, + "y": 195.24964904785156 + }, + { + "x": 879.25, + "y": 240.2376708984375 + }, + { + "x": 939.8679809570312, + "y": 240.09854125976562 + }, + { + "x": 997.4761962890625, + "y": 244.42507934570312 + }, + { + "x": 1052.8812255859375, + "y": 242.62757873535156 + }, + { + "x": 1107.4852294921875, + "y": 243.66539001464844 + }, + { + "x": 1156.5203857421875, + "y": 250.08639526367188 + }, + { + "x": 1199.55322265625, + "y": 251.26097106933594 + }, + { + "x": 880.1845703125, + "y": 305.64495849609375 + }, + { + "x": 936.6553344726562, + "y": 306.1073303222656 + }, + { + "x": 997.735595703125, + "y": 305.2224426269531 + }, + { + "x": 1051.946533203125, + "y": 304.8612060546875 + }, + { + "x": 1103.896484375, + "y": 308.07196044921875 + }, + { + "x": 1150.2030029296875, + "y": 309.2928771972656 + }, + { + "x": 1197.327392578125, + "y": 308.4624328613281 + }, + { + "x": 875.737548828125, + "y": 366.4144287109375 + }, + { + "x": 938.4072875976562, + "y": 367.03155517578125 + }, + { + "x": 992.70556640625, + "y": 365.7516784667969 + }, + { + "x": 1049.423583984375, + "y": 366.61798095703125 + }, + { + "x": 1098.998046875, + "y": 363.82244873046875 + }, + { + "x": 1149.9853515625, + "y": 366.09576416015625 + }, + { + "x": 1189.8154296875, + "y": 365.13177490234375 + }, + { + "x": 875.20654296875, + "y": 428.743896484375 + }, + { + "x": 933.995849609375, + "y": 423.49365234375 + }, + { + "x": 987.5291137695312, + "y": 421.65203857421875 + }, + { + "x": 1040.8848876953125, + "y": 424.61895751953125 + }, + { + "x": 1094.88671875, + "y": 421.05615234375 + }, + { + "x": 1141.561279296875, + "y": 418.6947326660156 + }, + { + "x": 1186.96630859375, + "y": 418.3894958496094 + }, + { + "x": 869.6472778320312, + "y": 485.63714599609375 + }, + { + "x": 926.80078125, + "y": 481.4424743652344 + }, + { + "x": 985.7739868164062, + "y": 478.8251647949219 + }, + { + "x": 1034.971435546875, + "y": 477.23712158203125 + }, + { + "x": 1086.812255859375, + "y": 476.0448913574219 + }, + { + "x": 1135.4736328125, + "y": 473.04864501953125 + }, + { + "x": 1182.428466796875, + "y": 468.3442077636719 + } + ], + "reprojectionErrors": [ + { + "x": 8.12109375, + "y": 2.684844970703125 + }, + { + "x": 4.42828369140625, + "y": 2.4213333129882812 + }, + { + "x": 3.50970458984375, + "y": 0.2262420654296875 + }, + { + "x": -1.831787109375, + "y": -0.09661865234375 + }, + { + "x": -1.1485595703125, + "y": 2.3144760131835938 + }, + { + "x": 0.749267578125, + "y": -5.2908782958984375 + }, + { + "x": 5.7354736328125, + "y": -4.0609588623046875 + }, + { + "x": 6.8328857421875, + "y": 2.9216461181640625 + }, + { + "x": 2.15838623046875, + "y": 1.459716796875 + }, + { + "x": -3.18756103515625, + "y": 1.2041473388671875 + }, + { + "x": -3.122802734375, + "y": 1.0441741943359375 + }, + { + "x": -3.6103515625, + "y": -0.7295379638671875 + }, + { + "x": 0.4959716796875, + "y": -1.64776611328125 + }, + { + "x": 1.930908203125, + "y": -4.2941436767578125 + }, + { + "x": 4.3570556640625, + "y": 0.3353424072265625 + }, + { + "x": 0.33233642578125, + "y": 1.993560791015625 + }, + { + "x": -2.18902587890625, + "y": -0.85498046875 + }, + { + "x": -3.9508056640625, + "y": 2.3811187744140625 + }, + { + "x": -6.2957763671875, + "y": 2.7441253662109375 + }, + { + "x": -4.399658203125, + "y": -2.3123016357421875 + }, + { + "x": 2.22412109375, + "y": -2.157073974609375 + }, + { + "x": 0.9703369140625, + "y": -2.7763671875 + }, + { + "x": 0.80975341796875, + "y": -2.5701904296875 + }, + { + "x": -5.45098876953125, + "y": -1.03375244140625 + }, + { + "x": -6.271240234375, + "y": -0.037322998046875 + }, + { + "x": -6.20068359375, + "y": -2.628509521484375 + }, + { + "x": -1.801513671875, + "y": -3.244842529296875 + }, + { + "x": 0.517333984375, + "y": -1.824249267578125 + }, + { + "x": 3.02923583984375, + "y": -1.944244384765625 + }, + { + "x": -3.60693359375, + "y": -2.724609375 + }, + { + "x": -3.34698486328125, + "y": -1.601654052734375 + }, + { + "x": -6.921142578125, + "y": -2.618865966796875 + }, + { + "x": -4.70849609375, + "y": 0.03155517578125 + }, + { + "x": -5.210693359375, + "y": -2.38128662109375 + }, + { + "x": 4.19384765625, + "y": -1.551483154296875 + }, + { + "x": 1.234375, + "y": -3.34039306640625 + }, + { + "x": -1.79150390625, + "y": 0.932769775390625 + }, + { + "x": -1.0218505859375, + "y": 1.826171875 + }, + { + "x": -1.47509765625, + "y": -2.061248779296875 + }, + { + "x": -3.9178466796875, + "y": 0.60760498046875 + }, + { + "x": -0.3232421875, + "y": 2.100616455078125 + }, + { + "x": 3.30224609375, + "y": 1.56195068359375 + }, + { + "x": 4.528564453125, + "y": 0.05615234375 + }, + { + "x": 2.87457275390625, + "y": 2.477020263671875 + }, + { + "x": -2.045166015625, + "y": 3.37127685546875 + }, + { + "x": 1.424072265625, + "y": 3.28497314453125 + }, + { + "x": 0.919189453125, + "y": 2.849578857421875 + }, + { + "x": 2.3160400390625, + "y": 4.263092041015625 + }, + { + "x": 4.1917724609375, + "y": 7.427947998046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.09046158095975503, + "y": -0.10331171633183943, + "z": 0.429068324781447 + }, + "rotation": { + "quaternion": { + "W": 0.9917987330891302, + "X": 0.048886081947779624, + "Y": -0.11802588154825046, + "Z": 0.003913479187300158 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img57.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img57.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 880.4425048828125, + "y": 106.5506362915039 + }, + { + "x": 940.7682495117188, + "y": 110.42233276367188 + }, + { + "x": 997.0203247070312, + "y": 116.30606079101562 + }, + { + "x": 1056.6644287109375, + "y": 119.44947814941406 + }, + { + "x": 1109.154052734375, + "y": 119.75534057617188 + }, + { + "x": 1158.08251953125, + "y": 130.51356506347656 + }, + { + "x": 1203.491455078125, + "y": 132.5525665283203 + }, + { + "x": 878.7283325195312, + "y": 170.24234008789062 + }, + { + "x": 940.3872680664062, + "y": 174.03807067871094 + }, + { + "x": 1000.4000854492188, + "y": 176.39047241210938 + }, + { + "x": 1056.2764892578125, + "y": 177.4583282470703 + }, + { + "x": 1107.6549072265625, + "y": 183.57589721679688 + }, + { + "x": 1153.7886962890625, + "y": 187.48768615722656 + }, + { + "x": 1202.672119140625, + "y": 190.5097198486328 + }, + { + "x": 879.0136108398438, + "y": 235.39022827148438 + }, + { + "x": 939.4153442382812, + "y": 235.76795959472656 + }, + { + "x": 996.580322265625, + "y": 240.22991943359375 + }, + { + "x": 1052.2430419921875, + "y": 238.4111328125 + }, + { + "x": 1106.8603515625, + "y": 239.44927978515625 + }, + { + "x": 1155.185302734375, + "y": 245.3897705078125 + }, + { + "x": 1199.0311279296875, + "y": 247.31222534179688 + }, + { + "x": 878.9581298828125, + "y": 300.32763671875 + }, + { + "x": 936.2861328125, + "y": 300.9088134765625 + }, + { + "x": 996.3809204101562, + "y": 299.88494873046875 + }, + { + "x": 1051.357666015625, + "y": 300.4930725097656 + }, + { + "x": 1102.96484375, + "y": 303.54931640625 + }, + { + "x": 1149.4915771484375, + "y": 305.23370361328125 + }, + { + "x": 1196.7098388671875, + "y": 304.7913818359375 + }, + { + "x": 875.4160766601562, + "y": 361.4395446777344 + }, + { + "x": 937.5989990234375, + "y": 362.13958740234375 + }, + { + "x": 992.1437377929688, + "y": 361.1199035644531 + }, + { + "x": 1048.5545654296875, + "y": 362.015869140625 + }, + { + "x": 1098.580322265625, + "y": 359.3435974121094 + }, + { + "x": 1148.4188232421875, + "y": 360.8633117675781 + }, + { + "x": 1188.9642333984375, + "y": 361.16400146484375 + }, + { + "x": 875.1039428710938, + "y": 424.1824951171875 + }, + { + "x": 933.7473754882812, + "y": 418.35626220703125 + }, + { + "x": 986.7340087890625, + "y": 416.7626647949219 + }, + { + "x": 1040.38916015625, + "y": 420.0015563964844 + }, + { + "x": 1094.2342529296875, + "y": 416.5726623535156 + }, + { + "x": 1140.863037109375, + "y": 414.68218994140625 + }, + { + "x": 1186.3306884765625, + "y": 414.36541748046875 + }, + { + "x": 869.3055419921875, + "y": 480.4379577636719 + }, + { + "x": 926.2540893554688, + "y": 476.4620056152344 + }, + { + "x": 986.22607421875, + "y": 472.9094543457031 + }, + { + "x": 1033.856689453125, + "y": 471.9470520019531 + }, + { + "x": 1086.5257568359375, + "y": 471.3661193847656 + }, + { + "x": 1135.1981201171875, + "y": 469.42144775390625 + }, + { + "x": 1182.6510009765625, + "y": 463.6175537109375 + } + ], + "reprojectionErrors": [ + { + "x": 7.7525634765625, + "y": 2.7677764892578125 + }, + { + "x": 4.4779052734375, + "y": 2.294219970703125 + }, + { + "x": 3.75677490234375, + "y": -0.285552978515625 + }, + { + "x": -1.81298828125, + "y": -0.21526336669921875 + }, + { + "x": -1.6246337890625, + "y": 2.6060409545898438 + }, + { + "x": 0.78515625, + "y": -5.108039855957031 + }, + { + "x": 5.4285888671875, + "y": -4.1826019287109375 + }, + { + "x": 6.90966796875, + "y": 2.6331939697265625 + }, + { + "x": 2.01800537109375, + "y": 1.3566741943359375 + }, + { + "x": -2.7318115234375, + "y": 1.4544830322265625 + }, + { + "x": -4.786865234375, + "y": 2.7707061767578125 + }, + { + "x": -3.726318359375, + "y": -1.02618408203125 + }, + { + "x": 1.252197265625, + "y": -2.6781463623046875 + }, + { + "x": 2.2076416015625, + "y": -3.498779296875 + }, + { + "x": 4.13287353515625, + "y": 0.3249664306640625 + }, + { + "x": 0.22119140625, + "y": 1.607025146484375 + }, + { + "x": -1.9425048828125, + "y": -1.2397308349609375 + }, + { + "x": -4.0311279296875, + "y": 2.1514892578125 + }, + { + "x": -6.4432373046875, + "y": 2.6447601318359375 + }, + { + "x": -3.8768310546875, + "y": -1.803680419921875 + }, + { + "x": 1.9072265625, + "y": -2.271881103515625 + }, + { + "x": 1.7607421875, + "y": -2.463775634765625 + }, + { + "x": 0.652099609375, + "y": -2.22589111328125 + }, + { + "x": -4.69720458984375, + "y": -0.403961181640625 + }, + { + "x": -6.341552734375, + "y": -0.234130859375 + }, + { + "x": -5.9720458984375, + "y": -2.53173828125 + }, + { + "x": -1.823486328125, + "y": -3.47601318359375 + }, + { + "x": 0.3837890625, + "y": -2.311370849609375 + }, + { + "x": 2.93756103515625, + "y": -2.092437744140625 + }, + { + "x": -3.29046630859375, + "y": -2.79632568359375 + }, + { + "x": -3.339599609375, + "y": -1.778564453125 + }, + { + "x": -6.654296875, + "y": -2.674652099609375 + }, + { + "x": -4.9267578125, + "y": -7.62939453125E-4 + }, + { + "x": -4.30126953125, + "y": -1.51715087890625 + }, + { + "x": 4.37890625, + "y": -1.812896728515625 + }, + { + "x": 0.9451904296875, + "y": -3.992828369140625 + }, + { + "x": -2.0015869140625, + "y": 1.023712158203125 + }, + { + "x": -0.73675537109375, + "y": 1.83172607421875 + }, + { + "x": -1.526611328125, + "y": -2.169677734375 + }, + { + "x": -3.8367919921875, + "y": 0.5189208984375 + }, + { + "x": -0.2081298828125, + "y": 1.690399169921875 + }, + { + "x": 3.35400390625, + "y": 1.308685302734375 + }, + { + "x": 4.4984130859375, + "y": -0.022491455078125 + }, + { + "x": 2.9942626953125, + "y": 2.35418701171875 + }, + { + "x": -2.96466064453125, + "y": 4.35308837890625 + }, + { + "x": 2.04443359375, + "y": 3.805633544921875 + }, + { + "x": 0.69677734375, + "y": 2.91876220703125 + }, + { + "x": 2.0797119140625, + "y": 3.43597412109375 + }, + { + "x": 3.4654541015625, + "y": 7.85125732421875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.09055844202256225, + "y": -0.1054718827907386, + "z": 0.43051739683870277 + }, + "rotation": { + "quaternion": { + "W": 0.9919898125942731, + "X": 0.04711172147950393, + "Y": -0.11712039763504642, + "Z": 0.004416997421917868 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img58.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img58.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 899.1704711914062, + "y": 106.89903259277344 + }, + { + "x": 957.6690063476562, + "y": 109.33802032470703 + }, + { + "x": 1011.6626586914062, + "y": 113.0934066772461 + }, + { + "x": 1067.923583984375, + "y": 115.39665985107422 + }, + { + "x": 1116.4200439453125, + "y": 115.44081115722656 + }, + { + "x": 1163.515625, + "y": 124.16634368896484 + }, + { + "x": 1205.6917724609375, + "y": 123.73851013183594 + }, + { + "x": 899.4376220703125, + "y": 170.0256805419922 + }, + { + "x": 958.75732421875, + "y": 171.99676513671875 + }, + { + "x": 1016.484130859375, + "y": 173.13400268554688 + }, + { + "x": 1067.7252197265625, + "y": 173.3680877685547 + }, + { + "x": 1116.997802734375, + "y": 176.15805053710938 + }, + { + "x": 1159.7667236328125, + "y": 179.6470489501953 + }, + { + "x": 1206.7281494140625, + "y": 181.51495361328125 + }, + { + "x": 900.5977172851562, + "y": 235.03245544433594 + }, + { + "x": 958.8433837890625, + "y": 232.5504608154297 + }, + { + "x": 1013.8818359375, + "y": 235.2982177734375 + }, + { + "x": 1066.5274658203125, + "y": 232.15426635742188 + }, + { + "x": 1117.81103515625, + "y": 231.29714965820312 + }, + { + "x": 1163.028076171875, + "y": 235.5091094970703 + }, + { + "x": 1203.5814208984375, + "y": 236.0364532470703 + }, + { + "x": 902.5631103515625, + "y": 298.5535583496094 + }, + { + "x": 957.9514770507812, + "y": 297.3260803222656 + }, + { + "x": 1015.6477661132812, + "y": 295.1012268066406 + }, + { + "x": 1067.311767578125, + "y": 292.4385681152344 + }, + { + "x": 1115.6890869140625, + "y": 294.0807800292969 + }, + { + "x": 1159.549072265625, + "y": 293.92535400390625 + }, + { + "x": 1203.53466796875, + "y": 291.8097839355469 + }, + { + "x": 899.87939453125, + "y": 359.7218933105469 + }, + { + "x": 960.456298828125, + "y": 358.1175842285156 + }, + { + "x": 1013.039794921875, + "y": 353.7126770019531 + }, + { + "x": 1065.9246826171875, + "y": 353.5492248535156 + }, + { + "x": 1112.201416015625, + "y": 349.50665283203125 + }, + { + "x": 1160.30078125, + "y": 349.0896301269531 + }, + { + "x": 1197.407470703125, + "y": 347.1285095214844 + }, + { + "x": 900.3190307617188, + "y": 420.8903503417969 + }, + { + "x": 957.2966918945312, + "y": 414.0329895019531 + }, + { + "x": 1008.2056274414062, + "y": 410.0278015136719 + }, + { + "x": 1059.4888916015625, + "y": 410.3427734375 + }, + { + "x": 1109.704345703125, + "y": 405.1488037109375 + }, + { + "x": 1153.5518798828125, + "y": 401.41827392578125 + }, + { + "x": 1195.0487060546875, + "y": 397.04608154296875 + }, + { + "x": 896.9596557617188, + "y": 477.6028747558594 + }, + { + "x": 951.6990356445312, + "y": 471.6041564941406 + }, + { + "x": 1007.0980834960938, + "y": 467.87335205078125 + }, + { + "x": 1057.4715576171875, + "y": 465.4919128417969 + }, + { + "x": 1103.31884765625, + "y": 459.55657958984375 + }, + { + "x": 1148.490478515625, + "y": 453.73297119140625 + }, + { + "x": 1191.9217529296875, + "y": 448.75872802734375 + } + ], + "reprojectionErrors": [ + { + "x": 7.6046142578125, + "y": 2.5403213500976562 + }, + { + "x": 3.85443115234375, + "y": 1.9748001098632812 + }, + { + "x": 2.87872314453125, + "y": 0.03033447265625 + }, + { + "x": -2.0103759765625, + "y": -0.521514892578125 + }, + { + "x": -0.702392578125, + "y": 1.1290740966796875 + }, + { + "x": 0.51318359375, + "y": -5.955726623535156 + }, + { + "x": 5.22412109375, + "y": -3.9386520385742188 + }, + { + "x": 6.4017333984375, + "y": 2.5429534912109375 + }, + { + "x": 1.515869140625, + "y": 1.4189605712890625 + }, + { + "x": -3.4873046875, + "y": 1.1002960205078125 + }, + { + "x": -3.6322021484375, + "y": 1.657623291015625 + }, + { + "x": -3.3585205078125, + "y": -0.3668060302734375 + }, + { + "x": 1.941650390625, + "y": -3.1149139404296875 + }, + { + "x": 1.6402587890625, + "y": -4.26544189453125 + }, + { + "x": 4.35943603515625, + "y": -0.1045684814453125 + }, + { + "x": 0.2401123046875, + "y": 2.2227325439453125 + }, + { + "x": -2.36273193359375, + "y": -0.6754150390625 + }, + { + "x": -4.181884765625, + "y": 2.322235107421875 + }, + { + "x": -6.172119140625, + "y": 3.0369415283203125 + }, + { + "x": -3.55712890625, + "y": -1.313720703125 + }, + { + "x": 2.3271484375, + "y": -1.976226806640625 + }, + { + "x": 1.56427001953125, + "y": -2.00848388671875 + }, + { + "x": 0.00146484375, + "y": -1.91400146484375 + }, + { + "x": -5.5408935546875, + "y": -0.7861328125 + }, + { + "x": -6.642578125, + "y": 0.81378173828125 + }, + { + "x": -5.9739990234375, + "y": -1.858489990234375 + }, + { + "x": -2.234375, + "y": -2.70196533203125 + }, + { + "x": -2.44140625E-4, + "y": -1.555572509765625 + }, + { + "x": 3.46954345703125, + "y": -2.274749755859375 + }, + { + "x": -3.57598876953125, + "y": -2.759307861328125 + }, + { + "x": -4.28118896484375, + "y": -0.37664794921875 + }, + { + "x": -6.8621826171875, + "y": -2.171966552734375 + }, + { + "x": -4.3355712890625, + "y": -0.027679443359375 + }, + { + "x": -5.062744140625, + "y": -1.45123291015625 + }, + { + "x": 3.83642578125, + "y": -1.27557373046875 + }, + { + "x": 2.3016357421875, + "y": -3.230224609375 + }, + { + "x": -1.43231201171875, + "y": 0.603790283203125 + }, + { + "x": -0.732666015625, + "y": 1.681915283203125 + }, + { + "x": -1.9649658203125, + "y": -1.468414306640625 + }, + { + "x": -3.614501953125, + "y": 0.977630615234375 + }, + { + "x": -0.31298828125, + "y": 2.043701171875 + }, + { + "x": 3.9866943359375, + "y": 3.831085205078125 + }, + { + "x": 4.98199462890625, + "y": -0.393768310546875 + }, + { + "x": 3.2049560546875, + "y": 1.6676025390625 + }, + { + "x": -0.84942626953125, + "y": 1.586029052734375 + }, + { + "x": -1.419677734375, + "y": 0.274139404296875 + }, + { + "x": 1.06640625, + "y": 2.62969970703125 + }, + { + "x": 2.8255615234375, + "y": 4.981903076171875 + }, + { + "x": 4.9854736328125, + "y": 6.588226318359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.09884672013208799, + "y": -0.10623567150033295, + "z": 0.43383643005568584 + }, + "rotation": { + "quaternion": { + "W": 0.9885354705860131, + "X": 0.04943350264706715, + "Y": -0.14214842518242604, + "Z": -0.012156373944899603 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img59.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img59.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 906.3245849609375, + "y": 97.72492218017578 + }, + { + "x": 966.3502197265625, + "y": 98.85308837890625 + }, + { + "x": 1019.8511352539062, + "y": 101.8673324584961 + }, + { + "x": 1073.5150146484375, + "y": 104.9065933227539 + }, + { + "x": 1120.3284912109375, + "y": 104.82215118408203 + }, + { + "x": 1166.12890625, + "y": 112.90219116210938 + }, + { + "x": 1205.743896484375, + "y": 113.50868225097656 + }, + { + "x": 909.7633666992188, + "y": 160.80226135253906 + }, + { + "x": 969.5336303710938, + "y": 160.80332946777344 + }, + { + "x": 1023.4050903320312, + "y": 162.53297424316406 + }, + { + "x": 1073.1695556640625, + "y": 163.65992736816406 + }, + { + "x": 1122.4024658203125, + "y": 165.5100860595703 + }, + { + "x": 1166.4246826171875, + "y": 165.51217651367188 + }, + { + "x": 1209.0494384765625, + "y": 171.04745483398438 + }, + { + "x": 910.8696899414062, + "y": 226.87054443359375 + }, + { + "x": 968.702880859375, + "y": 223.64559936523438 + }, + { + "x": 1023.6946411132812, + "y": 225.3223114013672 + }, + { + "x": 1074.6229248046875, + "y": 222.43104553222656 + }, + { + "x": 1122.4208984375, + "y": 222.29164123535156 + }, + { + "x": 1169.052978515625, + "y": 226.30442810058594 + }, + { + "x": 1206.4173583984375, + "y": 224.92318725585938 + }, + { + "x": 912.0252685546875, + "y": 290.35595703125 + }, + { + "x": 968.998291015625, + "y": 288.6376953125 + }, + { + "x": 1025.056640625, + "y": 286.68310546875 + }, + { + "x": 1074.88330078125, + "y": 282.8697814941406 + }, + { + "x": 1121.1181640625, + "y": 282.8049011230469 + }, + { + "x": 1166.0460205078125, + "y": 281.0269775390625 + }, + { + "x": 1206.0751953125, + "y": 280.0363464355469 + }, + { + "x": 911.6932983398438, + "y": 353.23583984375 + }, + { + "x": 970.1198120117188, + "y": 351.0462646484375 + }, + { + "x": 1022.5173950195312, + "y": 345.5034484863281 + }, + { + "x": 1075.0963134765625, + "y": 344.89862060546875 + }, + { + "x": 1118.8192138671875, + "y": 339.669189453125 + }, + { + "x": 1166.5635986328125, + "y": 339.0818176269531 + }, + { + "x": 1202.676025390625, + "y": 334.5855712890625 + }, + { + "x": 912.037353515625, + "y": 416.0431213378906 + }, + { + "x": 966.6790161132812, + "y": 408.489013671875 + }, + { + "x": 1019.5308837890625, + "y": 403.63568115234375 + }, + { + "x": 1068.2591552734375, + "y": 401.695556640625 + }, + { + "x": 1117.6204833984375, + "y": 396.4000244140625 + }, + { + "x": 1158.408447265625, + "y": 391.6217346191406 + }, + { + "x": 1202.395751953125, + "y": 388.9679870605469 + }, + { + "x": 909.0323486328125, + "y": 472.8249816894531 + }, + { + "x": 964.0350952148438, + "y": 468.5590515136719 + }, + { + "x": 1015.6983032226562, + "y": 461.96893310546875 + }, + { + "x": 1066.83349609375, + "y": 457.29010009765625 + }, + { + "x": 1110.702880859375, + "y": 450.2510070800781 + }, + { + "x": 1151.815673828125, + "y": 441.2353210449219 + }, + { + "x": 1196.4556884765625, + "y": 436.8472900390625 + } + ], + "reprojectionErrors": [ + { + "x": 9.27587890625, + "y": 1.3943710327148438 + }, + { + "x": 3.32965087890625, + "y": 1.8931884765625 + }, + { + "x": 1.95526123046875, + "y": 0.44367218017578125 + }, + { + "x": -1.4273681640625, + "y": -1.0897140502929688 + }, + { + "x": 0.294677734375, + "y": 0.4449462890625 + }, + { + "x": 1.3768310546875, + "y": -6.237602233886719 + }, + { + "x": 7.07763671875, + "y": -5.496574401855469 + }, + { + "x": 5.49285888671875, + "y": 2.5491180419921875 + }, + { + "x": -0.536376953125, + "y": 2.982757568359375 + }, + { + "x": -2.59521484375, + "y": 1.6702117919921875 + }, + { + "x": -2.369873046875, + "y": 0.9437103271484375 + }, + { + "x": -3.338134765625, + "y": -0.5217742919921875 + }, + { + "x": -0.7294921875, + "y": -0.15411376953125 + }, + { + "x": 1.727294921875, + "y": -5.33380126953125 + }, + { + "x": 4.09332275390625, + "y": -0.11865234375 + }, + { + "x": -0.329833984375, + "y": 2.37896728515625 + }, + { + "x": -3.816162109375, + "y": 3.204345703125E-4 + }, + { + "x": -5.0401611328125, + "y": 2.213653564453125 + }, + { + "x": -4.8387451171875, + "y": 1.697845458984375 + }, + { + "x": -5.0869140625, + "y": -2.9486236572265625 + }, + { + "x": 2.400634765625, + "y": -2.1806640625 + }, + { + "x": 2.69451904296875, + "y": -1.004913330078125 + }, + { + "x": -1.1922607421875, + "y": -1.147125244140625 + }, + { + "x": -6.04595947265625, + "y": -0.986175537109375 + }, + { + "x": -6.4478759765625, + "y": 1.0966796875 + }, + { + "x": -4.9434814453125, + "y": -0.509033203125 + }, + { + "x": -3.7293701171875, + "y": -0.345001220703125 + }, + { + "x": 0.867919921875, + "y": -0.9144287109375 + }, + { + "x": 2.83233642578125, + "y": -2.057891845703125 + }, + { + "x": -2.82476806640625, + "y": -2.834381103515625 + }, + { + "x": -4.31219482421875, + "y": -0.15081787109375 + }, + { + "x": -7.740234375, + "y": -2.30426025390625 + }, + { + "x": -3.9786376953125, + "y": 0.262603759765625 + }, + { + "x": -5.8184814453125, + "y": -1.721832275390625 + }, + { + "x": 2.474365234375, + "y": 0.2886962890625 + }, + { + "x": 2.34222412109375, + "y": -3.782440185546875 + }, + { + "x": 0.159912109375, + "y": -0.27362060546875 + }, + { + "x": -2.070068359375, + "y": 0.679718017578125 + }, + { + "x": -1.915771484375, + "y": -1.142578125 + }, + { + "x": -4.0423583984375, + "y": 0.520843505859375 + }, + { + "x": 0.8414306640625, + "y": 1.790618896484375 + }, + { + "x": 1.04248046875, + "y": 1.05322265625 + }, + { + "x": 5.24835205078125, + "y": -0.19873046875 + }, + { + "x": 2.40155029296875, + "y": -1.032196044921875 + }, + { + "x": 1.07794189453125, + "y": 0.64105224609375 + }, + { + "x": -1.4375, + "y": 0.575836181640625 + }, + { + "x": 1.6829833984375, + "y": 3.034698486328125 + }, + { + "x": 6.0137939453125, + "y": 7.625579833984375 + }, + { + "x": 5.3492431640625, + "y": 7.736358642578125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.10080656730012075, + "y": -0.10867196398062688, + "z": 0.42686877739158974 + }, + "rotation": { + "quaternion": { + "W": 0.9854055466037703, + "X": 0.05058374485416338, + "Y": -0.16137968206239486, + "Z": -0.019333693296783916 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img60.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x720/img60.png" + } + ], + "calobjectSize": { + "width": 7.0, + "height": 7.0 + }, + "calobjectSpacing": 0.0254, + "lensmodel": "LENSMODEL_OPENCV" +} diff --git a/camera_calibrations/Right_1280x800.json b/camera_calibrations/Right_1280x800.json new file mode 100644 index 0000000..b824501 --- /dev/null +++ b/camera_calibrations/Right_1280x800.json @@ -0,0 +1,40492 @@ +{ + "resolution": { + "width": 1280.0, + "height": 800.0 + }, + "cameraIntrinsics": { + "rows": 3, + "cols": 3, + "type": 6, + "data": [ + 197.34521060922103, + 0.0, + 687.931247880572, + 0.0, + 301.5654941055896, + 360.8734646212463, + 0.0, + 0.0, + 1.0 + ] + }, + "distCoeffs": { + "rows": 1, + "cols": 8, + "type": 6, + "data": [ + 0.009496875681439152, + 2.5086735069277633E-5, + 1.0515838203210873E-7, + 2.260128538111072E-8, + -1.2754247747367182E-8, + 0.052559597237476385, + -6.042156276850934E-4, + 1.5926441759459474E-5 + ] + }, + "calobjectWarp": [ + -5.539911741990512E-8, + -2.0333598464306136E-8 + ], + "observations": [ + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 629.4044189453125, + "y": 350.25390625 + }, + { + "x": 669.88134765625, + "y": 354.8934326171875 + }, + { + "x": 707.767333984375, + "y": 360.6949768066406 + }, + { + "x": 748.0277709960938, + "y": 364.8149108886719 + }, + { + "x": 785.3113403320312, + "y": 368.9223327636719 + }, + { + "x": 821.2726440429688, + "y": 374.62298583984375 + }, + { + "x": 856.2744750976562, + "y": 379.03607177734375 + }, + { + "x": 623.9248657226562, + "y": 388.373779296875 + }, + { + "x": 663.9620361328125, + "y": 394.341552734375 + }, + { + "x": 700.7017822265625, + "y": 396.4336853027344 + }, + { + "x": 744.2140502929688, + "y": 400.76129150390625 + }, + { + "x": 778.2252197265625, + "y": 406.8841247558594 + }, + { + "x": 813.6181640625, + "y": 411.8805236816406 + }, + { + "x": 850.0269775390625, + "y": 416.6188659667969 + }, + { + "x": 618.7328491210938, + "y": 428.5830078125 + }, + { + "x": 658.7970581054688, + "y": 434.4159240722656 + }, + { + "x": 695.4562377929688, + "y": 437.3536071777344 + }, + { + "x": 733.541015625, + "y": 440.77838134765625 + }, + { + "x": 772.43359375, + "y": 443.9934997558594 + }, + { + "x": 806.8834838867188, + "y": 448.6337585449219 + }, + { + "x": 841.346435546875, + "y": 452.7674865722656 + }, + { + "x": 613.8748779296875, + "y": 468.4483337402344 + }, + { + "x": 652.0534057617188, + "y": 470.3288879394531 + }, + { + "x": 689.453857421875, + "y": 473.28948974609375 + }, + { + "x": 726.9832153320312, + "y": 479.6420593261719 + }, + { + "x": 764.37744140625, + "y": 483.24072265625 + }, + { + "x": 800.3797607421875, + "y": 485.2608642578125 + }, + { + "x": 834.4431762695312, + "y": 488.6854248046875 + }, + { + "x": 608.43798828125, + "y": 503.5038757324219 + }, + { + "x": 646.7276000976562, + "y": 507.5838317871094 + }, + { + "x": 682.263916015625, + "y": 512.4680786132812 + }, + { + "x": 723.0015869140625, + "y": 517.01708984375 + }, + { + "x": 755.7462158203125, + "y": 519.1234741210938 + }, + { + "x": 793.0667114257812, + "y": 521.3043212890625 + }, + { + "x": 827.94287109375, + "y": 522.6696166992188 + }, + { + "x": 603.5279541015625, + "y": 542.8605346679688 + }, + { + "x": 640.0889892578125, + "y": 544.6598510742188 + }, + { + "x": 676.8784790039062, + "y": 546.633056640625 + }, + { + "x": 714.9365234375, + "y": 549.39111328125 + }, + { + "x": 751.8571166992188, + "y": 554.2854614257812 + }, + { + "x": 785.3524169921875, + "y": 555.8115844726562 + }, + { + "x": 820.8224487304688, + "y": 560.399169921875 + }, + { + "x": 595.5426025390625, + "y": 576.1436157226562 + }, + { + "x": 634.4676513671875, + "y": 580.3328247070312 + }, + { + "x": 671.7220458984375, + "y": 582.5213623046875 + }, + { + "x": 708.3466796875, + "y": 586.7536010742188 + }, + { + "x": 743.640380859375, + "y": 586.9090576171875 + }, + { + "x": 779.3590087890625, + "y": 590.03515625 + }, + { + "x": 814.2709350585938, + "y": 591.3546752929688 + } + ], + "reprojectionErrors": [ + { + "x": -7.14874267578125, + "y": -19.84375 + }, + { + "x": -5.52655029296875, + "y": -18.520263671875 + }, + { + "x": -1.91058349609375, + "y": -18.443389892578125 + }, + { + "x": -1.253662109375, + "y": -16.767730712890625 + }, + { + "x": 1.80780029296875, + "y": -15.16064453125 + }, + { + "x": 5.63116455078125, + "y": -15.22613525390625 + }, + { + "x": 9.8651123046875, + "y": -14.081817626953125 + }, + { + "x": -0.15264892578125, + "y": -1.6822509765625 + }, + { + "x": -1.4322509765625, + "y": -2.529144287109375 + }, + { + "x": 0.07891845703125, + "y": 0.43267822265625 + }, + { + "x": -5.6790771484375, + "y": 1.093353271484375 + }, + { + "x": -2.423095703125, + "y": -0.10552978515625 + }, + { + "x": -1.026611328125, + "y": -0.24114990234375 + }, + { + "x": -1.1146240234375, + "y": -0.18060302734375 + }, + { + "x": 6.3321533203125, + "y": 6.08453369140625 + }, + { + "x": 2.17535400390625, + "y": 4.70452880859375 + }, + { + "x": 0.9884033203125, + "y": 6.165771484375 + }, + { + "x": -2.05133056640625, + "y": 7.0869140625 + }, + { + "x": -6.3184814453125, + "y": 8.165679931640625 + }, + { + "x": -6.55499267578125, + "y": 7.7681884765625 + }, + { + "x": -7.20941162109375, + "y": 7.8270263671875 + }, + { + "x": 12.30523681640625, + "y": 7.6019287109375 + }, + { + "x": 7.57440185546875, + "y": 9.635040283203125 + }, + { + "x": 3.24395751953125, + "y": 10.543853759765625 + }, + { + "x": -1.5869140625, + "y": 8.017242431640625 + }, + { + "x": -6.64776611328125, + "y": 8.2017822265625 + }, + { + "x": -10.67584228515625, + "y": 9.922821044921875 + }, + { + "x": -13.1181640625, + "y": 10.198089599609375 + }, + { + "x": 18.7138671875, + "y": 8.607635498046875 + }, + { + "x": 11.7276611328125, + "y": 7.999298095703125 + }, + { + "x": 7.1636962890625, + "y": 6.54998779296875 + }, + { + "x": -2.92742919921875, + "y": 5.39971923828125 + }, + { + "x": -5.34625244140625, + "y": 6.656494140625 + }, + { + "x": -12.65667724609375, + "y": 7.8038330078125 + }, + { + "x": -17.83355712890625, + "y": 9.732177734375 + }, + { + "x": 24.47821044921875, + "y": 0.95513916015625 + }, + { + "x": 17.33465576171875, + "y": 2.2603759765625 + }, + { + "x": 9.670166015625, + "y": 3.36083984375 + }, + { + "x": 0.448974609375, + "y": 3.64599609375 + }, + { + "x": -7.918701171875, + "y": 1.76495361328125 + }, + { + "x": -13.140869140625, + "y": 3.2225341796875 + }, + { + "x": -20.6134033203125, + "y": 1.589599609375 + }, + { + "x": 33.22052001953125, + "y": -4.2362060546875 + }, + { + "x": 22.0413818359375, + "y": -5.6292724609375 + }, + { + "x": 12.2725830078125, + "y": -5.0479736328125 + }, + { + "x": 2.87689208984375, + "y": -6.53619384765625 + }, + { + "x": -5.44097900390625, + "y": -3.97320556640625 + }, + { + "x": -14.433349609375, + "y": -4.406005859375 + }, + { + "x": -22.86517333984375, + "y": -3.0570068359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.039601070867046964, + "y": -0.012020562691932385, + "z": 0.11899521757328027 + }, + "rotation": { + "quaternion": { + "W": 0.9769728282959415, + "X": 0.20788059605832532, + "Y": -0.007138177515229319, + "Z": 0.04752680270779166 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img0.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img0.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 489.44598388671875, + "y": 327.98333740234375 + }, + { + "x": 492.3240051269531, + "y": 367.3148498535156 + }, + { + "x": 494.4021911621094, + "y": 404.19891357421875 + }, + { + "x": 499.39373779296875, + "y": 441.24774169921875 + }, + { + "x": 500.549072265625, + "y": 477.52178955078125 + }, + { + "x": 506.1579284667969, + "y": 512.4017944335938 + }, + { + "x": 511.4154357910156, + "y": 543.8200073242188 + }, + { + "x": 452.2286682128906, + "y": 335.255126953125 + }, + { + "x": 453.7395324707031, + "y": 370.7706298828125 + }, + { + "x": 458.5658874511719, + "y": 408.5489807128906 + }, + { + "x": 461.14874267578125, + "y": 447.5041198730469 + }, + { + "x": 466.6277160644531, + "y": 482.4146423339844 + }, + { + "x": 468.5075988769531, + "y": 516.5834350585938 + }, + { + "x": 475.0294189453125, + "y": 552.388671875 + }, + { + "x": 413.84710693359375, + "y": 335.7567443847656 + }, + { + "x": 416.3994140625, + "y": 375.934814453125 + }, + { + "x": 421.65863037109375, + "y": 410.7828674316406 + }, + { + "x": 424.8649597167969, + "y": 451.3853759765625 + }, + { + "x": 429.0137023925781, + "y": 486.1485290527344 + }, + { + "x": 433.4898681640625, + "y": 521.8466186523438 + }, + { + "x": 437.4913024902344, + "y": 554.6962280273438 + }, + { + "x": 376.0527648925781, + "y": 343.53643798828125 + }, + { + "x": 378.2213134765625, + "y": 380.4852294921875 + }, + { + "x": 381.792724609375, + "y": 416.7198181152344 + }, + { + "x": 388.1197204589844, + "y": 454.168212890625 + }, + { + "x": 393.78155517578125, + "y": 492.4844970703125 + }, + { + "x": 396.7138977050781, + "y": 526.7197265625 + }, + { + "x": 401.68841552734375, + "y": 560.9879760742188 + }, + { + "x": 335.2455139160156, + "y": 348.7403869628906 + }, + { + "x": 342.32794189453125, + "y": 385.42047119140625 + }, + { + "x": 344.96533203125, + "y": 423.9819030761719 + }, + { + "x": 350.8159484863281, + "y": 459.4238586425781 + }, + { + "x": 355.7605285644531, + "y": 495.25177001953125 + }, + { + "x": 358.78179931640625, + "y": 529.606689453125 + }, + { + "x": 365.70635986328125, + "y": 565.572021484375 + }, + { + "x": 298.8065490722656, + "y": 351.4602355957031 + }, + { + "x": 304.1138916015625, + "y": 389.55047607421875 + }, + { + "x": 309.1094665527344, + "y": 427.6913146972656 + }, + { + "x": 313.4103088378906, + "y": 465.25457763671875 + }, + { + "x": 321.0931396484375, + "y": 500.8272399902344 + }, + { + "x": 325.5006103515625, + "y": 534.1033325195312 + }, + { + "x": 330.5661926269531, + "y": 570.242919921875 + }, + { + "x": 263.41558837890625, + "y": 355.7931213378906 + }, + { + "x": 266.607421875, + "y": 394.11181640625 + }, + { + "x": 272.5762634277344, + "y": 432.31317138671875 + }, + { + "x": 277.9296875, + "y": 469.6639404296875 + }, + { + "x": 282.7738952636719, + "y": 505.3675231933594 + }, + { + "x": 290.5971374511719, + "y": 541.631103515625 + }, + { + "x": 293.4456481933594, + "y": 575.8421630859375 + } + ], + "reprojectionErrors": [ + { + "x": -9.84710693359375, + "y": 10.053253173828125 + }, + { + "x": -9.817352294921875, + "y": 6.5333251953125 + }, + { + "x": -9.06951904296875, + "y": 4.454254150390625 + }, + { + "x": -11.3133544921875, + "y": 1.24566650390625 + }, + { + "x": -9.796112060546875, + "y": -2.11334228515625 + }, + { + "x": -12.804443359375, + "y": -4.966064453125 + }, + { + "x": -15.5306396484375, + "y": -5.2093505859375 + }, + { + "x": -3.59954833984375, + "y": 3.1744384765625 + }, + { + "x": -1.643402099609375, + "y": 4.7242431640625 + }, + { + "x": -3.10357666015625, + "y": 2.933258056640625 + }, + { + "x": -2.416717529296875, + "y": -1.066131591796875 + }, + { + "x": -4.718414306640625, + "y": -2.0087890625 + }, + { + "x": -3.509521484375, + "y": -3.15631103515625 + }, + { + "x": -7.027435302734375, + "y": -6.84783935546875 + }, + { + "x": 1.519317626953125, + "y": 3.094879150390625 + }, + { + "x": 3.069091796875, + "y": 1.3267822265625 + }, + { + "x": 1.788421630859375, + "y": 3.7315673828125 + }, + { + "x": 2.442535400390625, + "y": -0.7237548828125 + }, + { + "x": 2.041351318359375, + "y": -0.39691162109375 + }, + { + "x": 1.204742431640625, + "y": -2.01641845703125 + }, + { + "x": 0.73944091796875, + "y": -1.75579833984375 + }, + { + "x": 3.49359130859375, + "y": -4.23028564453125 + }, + { + "x": 6.15087890625, + "y": -1.32318115234375 + }, + { + "x": 7.2545166015625, + "y": 1.05267333984375 + }, + { + "x": 5.458709716796875, + "y": 1.026763916015625 + }, + { + "x": 4.1907958984375, + "y": -1.001007080078125 + }, + { + "x": 5.521240234375, + "y": -0.03094482421875 + }, + { + "x": 4.68414306640625, + "y": -0.12933349609375 + }, + { + "x": 5.61669921875, + "y": -8.943389892578125 + }, + { + "x": 4.18798828125, + "y": -4.20855712890625 + }, + { + "x": 7.020843505859375, + "y": -2.699310302734375 + }, + { + "x": 6.46575927734375, + "y": 0.64959716796875 + }, + { + "x": 6.6502685546875, + "y": 2.39306640625 + }, + { + "x": 8.599334716796875, + "y": 4.4466552734375 + }, + { + "x": 6.493621826171875, + "y": 3.7801513671875 + }, + { + "x": 0.149627685546875, + "y": -11.131500244140625 + }, + { + "x": 1.446990966796875, + "y": -6.12091064453125 + }, + { + "x": 2.833160400390625, + "y": -2.61614990234375 + }, + { + "x": 4.702178955078125, + "y": 0.08343505859375 + }, + { + "x": 2.987701416015625, + "y": 3.458587646484375 + }, + { + "x": 4.3568115234375, + "y": 7.878662109375 + }, + { + "x": 4.885101318359375, + "y": 8.24298095703125 + }, + { + "x": -10.007354736328125, + "y": -14.88641357421875 + }, + { + "x": -5.497100830078125, + "y": -8.275299072265625 + }, + { + "x": -4.0347900390625, + "y": -3.12744140625 + }, + { + "x": -2.213958740234375, + "y": 1.372406005859375 + }, + { + "x": -0.127685546875, + "y": 6.097198486328125 + }, + { + "x": -1.252044677734375, + "y": 8.91107177734375 + }, + { + "x": 2.378204345703125, + "y": 12.4930419921875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.22299121624272375, + "y": -0.015996051614571127, + "z": 0.21123097047140083 + }, + "rotation": { + "quaternion": { + "W": 0.7035598464220969, + "X": -0.06066598589003547, + "Y": -0.14521816618110384, + "Z": 0.6929898014181037 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img1.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img1.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 290.38848876953125, + "y": 362.0735778808594 + }, + { + "x": 295.643310546875, + "y": 401.3088073730469 + }, + { + "x": 299.90887451171875, + "y": 438.73944091796875 + }, + { + "x": 307.661376953125, + "y": 476.57135009765625 + }, + { + "x": 310.6658935546875, + "y": 512.656982421875 + }, + { + "x": 318.35797119140625, + "y": 547.1964721679688 + }, + { + "x": 325.26629638671875, + "y": 579.75146484375 + }, + { + "x": 254.07354736328125, + "y": 370.5478210449219 + }, + { + "x": 257.6385498046875, + "y": 407.20184326171875 + }, + { + "x": 264.3270263671875, + "y": 445.4084167480469 + }, + { + "x": 269.4659423828125, + "y": 484.18701171875 + }, + { + "x": 277.1427307128906, + "y": 519.5825805664062 + }, + { + "x": 281.6321716308594, + "y": 554.1380004882812 + }, + { + "x": 289.61541748046875, + "y": 589.1515502929688 + }, + { + "x": 216.5449676513672, + "y": 373.72540283203125 + }, + { + "x": 221.6033477783203, + "y": 415.069091796875 + }, + { + "x": 228.1749267578125, + "y": 450.368408203125 + }, + { + "x": 234.72235107421875, + "y": 491.1515808105469 + }, + { + "x": 240.2279510498047, + "y": 526.228515625 + }, + { + "x": 247.3678436279297, + "y": 561.7174072265625 + }, + { + "x": 253.47483825683594, + "y": 595.2960815429688 + }, + { + "x": 179.8504180908203, + "y": 383.9685363769531 + }, + { + "x": 184.29925537109375, + "y": 421.4970397949219 + }, + { + "x": 189.3650665283203, + "y": 458.61566162109375 + }, + { + "x": 198.225830078125, + "y": 495.8006286621094 + }, + { + "x": 206.36207580566406, + "y": 534.3380737304688 + }, + { + "x": 211.5976104736328, + "y": 569.6810302734375 + }, + { + "x": 219.47412109375, + "y": 602.9715576171875 + }, + { + "x": 140.31924438476562, + "y": 391.26263427734375 + }, + { + "x": 149.2303924560547, + "y": 429.0837097167969 + }, + { + "x": 153.9484405517578, + "y": 468.2691955566406 + }, + { + "x": 163.027587890625, + "y": 504.3326110839844 + }, + { + "x": 169.71676635742188, + "y": 539.7173461914062 + }, + { + "x": 174.9097137451172, + "y": 574.267333984375 + }, + { + "x": 184.47235107421875, + "y": 610.727294921875 + }, + { + "x": 104.59441375732422, + "y": 396.8631591796875 + }, + { + "x": 112.53231048583984, + "y": 435.0010681152344 + }, + { + "x": 119.61477661132812, + "y": 474.2115478515625 + }, + { + "x": 126.50055694580078, + "y": 511.4364318847656 + }, + { + "x": 136.1671142578125, + "y": 547.6243896484375 + }, + { + "x": 143.6558074951172, + "y": 579.6858520507812 + }, + { + "x": 152.13705444335938, + "y": 617.5280151367188 + }, + { + "x": 70.3697509765625, + "y": 403.5863952636719 + }, + { + "x": 76.10761260986328, + "y": 442.3472595214844 + }, + { + "x": 84.49220275878906, + "y": 480.6380310058594 + }, + { + "x": 93.3779067993164, + "y": 519.1388549804688 + }, + { + "x": 99.78642272949219, + "y": 554.5017700195312 + }, + { + "x": 109.95252990722656, + "y": 590.5479125976562 + }, + { + "x": 116.79735565185547, + "y": 623.7618408203125 + } + ], + "reprojectionErrors": [ + { + "x": -6.512603759765625, + "y": 7.265533447265625 + }, + { + "x": -5.92242431640625, + "y": 4.30792236328125 + }, + { + "x": -4.44537353515625, + "y": 2.519134521484375 + }, + { + "x": -6.5550537109375, + "y": -0.2901611328125 + }, + { + "x": -4.013885498046875, + "y": -1.956451416015625 + }, + { + "x": -6.2550048828125, + "y": -2.66436767578125 + }, + { + "x": -7.80462646484375, + "y": -1.96063232421875 + }, + { + "x": -2.9837799072265625, + "y": 2.9737548828125 + }, + { + "x": -0.2845458984375, + "y": 3.3245849609375 + }, + { + "x": -0.82086181640625, + "y": 1.460784912109375 + }, + { + "x": 0.08331298828125, + "y": -1.6195068359375 + }, + { + "x": -1.6566162109375, + "y": -1.94427490234375 + }, + { + "x": -0.312591552734375, + "y": -2.0400390625 + }, + { + "x": -2.56317138671875, + "y": -3.18914794921875 + }, + { + "x": 0.333038330078125, + "y": 4.160491943359375 + }, + { + "x": 1.989288330078125, + "y": 0.57855224609375 + }, + { + "x": 2.009674072265625, + "y": 2.3509521484375 + }, + { + "x": 1.9348602294921875, + "y": -2.031829833984375 + }, + { + "x": 2.7857208251953125, + "y": -1.36163330078125 + }, + { + "x": 1.889251708984375, + "y": -1.73919677734375 + }, + { + "x": 1.9156341552734375, + "y": -0.82562255859375 + }, + { + "x": 1.2950897216796875, + "y": -1.524322509765625 + }, + { + "x": 4.0454864501953125, + "y": -0.502655029296875 + }, + { + "x": 6.0444793701171875, + "y": 0.20904541015625 + }, + { + "x": 4.11785888671875, + "y": 0.154541015625 + }, + { + "x": 2.788665771484375, + "y": -1.93304443359375 + }, + { + "x": 4.2365570068359375, + "y": -1.48828125 + }, + { + "x": 2.923187255859375, + "y": 0.36474609375 + }, + { + "x": 3.4693756103515625, + "y": -4.052886962890625 + }, + { + "x": 2.2794952392578125, + "y": -2.50189208984375 + }, + { + "x": 5.135345458984375, + "y": -3.066925048828125 + }, + { + "x": 3.4869232177734375, + "y": -1.2401123046875 + }, + { + "x": 4.08929443359375, + "y": 0.55560302734375 + }, + { + "x": 6.0525970458984375, + "y": 2.49615478515625 + }, + { + "x": 3.5146484375, + "y": 1.855712890625 + }, + { + "x": 0.09954071044921875, + "y": -4.666168212890625 + }, + { + "x": 0.446136474609375, + "y": -2.574462890625 + }, + { + "x": 1.4864425659179688, + "y": -2.340789794921875 + }, + { + "x": 2.5663986206054688, + "y": -0.884185791015625 + }, + { + "x": 0.7130584716796875, + "y": 0.8685302734375 + }, + { + "x": 0.889404296875, + "y": 6.028076171875 + }, + { + "x": -0.070831298828125, + "y": 4.70751953125 + }, + { + "x": -6.632354736328125, + "y": -6.1646728515625 + }, + { + "x": -3.4771575927734375, + "y": -3.800323486328125 + }, + { + "x": -3.1463394165039062, + "y": -1.787567138671875 + }, + { + "x": -3.4890213012695312, + "y": -0.78216552734375 + }, + { + "x": -1.5218353271484375, + "y": 2.5872802734375 + }, + { + "x": -3.4746856689453125, + "y": 4.5220947265625 + }, + { + "x": -2.2640304565429688, + "y": 8.5594482421875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.4245332347728096, + "y": 0.005820710407326445, + "z": 0.20734682767274765 + }, + "rotation": { + "quaternion": { + "W": 0.7388644049415163, + "X": -0.03887432425498318, + "Y": -0.08438724830474122, + "Z": 0.6674181375627212 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img2.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img2.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 47.58208465576172, + "y": 387.94708251953125 + }, + { + "x": 81.65769958496094, + "y": 386.9919128417969 + }, + { + "x": 116.36590576171875, + "y": 386.0152893066406 + }, + { + "x": 155.58668518066406, + "y": 383.199951171875 + }, + { + "x": 192.82411193847656, + "y": 378.6794128417969 + }, + { + "x": 230.70684814453125, + "y": 380.2077331542969 + }, + { + "x": 267.64691162109375, + "y": 375.42803955078125 + }, + { + "x": 48.45001983642578, + "y": 428.0121154785156 + }, + { + "x": 84.5816650390625, + "y": 425.6501770019531 + }, + { + "x": 120.81981658935547, + "y": 423.73065185546875 + }, + { + "x": 156.1693572998047, + "y": 421.7215576171875 + }, + { + "x": 193.62135314941406, + "y": 419.7759094238281 + }, + { + "x": 230.3434295654297, + "y": 416.8225402832031 + }, + { + "x": 268.5658264160156, + "y": 415.90191650390625 + }, + { + "x": 53.115997314453125, + "y": 466.6708679199219 + }, + { + "x": 87.61579895019531, + "y": 465.2586364746094 + }, + { + "x": 121.4555892944336, + "y": 464.18951416015625 + }, + { + "x": 157.66122436523438, + "y": 459.19281005859375 + }, + { + "x": 196.57513427734375, + "y": 455.6705627441406 + }, + { + "x": 233.1301727294922, + "y": 455.81646728515625 + }, + { + "x": 268.5710144042969, + "y": 453.4003601074219 + }, + { + "x": 57.04296112060547, + "y": 506.1809997558594 + }, + { + "x": 89.7665786743164, + "y": 503.6087951660156 + }, + { + "x": 126.39433288574219, + "y": 500.77435302734375 + }, + { + "x": 162.08538818359375, + "y": 497.4930725097656 + }, + { + "x": 198.3719940185547, + "y": 497.455078125 + }, + { + "x": 233.5269012451172, + "y": 494.8520202636719 + }, + { + "x": 271.4395751953125, + "y": 491.5671081542969 + }, + { + "x": 59.418212890625, + "y": 542.21484375 + }, + { + "x": 95.68972778320312, + "y": 539.9019165039062 + }, + { + "x": 129.49537658691406, + "y": 536.7587890625 + }, + { + "x": 166.13421630859375, + "y": 536.4268188476562 + }, + { + "x": 200.7660675048828, + "y": 532.388427734375 + }, + { + "x": 238.44479370117188, + "y": 531.4462890625 + }, + { + "x": 270.9526672363281, + "y": 528.2512817382812 + }, + { + "x": 66.3905029296875, + "y": 579.25048828125 + }, + { + "x": 99.43668365478516, + "y": 573.5936279296875 + }, + { + "x": 131.8632049560547, + "y": 572.236572265625 + }, + { + "x": 168.25396728515625, + "y": 571.3568115234375 + }, + { + "x": 203.8165740966797, + "y": 568.5338134765625 + }, + { + "x": 238.2742462158203, + "y": 565.468994140625 + }, + { + "x": 275.53961181640625, + "y": 563.7921142578125 + }, + { + "x": 68.21031188964844, + "y": 613.6436767578125 + }, + { + "x": 105.1170654296875, + "y": 611.67333984375 + }, + { + "x": 136.84768676757812, + "y": 608.8203125 + }, + { + "x": 172.56845092773438, + "y": 606.746826171875 + }, + { + "x": 207.2924346923828, + "y": 601.2843017578125 + }, + { + "x": 244.06674194335938, + "y": 601.7444458007812 + }, + { + "x": 279.4287414550781, + "y": 595.60498046875 + } + ], + "reprojectionErrors": [ + { + "x": -6.226886749267578, + "y": -5.12530517578125 + }, + { + "x": -0.0237884521484375, + "y": -4.149627685546875 + }, + { + "x": 3.8492813110351562, + "y": -3.15338134765625 + }, + { + "x": 1.617431640625, + "y": -0.3192138671875 + }, + { + "x": -0.1268463134765625, + "y": 4.219390869140625 + }, + { + "x": -3.9232635498046875, + "y": 2.708404541015625 + }, + { + "x": -8.101837158203125, + "y": 7.5047607421875 + }, + { + "x": -2.945819854736328, + "y": -4.0184326171875 + }, + { + "x": 0.8253326416015625, + "y": -2.516021728515625 + }, + { + "x": 2.8201217651367188, + "y": -1.42010498046875 + }, + { + "x": 4.1363372802734375, + "y": -0.200836181640625 + }, + { + "x": 1.8773345947265625, + "y": 0.986724853515625 + }, + { + "x": -1.0375213623046875, + "y": 3.211822509765625 + }, + { + "x": -6.758209228515625, + "y": 3.43231201171875 + }, + { + "x": -3.522815704345703, + "y": -2.100982666015625 + }, + { + "x": 1.5108566284179688, + "y": -2.403228759765625 + }, + { + "x": 5.561622619628906, + "y": -2.977386474609375 + }, + { + "x": 5.7039337158203125, + "y": 0.442962646484375 + }, + { + "x": 1.6876983642578125, + "y": 2.451751708984375 + }, + { + "x": -1.3348541259765625, + "y": 0.851593017578125 + }, + { + "x": -4.529815673828125, + "y": 1.869232177734375 + }, + { + "x": -3.4195289611816406, + "y": -1.6177978515625 + }, + { + "x": 3.0274429321289062, + "y": -1.590728759765625 + }, + { + "x": 3.953643798828125, + "y": -1.196380615234375 + }, + { + "x": 4.2979583740234375, + "y": -0.256561279296875 + }, + { + "x": 2.6184234619140625, + "y": -2.467193603515625 + }, + { + "x": 0.725555419921875, + "y": -2.025390625 + }, + { + "x": -5.193206787109375, + "y": -0.8193359375 + }, + { + "x": -1.8219985961914062, + "y": 1.771240234375 + }, + { + "x": 0.720458984375, + "y": 0.73193359375 + }, + { + "x": 4.1378173828125, + "y": 0.66021728515625 + }, + { + "x": 3.22686767578125, + "y": -2.09356689453125 + }, + { + "x": 2.916107177734375, + "y": -1.0194091796875 + }, + { + "x": -1.7668609619140625, + "y": -2.927001953125 + }, + { + "x": -2.52899169921875, + "y": -2.47381591796875 + }, + { + "x": -4.877758026123047, + "y": 3.6002197265625 + }, + { + "x": 0.5395278930664062, + "y": 5.12054443359375 + }, + { + "x": 5.0105743408203125, + "y": 2.5093994140625 + }, + { + "x": 4.04522705078125, + "y": -0.42071533203125 + }, + { + "x": 2.522216796875, + "y": -1.258544921875 + }, + { + "x": 0.798126220703125, + "y": -1.71405029296875 + }, + { + "x": -4.965972900390625, + "y": -3.425048828125 + }, + { + "x": -2.8361053466796875, + "y": 7.525146484375 + }, + { + "x": -1.623931884765625, + "y": 4.5966796875 + }, + { + "x": 3.2229766845703125, + "y": 2.74896240234375 + }, + { + "x": 2.6299896240234375, + "y": 0.30804443359375 + }, + { + "x": 1.6685333251953125, + "y": 1.43157958984375 + }, + { + "x": -2.6303863525390625, + "y": -3.2021484375 + }, + { + "x": -6.731964111328125, + "y": -1.080078125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.6017837318476943, + "y": 0.01336802036282709, + "z": 0.18367388861949896 + }, + "rotation": { + "quaternion": { + "W": 0.9964190976265755, + "X": 0.027295160109863728, + "Y": -0.07959912821997, + "Z": 0.008242263417206911 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img3.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img3.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 278.32269287109375, + "y": 276.96856689453125 + }, + { + "x": 280.19256591796875, + "y": 316.82965087890625 + }, + { + "x": 281.5467224121094, + "y": 355.514404296875 + }, + { + "x": 286.22174072265625, + "y": 395.0130920410156 + }, + { + "x": 286.5236511230469, + "y": 432.68585205078125 + }, + { + "x": 290.4867248535156, + "y": 469.18670654296875 + }, + { + "x": 295.1607971191406, + "y": 505.1867980957031 + }, + { + "x": 241.518310546875, + "y": 282.1756896972656 + }, + { + "x": 242.19972229003906, + "y": 319.6182861328125 + }, + { + "x": 245.27392578125, + "y": 359.4401550292969 + }, + { + "x": 246.72425842285156, + "y": 399.5361633300781 + }, + { + "x": 251.4537811279297, + "y": 436.5616455078125 + }, + { + "x": 253.6181640625, + "y": 473.752685546875 + }, + { + "x": 258.30694580078125, + "y": 510.9333190917969 + }, + { + "x": 203.8299560546875, + "y": 282.4507141113281 + }, + { + "x": 205.36619567871094, + "y": 324.4368591308594 + }, + { + "x": 208.24661254882812, + "y": 361.4411315917969 + }, + { + "x": 211.3353729248047, + "y": 403.2913513183594 + }, + { + "x": 213.85911560058594, + "y": 440.3751525878906 + }, + { + "x": 218.1482391357422, + "y": 478.4971008300781 + }, + { + "x": 222.4086151123047, + "y": 513.8073120117188 + }, + { + "x": 167.15512084960938, + "y": 289.1336975097656 + }, + { + "x": 168.36180114746094, + "y": 327.235595703125 + }, + { + "x": 169.39100646972656, + "y": 366.126220703125 + }, + { + "x": 174.47628784179688, + "y": 405.5176086425781 + }, + { + "x": 179.20069885253906, + "y": 445.7399597167969 + }, + { + "x": 181.02764892578125, + "y": 483.7950744628906 + }, + { + "x": 186.05491638183594, + "y": 519.3391723632812 + }, + { + "x": 128.08416748046875, + "y": 293.35675048828125 + }, + { + "x": 131.70201110839844, + "y": 332.05401611328125 + }, + { + "x": 133.40023803710938, + "y": 372.781494140625 + }, + { + "x": 138.24473571777344, + "y": 410.4683837890625 + }, + { + "x": 142.04014587402344, + "y": 448.2770690917969 + }, + { + "x": 144.41062927246094, + "y": 485.3305969238281 + }, + { + "x": 150.82106018066406, + "y": 524.3759765625 + }, + { + "x": 92.52726745605469, + "y": 297.24273681640625 + }, + { + "x": 95.15409851074219, + "y": 335.7271728515625 + }, + { + "x": 98.35407257080078, + "y": 375.7426452636719 + }, + { + "x": 101.35669708251953, + "y": 415.390625 + }, + { + "x": 107.62368774414062, + "y": 453.6150817871094 + }, + { + "x": 112.04718017578125, + "y": 488.3705749511719 + }, + { + "x": 116.48348999023438, + "y": 527.9832763671875 + }, + { + "x": 57.2330207824707, + "y": 300.58074951171875 + }, + { + "x": 59.05543899536133, + "y": 340.40478515625 + }, + { + "x": 62.69224548339844, + "y": 379.9523010253906 + }, + { + "x": 67.84745025634766, + "y": 419.723388671875 + }, + { + "x": 71.14450073242188, + "y": 456.8924255371094 + }, + { + "x": 77.27617645263672, + "y": 495.6591491699219 + }, + { + "x": 80.70528411865234, + "y": 532.2781982421875 + } + ], + "reprojectionErrors": [ + { + "x": -7.904937744140625, + "y": 7.000579833984375 + }, + { + "x": -6.72528076171875, + "y": 4.01812744140625 + }, + { + "x": -5.04705810546875, + "y": 2.00457763671875 + }, + { + "x": -6.7066650390625, + "y": -1.02850341796875 + }, + { + "x": -4.010009765625, + "y": -2.43963623046875 + }, + { + "x": -4.9912109375, + "y": -2.88104248046875 + }, + { + "x": -6.70001220703125, + "y": -3.022247314453125 + }, + { + "x": -3.7827301025390625, + "y": 3.264923095703125 + }, + { + "x": -1.2589569091796875, + "y": 3.441986083984375 + }, + { + "x": -1.1463623046875, + "y": 1.023956298828125 + }, + { + "x": 0.5718994140625, + "y": -1.882171630859375 + }, + { + "x": -1.007080078125, + "y": -1.929931640625 + }, + { + "x": -0.0388336181640625, + "y": -2.353546142578125 + }, + { + "x": -1.61273193359375, + "y": -2.975341796875 + }, + { + "x": -0.128692626953125, + "y": 4.522216796875 + }, + { + "x": 1.706268310546875, + "y": 0.927154541015625 + }, + { + "x": 2.1773529052734375, + "y": 2.0892333984375 + }, + { + "x": 2.4205322265625, + "y": -1.817474365234375 + }, + { + "x": 3.2093658447265625, + "y": -1.178619384765625 + }, + { + "x": 2.213592529296875, + "y": -1.796844482421875 + }, + { + "x": 1.2275390625, + "y": 0.17962646484375 + }, + { + "x": 1.0739593505859375, + "y": -0.563720703125 + }, + { + "x": 3.41583251953125, + "y": 0.52923583984375 + }, + { + "x": 5.9139862060546875, + "y": 0.599151611328125 + }, + { + "x": 4.335052490234375, + "y": -0.06390380859375 + }, + { + "x": 3.0961761474609375, + "y": -1.788055419921875 + }, + { + "x": 4.7341461181640625, + "y": -1.57305908203125 + }, + { + "x": 3.151336669921875, + "y": 0.9268798828125 + }, + { + "x": 3.141815185546875, + "y": -3.12078857421875 + }, + { + "x": 3.262176513671875, + "y": -1.78509521484375 + }, + { + "x": 5.2793426513671875, + "y": -2.72406005859375 + }, + { + "x": 4.127655029296875, + "y": -0.8646240234375 + }, + { + "x": 4.0026702880859375, + "y": 0.632965087890625 + }, + { + "x": 5.2804107666015625, + "y": 2.647918701171875 + }, + { + "x": 2.4962310791015625, + "y": 2.435302734375 + }, + { + "x": 0.063385009765625, + "y": -5.267303466796875 + }, + { + "x": 1.3778533935546875, + "y": -2.844024658203125 + }, + { + "x": 2.0946197509765625, + "y": -2.207061767578125 + }, + { + "x": 2.9843978881835938, + "y": -1.45550537109375 + }, + { + "x": 0.585693359375, + "y": 0.469085693359375 + }, + { + "x": 0.0066070556640625, + "y": 5.614410400390625 + }, + { + "x": -0.608978271484375, + "y": 5.65655517578125 + }, + { + "x": -5.020351409912109, + "y": -6.787353515625 + }, + { + "x": -2.68365478515625, + "y": -4.789886474609375 + }, + { + "x": -2.187847137451172, + "y": -2.78271484375 + }, + { + "x": -3.2366943359375, + "y": -1.26336669921875 + }, + { + "x": -2.4533843994140625, + "y": 2.59625244140625 + }, + { + "x": -4.530464172363281, + "y": 4.59893798828125 + }, + { + "x": -3.9304885864257812, + "y": 8.492431640625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.43932414834330114, + "y": -0.05295538911918872, + "z": 0.20765440231573976 + }, + "rotation": { + "quaternion": { + "W": 0.7322481006910944, + "X": -0.051996919454552995, + "Y": -0.06379169849348035, + "Z": 0.676047083127232 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img4.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img4.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 393.0447998046875, + "y": 146.1237030029297 + }, + { + "x": 433.80767822265625, + "y": 146.2071075439453 + }, + { + "x": 474.7120361328125, + "y": 147.72950744628906 + }, + { + "x": 518.97705078125, + "y": 148.00271606445312 + }, + { + "x": 560.9351806640625, + "y": 145.2408905029297 + }, + { + "x": 601.586669921875, + "y": 151.4542694091797 + }, + { + "x": 641.298583984375, + "y": 148.70452880859375 + }, + { + "x": 390.39361572265625, + "y": 187.56809997558594 + }, + { + "x": 432.7370300292969, + "y": 188.08863830566406 + }, + { + "x": 477.3218994140625, + "y": 188.6260223388672 + }, + { + "x": 516.56689453125, + "y": 187.8649139404297 + }, + { + "x": 558.9270629882812, + "y": 189.36480712890625 + }, + { + "x": 598.1591796875, + "y": 189.3226318359375 + }, + { + "x": 639.3053588867188, + "y": 192.02999877929688 + }, + { + "x": 389.7260437011719, + "y": 231.38311767578125 + }, + { + "x": 432.6291198730469, + "y": 230.47457885742188 + }, + { + "x": 472.09088134765625, + "y": 232.0704345703125 + }, + { + "x": 513.2752685546875, + "y": 228.15965270996094 + }, + { + "x": 558.4293212890625, + "y": 227.01210021972656 + }, + { + "x": 598.2810668945312, + "y": 231.09295654296875 + }, + { + "x": 635.7406616210938, + "y": 231.3721160888672 + }, + { + "x": 390.3326721191406, + "y": 274.0868225097656 + }, + { + "x": 430.6459655761719, + "y": 272.9315185546875 + }, + { + "x": 473.0535888671875, + "y": 270.8875732421875 + }, + { + "x": 514.6128540039062, + "y": 271.0921936035156 + }, + { + "x": 555.7376708984375, + "y": 273.2221984863281 + }, + { + "x": 594.4256591796875, + "y": 273.5888366699219 + }, + { + "x": 636.1849975585938, + "y": 272.72137451171875 + }, + { + "x": 387.59857177734375, + "y": 316.0518493652344 + }, + { + "x": 432.7325744628906, + "y": 314.4869079589844 + }, + { + "x": 471.9953308105469, + "y": 312.69091796875 + }, + { + "x": 515.2789306640625, + "y": 314.4367980957031 + }, + { + "x": 554.0489501953125, + "y": 311.98095703125 + }, + { + "x": 596.6883544921875, + "y": 313.91162109375 + }, + { + "x": 631.5781860351562, + "y": 312.900146484375 + }, + { + "x": 391.0345458984375, + "y": 358.3433837890625 + }, + { + "x": 432.07684326171875, + "y": 353.1064453125 + }, + { + "x": 470.4060363769531, + "y": 352.6355895996094 + }, + { + "x": 511.4693603515625, + "y": 355.33489990234375 + }, + { + "x": 555.0400390625, + "y": 354.3261413574219 + }, + { + "x": 592.7457275390625, + "y": 351.4841003417969 + }, + { + "x": 633.5960083007812, + "y": 353.3863830566406 + }, + { + "x": 387.2605895996094, + "y": 398.5990295410156 + }, + { + "x": 432.4440002441406, + "y": 397.51214599609375 + }, + { + "x": 471.6838684082031, + "y": 394.8925476074219 + }, + { + "x": 512.710205078125, + "y": 395.2293701171875 + }, + { + "x": 552.7420654296875, + "y": 391.0685119628906 + }, + { + "x": 592.8035888671875, + "y": 392.53741455078125 + }, + { + "x": 634.0438232421875, + "y": 388.27581787109375 + } + ], + "reprojectionErrors": [ + { + "x": 13.471710205078125, + "y": -14.693374633789062 + }, + { + "x": 14.311676025390625, + "y": -8.59588623046875 + }, + { + "x": 11.488525390625, + "y": -4.4605712890625 + }, + { + "x": 2.21209716796875, + "y": 0.4644775390625 + }, + { + "x": -7.48809814453125, + "y": 8.018875122070312 + }, + { + "x": -18.30462646484375, + "y": 6.23809814453125 + }, + { + "x": -30.3414306640625, + "y": 13.099563598632812 + }, + { + "x": 12.278045654296875, + "y": -14.058990478515625 + }, + { + "x": 12.90728759765625, + "y": -10.134185791015625 + }, + { + "x": 7.55755615234375, + "y": -6.6128387451171875 + }, + { + "x": 4.27740478515625, + "y": -2.13128662109375 + }, + { + "x": -4.99566650390625, + "y": -0.2084197998046875 + }, + { + "x": -13.686279296875, + "y": 2.993194580078125 + }, + { + "x": -26.55377197265625, + "y": 3.211181640625 + }, + { + "x": 8.8621826171875, + "y": -13.184158325195312 + }, + { + "x": 10.393768310546875, + "y": -9.790695190429688 + }, + { + "x": 11.392791748046875, + "y": -9.123855590820312 + }, + { + "x": 7.20556640625, + "y": -3.1440582275390625 + }, + { + "x": -3.98846435546875, + "y": -0.0973358154296875 + }, + { + "x": -12.55804443359375, + "y": -2.42877197265625 + }, + { + "x": -21.108642578125, + "y": -1.091217041015625 + }, + { + "x": 3.91064453125, + "y": -8.33612060546875 + }, + { + "x": 9.595733642578125, + "y": -6.913848876953125 + }, + { + "x": 8.953155517578125, + "y": -4.627532958984375 + }, + { + "x": 5.48431396484375, + "y": -4.611053466796875 + }, + { + "x": -0.76019287109375, + "y": -6.538604736328125 + }, + { + "x": -7.38861083984375, + "y": -6.71917724609375 + }, + { + "x": -19.5802001953125, + "y": -5.680084228515625 + }, + { + "x": 2.012359619140625, + "y": 0.396484375 + }, + { + "x": 4.553070068359375, + "y": -0.285552978515625 + }, + { + "x": 8.446044921875, + "y": -0.523529052734375 + }, + { + "x": 4.41265869140625, + "y": -4.119293212890625 + }, + { + "x": 1.49444580078125, + "y": -3.353179931640625 + }, + { + "x": -8.26837158203125, + "y": -6.83331298828125 + }, + { + "x": -12.90130615234375, + "y": -7.24786376953125 + }, + { + "x": -6.372894287109375, + "y": 12.27130126953125 + }, + { + "x": 2.0609130859375, + "y": 12.406036376953125 + }, + { + "x": 8.373321533203125, + "y": 8.273223876953125 + }, + { + "x": 7.792724609375, + "y": 1.399169921875 + }, + { + "x": 1.10113525390625, + "y": -1.395233154296875 + }, + { + "x": -2.86834716796875, + "y": -2.032196044921875 + }, + { + "x": -12.74005126953125, + "y": -7.129119873046875 + }, + { + "x": -7.89886474609375, + "y": 30.01934814453125 + }, + { + "x": -1.665313720703125, + "y": 22.753509521484375 + }, + { + "x": 5.32763671875, + "y": 17.862548828125 + }, + { + "x": 6.09637451171875, + "y": 10.736083984375 + }, + { + "x": 4.031494140625, + "y": 8.72918701171875 + }, + { + "x": -1.38818359375, + "y": 1.6326904296875 + }, + { + "x": -10.89324951171875, + "y": 0.7388916015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.22362051174544703, + "y": -0.11931219576185513, + "z": 0.15681637317153252 + }, + "rotation": { + "quaternion": { + "W": 0.9835415888430693, + "X": -0.09979733415213937, + "Y": -0.13931607094541568, + "Z": -0.057249170199304235 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img5.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img5.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 636.8345947265625, + "y": 87.37153625488281 + }, + { + "x": 635.8081665039062, + "y": 128.37753295898438 + }, + { + "x": 633.6685180664062, + "y": 167.79534912109375 + }, + { + "x": 634.2694702148438, + "y": 208.64962768554688 + }, + { + "x": 630.8814697265625, + "y": 249.4177703857422 + }, + { + "x": 632.113525390625, + "y": 289.650634765625 + }, + { + "x": 631.8580932617188, + "y": 328.0660705566406 + }, + { + "x": 597.8304443359375, + "y": 87.92281341552734 + }, + { + "x": 595.2594604492188, + "y": 125.91130828857422 + }, + { + "x": 594.8685302734375, + "y": 166.33340454101562 + }, + { + "x": 592.6983032226562, + "y": 208.7557373046875 + }, + { + "x": 593.987548828125, + "y": 249.06484985351562 + }, + { + "x": 591.2827758789062, + "y": 288.65875244140625 + }, + { + "x": 591.2919921875, + "y": 330.4247741699219 + }, + { + "x": 557.570556640625, + "y": 82.47600555419922 + }, + { + "x": 555.7173461914062, + "y": 125.19728088378906 + }, + { + "x": 555.40234375, + "y": 163.02584838867188 + }, + { + "x": 553.6885986328125, + "y": 208.06129455566406 + }, + { + "x": 552.12890625, + "y": 247.48194885253906 + }, + { + "x": 551.6388549804688, + "y": 289.4029846191406 + }, + { + "x": 550.4080810546875, + "y": 329.5372619628906 + }, + { + "x": 516.78369140625, + "y": 84.06240844726562 + }, + { + "x": 514.3887939453125, + "y": 123.17581176757812 + }, + { + "x": 512.0332641601562, + "y": 163.4620819091797 + }, + { + "x": 512.3532104492188, + "y": 205.685546875 + }, + { + "x": 512.428955078125, + "y": 249.09878540039062 + }, + { + "x": 509.40045166015625, + "y": 290.2305603027344 + }, + { + "x": 509.4172058105469, + "y": 331.26641845703125 + }, + { + "x": 472.7762145996094, + "y": 83.45388793945312 + }, + { + "x": 473.3385009765625, + "y": 122.82231140136719 + }, + { + "x": 470.16729736328125, + "y": 165.5843505859375 + }, + { + "x": 470.5060119628906, + "y": 205.48123168945312 + }, + { + "x": 469.4361877441406, + "y": 247.77813720703125 + }, + { + "x": 467.6297302246094, + "y": 288.3961486816406 + }, + { + "x": 468.4074401855469, + "y": 331.7266540527344 + }, + { + "x": 431.9507141113281, + "y": 81.49929809570312 + }, + { + "x": 431.1079406738281, + "y": 122.52943420410156 + }, + { + "x": 429.4308166503906, + "y": 164.0293731689453 + }, + { + "x": 427.5570373535156, + "y": 207.4093780517578 + }, + { + "x": 429.5206298828125, + "y": 249.24935913085938 + }, + { + "x": 428.522216796875, + "y": 288.4290466308594 + }, + { + "x": 427.2348327636719, + "y": 332.75164794921875 + }, + { + "x": 391.8165588378906, + "y": 80.65885925292969 + }, + { + "x": 388.4989929199219, + "y": 122.12986755371094 + }, + { + "x": 387.3624572753906, + "y": 164.7462921142578 + }, + { + "x": 386.976806640625, + "y": 207.50746154785156 + }, + { + "x": 384.6209411621094, + "y": 249.66078186035156 + }, + { + "x": 386.4947814941406, + "y": 292.4855041503906 + }, + { + "x": 384.2541809082031, + "y": 333.59368896484375 + } + ], + "reprojectionErrors": [ + { + "x": -25.8514404296875, + "y": 11.556510925292969 + }, + { + "x": -22.61285400390625, + "y": 3.366302490234375 + }, + { + "x": -18.13427734375, + "y": -1.35638427734375 + }, + { + "x": -16.25848388671875, + "y": -5.469970703125 + }, + { + "x": -10.24322509765625, + "y": -7.2655181884765625 + }, + { + "x": -8.6834716796875, + "y": -6.084075927734375 + }, + { + "x": -5.45562744140625, + "y": -0.406707763671875 + }, + { + "x": -15.70843505859375, + "y": 7.075584411621094 + }, + { + "x": -11.681396484375, + "y": 2.8916702270507812 + }, + { + "x": -9.74810791015625, + "y": -1.722930908203125 + }, + { + "x": -5.94134521484375, + "y": -6.15142822265625 + }, + { + "x": -5.490966796875, + "y": -6.0738372802734375 + }, + { + "x": -0.9334716796875, + "y": -2.654754638671875 + }, + { + "x": 1.0345458984375, + "y": 1.4832763671875 + }, + { + "x": -6.2572021484375, + "y": 8.32757568359375 + }, + { + "x": -3.81451416015625, + "y": 0.46050262451171875 + }, + { + "x": -2.8739013671875, + "y": -0.37481689453125 + }, + { + "x": -0.49493408203125, + "y": -6.0748291015625 + }, + { + "x": 1.77349853515625, + "y": -3.5881805419921875 + }, + { + "x": 3.0201416015625, + "y": -0.76922607421875 + }, + { + "x": 5.06048583984375, + "y": 6.96630859375 + }, + { + "x": 1.56951904296875, + "y": 2.25341796875 + }, + { + "x": 3.5584716796875, + "y": -0.8896484375 + }, + { + "x": 5.48223876953125, + "y": -2.916046142578125 + }, + { + "x": 4.70208740234375, + "y": -4.3643341064453125 + }, + { + "x": 4.1348876953125, + "y": -4.230621337890625 + }, + { + "x": 6.63739013671875, + "y": 1.248870849609375 + }, + { + "x": 6.056243896484375, + "y": 10.223846435546875 + }, + { + "x": 10.2318115234375, + "y": -1.9505538940429688 + }, + { + "x": 8.117523193359375, + "y": -4.159538269042969 + }, + { + "x": 9.6341552734375, + "y": -7.3056793212890625 + }, + { + "x": 7.52777099609375, + "y": -4.878326416015625 + }, + { + "x": 6.704803466796875, + "y": -1.8551025390625 + }, + { + "x": 6.479583740234375, + "y": 6.17266845703125 + }, + { + "x": 3.51544189453125, + "y": 15.193603515625 + }, + { + "x": 13.0584716796875, + "y": -5.169761657714844 + }, + { + "x": 11.026123046875, + "y": -7.771125793457031 + }, + { + "x": 9.630462646484375, + "y": -8.20001220703125 + }, + { + "x": 8.212646484375, + "y": -7.58447265625 + }, + { + "x": 2.7144775390625, + "y": -2.1805572509765625 + }, + { + "x": -0.092681884765625, + "y": 9.505584716796875 + }, + { + "x": -2.914215087890625, + "y": 20.103790283203125 + }, + { + "x": 12.229644775390625, + "y": -9.906692504882812 + }, + { + "x": 11.139678955078125, + "y": -11.591117858886719 + }, + { + "x": 7.553009033203125, + "y": -11.570968627929688 + }, + { + "x": 2.86456298828125, + "y": -8.527999877929688 + }, + { + "x": -0.24517822265625, + "y": -1.3430328369140625 + }, + { + "x": -8.023223876953125, + "y": 9.130157470703125 + }, + { + "x": -12.180450439453125, + "y": 25.776031494140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.07394718068371027, + "y": -0.16473256027576824, + "z": 0.18964888524288548 + }, + "rotation": { + "quaternion": { + "W": 0.7452394827664952, + "X": -0.15734544149806312, + "Y": -0.0011344269088612482, + "Z": 0.6479654608397695 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img6.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img6.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 455.3461608886719, + "y": 88.4706802368164 + }, + { + "x": 456.07440185546875, + "y": 133.5903778076172 + }, + { + "x": 455.5805969238281, + "y": 174.4665069580078 + }, + { + "x": 459.04736328125, + "y": 217.7899169921875 + }, + { + "x": 458.0411682128906, + "y": 260.53533935546875 + }, + { + "x": 463.276611328125, + "y": 302.5823974609375 + }, + { + "x": 467.6583557128906, + "y": 340.5484313964844 + }, + { + "x": 413.8510437011719, + "y": 95.27457427978516 + }, + { + "x": 412.2783203125, + "y": 134.65521240234375 + }, + { + "x": 416.02264404296875, + "y": 177.89817810058594 + }, + { + "x": 415.40484619140625, + "y": 223.192138671875 + }, + { + "x": 421.08367919921875, + "y": 264.9447021484375 + }, + { + "x": 420.04522705078125, + "y": 305.4936218261719 + }, + { + "x": 424.6544494628906, + "y": 348.7208251953125 + }, + { + "x": 371.5259094238281, + "y": 92.62222290039062 + }, + { + "x": 370.7994384765625, + "y": 138.31947326660156 + }, + { + "x": 374.205810546875, + "y": 177.65687561035156 + }, + { + "x": 375.1907043457031, + "y": 226.340576171875 + }, + { + "x": 377.0697937011719, + "y": 266.8770446777344 + }, + { + "x": 380.50042724609375, + "y": 311.18536376953125 + }, + { + "x": 381.69097900390625, + "y": 352.0654602050781 + }, + { + "x": 328.15863037109375, + "y": 100.27325439453125 + }, + { + "x": 327.80419921875, + "y": 141.5409393310547 + }, + { + "x": 327.44793701171875, + "y": 183.33506774902344 + }, + { + "x": 332.3667907714844, + "y": 227.8620147705078 + }, + { + "x": 336.2343444824219, + "y": 273.52459716796875 + }, + { + "x": 336.7057800292969, + "y": 315.6478271484375 + }, + { + "x": 340.6027526855469, + "y": 358.7174987792969 + }, + { + "x": 282.47430419921875, + "y": 104.22773742675781 + }, + { + "x": 288.28118896484375, + "y": 146.540771484375 + }, + { + "x": 285.46673583984375, + "y": 191.32989501953125 + }, + { + "x": 289.5433044433594, + "y": 232.7791748046875 + }, + { + "x": 292.4666442871094, + "y": 275.8541564941406 + }, + { + "x": 293.74639892578125, + "y": 318.5833740234375 + }, + { + "x": 298.3121337890625, + "y": 363.490478515625 + }, + { + "x": 240.91195678710938, + "y": 106.5075454711914 + }, + { + "x": 243.49365234375, + "y": 149.5095672607422 + }, + { + "x": 245.38380432128906, + "y": 194.64105224609375 + }, + { + "x": 246.28822326660156, + "y": 238.6129608154297 + }, + { + "x": 251.8776092529297, + "y": 282.2144775390625 + }, + { + "x": 254.52149963378906, + "y": 322.4085693359375 + }, + { + "x": 259.4861755371094, + "y": 370.01959228515625 + }, + { + "x": 200.71678161621094, + "y": 110.47259521484375 + }, + { + "x": 199.2183380126953, + "y": 154.23446655273438 + }, + { + "x": 202.63465881347656, + "y": 199.13233947753906 + }, + { + "x": 205.31190490722656, + "y": 243.87380981445312 + }, + { + "x": 206.72164916992188, + "y": 287.5780944824219 + }, + { + "x": 213.3358612060547, + "y": 332.6598205566406 + }, + { + "x": 214.29978942871094, + "y": 374.3189392089844 + } + ], + "reprojectionErrors": [ + { + "x": -16.53302001953125, + "y": 11.986984252929688 + }, + { + "x": -14.04766845703125, + "y": 4.605499267578125 + }, + { + "x": -10.28094482421875, + "y": 2.1641845703125 + }, + { + "x": -10.413787841796875, + "y": -2.00836181640625 + }, + { + "x": -6.010986328125, + "y": -4.866668701171875 + }, + { + "x": -7.78533935546875, + "y": -6.269378662109375 + }, + { + "x": -8.639617919921875, + "y": -2.8121337890625 + }, + { + "x": -8.90838623046875, + "y": 5.043243408203125 + }, + { + "x": -4.34271240234375, + "y": 4.5574188232421875 + }, + { + "x": -5.037109375, + "y": 0.9494476318359375 + }, + { + "x": -1.310760498046875, + "y": -3.947998046875 + }, + { + "x": -3.82073974609375, + "y": -4.5203857421875 + }, + { + "x": 0.448638916015625, + "y": -3.08245849609375 + }, + { + "x": -0.86572265625, + "y": -3.4921875 + }, + { + "x": -2.577362060546875, + "y": 7.546974182128906 + }, + { + "x": 0.886810302734375, + "y": 1.974273681640625 + }, + { + "x": 0.271942138671875, + "y": 3.5494232177734375 + }, + { + "x": 2.133880615234375, + "y": -3.4102935791015625 + }, + { + "x": 3.15869140625, + "y": -1.386993408203125 + }, + { + "x": 2.69073486328125, + "y": -2.27435302734375 + }, + { + "x": 4.523406982421875, + "y": 1.154052734375 + }, + { + "x": 2.46600341796875, + "y": -0.26229095458984375 + }, + { + "x": 5.262786865234375, + "y": -0.0953826904296875 + }, + { + "x": 8.110992431640625, + "y": 0.38568115234375 + }, + { + "x": 5.735137939453125, + "y": -0.999664306640625 + }, + { + "x": 4.4632568359375, + "y": -2.6273193359375 + }, + { + "x": 6.641845703125, + "y": 0.205780029296875 + }, + { + "x": 5.450927734375, + "y": 3.04296875 + }, + { + "x": 7.2628173828125, + "y": -4.385581970214844 + }, + { + "x": 3.556396484375, + "y": -3.8655548095703125 + }, + { + "x": 8.515380859375, + "y": -4.9229736328125 + }, + { + "x": 6.628814697265625, + "y": -1.713348388671875 + }, + { + "x": 5.94244384765625, + "y": 0.82757568359375 + }, + { + "x": 6.948150634765625, + "y": 4.702362060546875 + }, + { + "x": 4.7178955078125, + "y": 7.4197998046875 + }, + { + "x": 5.1079559326171875, + "y": -6.8458709716796875 + }, + { + "x": 4.23046875, + "y": -5.5186614990234375 + }, + { + "x": 4.0815582275390625, + "y": -5.3580169677734375 + }, + { + "x": 4.9566497802734375, + "y": -3.0431671142578125 + }, + { + "x": 1.186309814453125, + "y": 0.6697998046875 + }, + { + "x": 0.4023284912109375, + "y": 8.8525390625 + }, + { + "x": -2.660186767578125, + "y": 10.71685791015625 + }, + { + "x": -1.548095703125, + "y": -11.004341125488281 + }, + { + "x": 1.1947174072265625, + "y": -8.832504272460938 + }, + { + "x": -0.9492034912109375, + "y": -6.7623443603515625 + }, + { + "x": -2.3250274658203125, + "y": -3.46612548828125 + }, + { + "x": -2.403350830078125, + "y": 1.973876953125 + }, + { + "x": -7.6551055908203125, + "y": 7.18170166015625 + }, + { + "x": -7.224395751953125, + "y": 16.9979248046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2375256643580054, + "y": -0.1624865804812359, + "z": 0.1881619568115605 + }, + "rotation": { + "quaternion": { + "W": 0.7686315177885648, + "X": -0.10651669824184458, + "Y": -0.043534213215419, + "Z": 0.6292571454798248 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img7.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img7.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 362.1656494140625, + "y": 79.41498565673828 + }, + { + "x": 361.2724304199219, + "y": 127.33275604248047 + }, + { + "x": 359.3861083984375, + "y": 170.2919921875 + }, + { + "x": 362.26983642578125, + "y": 215.67605590820312 + }, + { + "x": 360.41278076171875, + "y": 260.66949462890625 + }, + { + "x": 365.63726806640625, + "y": 304.6282653808594 + }, + { + "x": 369.53466796875, + "y": 344.5609130859375 + }, + { + "x": 318.9293212890625, + "y": 86.79485321044922 + }, + { + "x": 315.780029296875, + "y": 128.51251220703125 + }, + { + "x": 319.34814453125, + "y": 173.84161376953125 + }, + { + "x": 317.8908386230469, + "y": 220.95960998535156 + }, + { + "x": 323.2681579589844, + "y": 265.6412048339844 + }, + { + "x": 321.3259582519531, + "y": 308.1543884277344 + }, + { + "x": 326.3320617675781, + "y": 353.3467712402344 + }, + { + "x": 276.0723876953125, + "y": 83.59334564208984 + }, + { + "x": 275.2507629394531, + "y": 132.46014404296875 + }, + { + "x": 276.2997741699219, + "y": 174.03338623046875 + }, + { + "x": 276.3366394042969, + "y": 224.6571502685547 + }, + { + "x": 278.15997314453125, + "y": 267.5990295410156 + }, + { + "x": 282.1784973144531, + "y": 314.9951477050781 + }, + { + "x": 282.2859191894531, + "y": 357.20831298828125 + }, + { + "x": 231.5353240966797, + "y": 91.82939147949219 + }, + { + "x": 230.38845825195312, + "y": 134.7343292236328 + }, + { + "x": 228.31948852539062, + "y": 179.58839416503906 + }, + { + "x": 232.64193725585938, + "y": 226.47982788085938 + }, + { + "x": 236.31629943847656, + "y": 274.8445129394531 + }, + { + "x": 236.67213439941406, + "y": 319.2178955078125 + }, + { + "x": 240.91851806640625, + "y": 365.45208740234375 + }, + { + "x": 184.33531188964844, + "y": 95.49881744384766 + }, + { + "x": 189.30532836914062, + "y": 140.63290405273438 + }, + { + "x": 185.55589294433594, + "y": 187.58932495117188 + }, + { + "x": 189.37379455566406, + "y": 232.7018280029297 + }, + { + "x": 191.3369140625, + "y": 277.6615905761719 + }, + { + "x": 192.15377807617188, + "y": 322.7840270996094 + }, + { + "x": 196.80575561523438, + "y": 370.3467102050781 + }, + { + "x": 141.50515747070312, + "y": 98.05821228027344 + }, + { + "x": 143.29747009277344, + "y": 143.49029541015625 + }, + { + "x": 144.74105834960938, + "y": 191.90626525878906 + }, + { + "x": 144.48240661621094, + "y": 238.26095581054688 + }, + { + "x": 149.3986053466797, + "y": 284.5057373046875 + }, + { + "x": 152.1668701171875, + "y": 327.29730224609375 + }, + { + "x": 157.16822814941406, + "y": 377.8799743652344 + }, + { + "x": 100.4705581665039, + "y": 102.26273345947266 + }, + { + "x": 97.52413940429688, + "y": 148.50299072265625 + }, + { + "x": 100.51052856445312, + "y": 196.30679321289062 + }, + { + "x": 102.6190185546875, + "y": 244.4636688232422 + }, + { + "x": 103.35623168945312, + "y": 290.8063049316406 + }, + { + "x": 109.81004333496094, + "y": 338.5015869140625 + }, + { + "x": 111.13785552978516, + "y": 382.97406005859375 + } + ], + "reprojectionErrors": [ + { + "x": -14.62469482421875, + "y": 9.792472839355469 + }, + { + "x": -11.104644775390625, + "y": 2.7937240600585938 + }, + { + "x": -6.553131103515625, + "y": 1.3507537841796875 + }, + { + "x": -6.732452392578125, + "y": -1.9066314697265625 + }, + { + "x": -2.13092041015625, + "y": -4.149444580078125 + }, + { + "x": -4.569976806640625, + "y": -4.719635009765625 + }, + { + "x": -5.640045166015625, + "y": -0.61138916015625 + }, + { + "x": -7.950836181640625, + "y": 3.2098007202148438 + }, + { + "x": -2.381317138671875, + "y": 3.42669677734375 + }, + { + "x": -3.49298095703125, + "y": 0.659423828125 + }, + { + "x": 0.457794189453125, + "y": -3.255279541015625 + }, + { + "x": -2.388153076171875, + "y": -4.0775146484375 + }, + { + "x": 2.124176025390625, + "y": -2.06024169921875 + }, + { + "x": -0.27215576171875, + "y": -2.0355224609375 + }, + { + "x": -3.492279052734375, + "y": 7.24853515625 + }, + { + "x": -0.481475830078125, + "y": 1.3834991455078125 + }, + { + "x": 0.69232177734375, + "y": 3.4716796875 + }, + { + "x": 2.912628173828125, + "y": -2.81573486328125 + }, + { + "x": 3.381622314453125, + "y": -0.7305908203125 + }, + { + "x": 1.69146728515625, + "y": -2.392669677734375 + }, + { + "x": 3.94927978515625, + "y": 1.85186767578125 + }, + { + "x": 0.668670654296875, + "y": -0.10715484619140625 + }, + { + "x": 3.746246337890625, + "y": 1.1126251220703125 + }, + { + "x": 7.776336669921875, + "y": 1.0778656005859375 + }, + { + "x": 5.4461517333984375, + "y": -0.283172607421875 + }, + { + "x": 3.795928955078125, + "y": -2.389312744140625 + }, + { + "x": 5.49688720703125, + "y": 0.241607666015625 + }, + { + "x": 3.34075927734375, + "y": 1.775634765625 + }, + { + "x": 5.3579864501953125, + "y": -2.8496780395507812 + }, + { + "x": 2.0293121337890625, + "y": -2.675872802734375 + }, + { + "x": 7.4466400146484375, + "y": -3.5920562744140625 + }, + { + "x": 5.3238372802734375, + "y": -1.9140472412109375 + }, + { + "x": 5.0836944580078125, + "y": 0.6854248046875 + }, + { + "x": 6.01837158203125, + "y": 3.9100341796875 + }, + { + "x": 3.1472320556640625, + "y": 5.501953125 + }, + { + "x": 3.3689727783203125, + "y": -4.431831359863281 + }, + { + "x": 2.8937835693359375, + "y": -3.3076629638671875 + }, + { + "x": 2.789215087890625, + "y": -4.394073486328125 + }, + { + "x": 4.4093475341796875, + "y": -2.6264801025390625 + }, + { + "x": 0.877655029296875, + "y": 0.0638427734375 + }, + { + "x": -0.4824981689453125, + "y": 7.040924072265625 + }, + { + "x": -4.051513671875, + "y": 7.081939697265625 + }, + { + "x": -2.9173126220703125, + "y": -7.60455322265625 + }, + { + "x": 0.9825668334960938, + "y": -5.9694671630859375 + }, + { + "x": -1.0340499877929688, + "y": -5.08013916015625 + }, + { + "x": -2.1560211181640625, + "y": -3.7049560546875 + }, + { + "x": -1.8895416259765625, + "y": 0.345245361328125 + }, + { + "x": -7.3220367431640625, + "y": 3.926177978515625 + }, + { + "x": -7.6104278564453125, + "y": 11.636749267578125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.30492489701612646, + "y": -0.15925605145563723, + "z": 0.17678373117025264 + }, + "rotation": { + "quaternion": { + "W": 0.7633747522879483, + "X": -0.08013754272074777, + "Y": -0.034401202160314434, + "Z": 0.6400418104357865 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img8.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img8.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 406.6243591308594, + "y": 55.041847229003906 + }, + { + "x": 407.2898864746094, + "y": 100.03807830810547 + }, + { + "x": 407.3088073730469, + "y": 143.02200317382812 + }, + { + "x": 410.6024169921875, + "y": 187.6278533935547 + }, + { + "x": 409.8705139160156, + "y": 232.12930297851562 + }, + { + "x": 413.8531799316406, + "y": 275.293212890625 + }, + { + "x": 417.76336669921875, + "y": 317.52349853515625 + }, + { + "x": 363.7796630859375, + "y": 60.40537643432617 + }, + { + "x": 362.9483947753906, + "y": 101.52336120605469 + }, + { + "x": 365.1080322265625, + "y": 146.1951446533203 + }, + { + "x": 365.2458801269531, + "y": 192.33889770507812 + }, + { + "x": 369.39739990234375, + "y": 235.75936889648438 + }, + { + "x": 369.96942138671875, + "y": 279.5609130859375 + }, + { + "x": 373.66796875, + "y": 324.7041931152344 + }, + { + "x": 319.770263671875, + "y": 59.356956481933594 + }, + { + "x": 319.6926574707031, + "y": 105.6004867553711 + }, + { + "x": 321.515625, + "y": 147.43515014648438 + }, + { + "x": 323.06884765625, + "y": 196.2946014404297 + }, + { + "x": 324.3783874511719, + "y": 239.3573455810547 + }, + { + "x": 327.4508972167969, + "y": 284.9847412109375 + }, + { + "x": 329.66973876953125, + "y": 329.1195983886719 + }, + { + "x": 275.6550598144531, + "y": 65.5235366821289 + }, + { + "x": 276.338623046875, + "y": 107.65843963623047 + }, + { + "x": 275.4305419921875, + "y": 152.67733764648438 + }, + { + "x": 278.6173400878906, + "y": 198.66860961914062 + }, + { + "x": 282.14886474609375, + "y": 245.6219482421875 + }, + { + "x": 282.3394775390625, + "y": 291.5858459472656 + }, + { + "x": 286.3992614746094, + "y": 334.8473815917969 + }, + { + "x": 229.5006103515625, + "y": 70.55247497558594 + }, + { + "x": 232.55380249023438, + "y": 113.76004791259766 + }, + { + "x": 231.55210876464844, + "y": 159.85206604003906 + }, + { + "x": 235.12393188476562, + "y": 204.04885864257812 + }, + { + "x": 237.07144165039062, + "y": 249.2178955078125 + }, + { + "x": 239.10752868652344, + "y": 294.28326416015625 + }, + { + "x": 243.48410034179688, + "y": 340.513671875 + }, + { + "x": 186.53733825683594, + "y": 73.8623275756836 + }, + { + "x": 188.1009063720703, + "y": 117.7392807006836 + }, + { + "x": 189.24859619140625, + "y": 164.10031127929688 + }, + { + "x": 189.79571533203125, + "y": 210.50738525390625 + }, + { + "x": 195.2938995361328, + "y": 256.0902099609375 + }, + { + "x": 197.4159393310547, + "y": 298.47906494140625 + }, + { + "x": 201.06512451171875, + "y": 346.7068176269531 + }, + { + "x": 144.50413513183594, + "y": 78.72064971923828 + }, + { + "x": 143.74700927734375, + "y": 123.47076416015625 + }, + { + "x": 145.41091918945312, + "y": 169.3961639404297 + }, + { + "x": 147.70458984375, + "y": 215.81796264648438 + }, + { + "x": 149.4513702392578, + "y": 261.1156311035156 + }, + { + "x": 154.63844299316406, + "y": 307.7037048339844 + }, + { + "x": 156.51068115234375, + "y": 352.5174255371094 + } + ], + "reprojectionErrors": [ + { + "x": -15.03741455078125, + "y": 9.777885437011719 + }, + { + "x": -12.65264892578125, + "y": 4.29071044921875 + }, + { + "x": -9.56243896484375, + "y": 1.5777130126953125 + }, + { + "x": -9.686370849609375, + "y": -1.9730987548828125 + }, + { + "x": -5.722442626953125, + "y": -4.6122894287109375 + }, + { + "x": -6.40887451171875, + "y": -5.082672119140625 + }, + { + "x": -6.956756591796875, + "y": -3.763153076171875 + }, + { + "x": -8.032470703125, + "y": 4.887554168701172 + }, + { + "x": -4.41925048828125, + "y": 4.361297607421875 + }, + { + "x": -3.7418212890625, + "y": 1.0855560302734375 + }, + { + "x": -0.98577880859375, + "y": -2.833709716796875 + }, + { + "x": -2.184906005859375, + "y": -3.1761474609375 + }, + { + "x": 0.255767822265625, + "y": -3.019927978515625 + }, + { + "x": -0.367919921875, + "y": -3.298553466796875 + }, + { + "x": -1.853424072265625, + "y": 6.435462951660156 + }, + { + "x": 0.70263671875, + "y": 1.927337646484375 + }, + { + "x": 1.408660888671875, + "y": 2.678466796875 + }, + { + "x": 2.436492919921875, + "y": -2.7185211181640625 + }, + { + "x": 3.76171875, + "y": -1.4148101806640625 + }, + { + "x": 3.37933349609375, + "y": -1.74322509765625 + }, + { + "x": 3.907806396484375, + "y": 0.383056640625 + }, + { + "x": 2.270294189453125, + "y": 0.7969207763671875 + }, + { + "x": 3.72174072265625, + "y": 1.607391357421875 + }, + { + "x": 6.80963134765625, + "y": 0.4344482421875 + }, + { + "x": 5.848876953125, + "y": -0.7816619873046875 + }, + { + "x": 4.591094970703125, + "y": -2.0008087158203125 + }, + { + "x": 6.72344970703125, + "y": -1.240325927734375 + }, + { + "x": 5.03753662109375, + "y": 3.245208740234375 + }, + { + "x": 6.0814208984375, + "y": -3.6729278564453125 + }, + { + "x": 4.7742919921875, + "y": -2.65289306640625 + }, + { + "x": 7.5597686767578125, + "y": -3.561981201171875 + }, + { + "x": 5.8107147216796875, + "y": -1.5892333984375 + }, + { + "x": 5.7262420654296875, + "y": 0.4305419921875 + }, + { + "x": 5.5948028564453125, + "y": 3.607391357421875 + }, + { + "x": 3.1658935546875, + "y": 6.708251953125 + }, + { + "x": 4.135833740234375, + "y": -6.389808654785156 + }, + { + "x": 3.8772735595703125, + "y": -4.678009033203125 + }, + { + "x": 4.0636749267578125, + "y": -4.4350738525390625 + }, + { + "x": 4.8807220458984375, + "y": -3.18865966796875 + }, + { + "x": 0.777801513671875, + "y": -0.03265380859375 + }, + { + "x": 0.08319091796875, + "y": 7.440185546875 + }, + { + "x": -2.1052703857421875, + "y": 10.236236572265625 + }, + { + "x": -1.545806884765625, + "y": -10.618095397949219 + }, + { + "x": 0.015533447265625, + "y": -8.331886291503906 + }, + { + "x": -0.8256683349609375, + "y": -6.1400299072265625 + }, + { + "x": -2.2774505615234375, + "y": -3.3259429931640625 + }, + { + "x": -3.1625213623046875, + "y": 1.770355224609375 + }, + { + "x": -7.46734619140625, + "y": 6.775665283203125 + }, + { + "x": -8.436050415039062, + "y": 14.79803466796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2677156300173139, + "y": -0.17502198890079068, + "z": 0.1782804485092925 + }, + "rotation": { + "quaternion": { + "W": 0.7713189034141733, + "X": -0.09299381580796927, + "Y": -0.03276924283795418, + "Z": 0.628765040520907 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img9.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img9.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 83.38545227050781, + "y": 71.12776947021484 + }, + { + "x": 126.1382064819336, + "y": 67.99864959716797 + }, + { + "x": 170.34449768066406, + "y": 66.37129974365234 + }, + { + "x": 217.78404235839844, + "y": 64.30563354492188 + }, + { + "x": 262.6836242675781, + "y": 58.631629943847656 + }, + { + "x": 307.5462341308594, + "y": 62.107666015625 + }, + { + "x": 351.4580993652344, + "y": 58.010990142822266 + }, + { + "x": 79.3700180053711, + "y": 118.10366821289062 + }, + { + "x": 125.17030334472656, + "y": 114.44457244873047 + }, + { + "x": 172.15957641601562, + "y": 112.2008285522461 + }, + { + "x": 214.89227294921875, + "y": 108.63902282714844 + }, + { + "x": 260.1680603027344, + "y": 107.02648162841797 + }, + { + "x": 304.477783203125, + "y": 104.78260803222656 + }, + { + "x": 349.7618103027344, + "y": 105.23209381103516 + }, + { + "x": 78.50017547607422, + "y": 167.51556396484375 + }, + { + "x": 124.2014389038086, + "y": 163.23431396484375 + }, + { + "x": 167.43321228027344, + "y": 160.52450561523438 + }, + { + "x": 212.4978790283203, + "y": 154.59605407714844 + }, + { + "x": 260.37811279296875, + "y": 150.75552368164062 + }, + { + "x": 304.742431640625, + "y": 151.66171264648438 + }, + { + "x": 347.678955078125, + "y": 150.14402770996094 + }, + { + "x": 79.35071563720703, + "y": 215.88511657714844 + }, + { + "x": 123.0296630859375, + "y": 211.630859375 + }, + { + "x": 168.503173828125, + "y": 206.65277099609375 + }, + { + "x": 214.05062866210938, + "y": 203.26925659179688 + }, + { + "x": 259.5769958496094, + "y": 203.0520477294922 + }, + { + "x": 302.5032653808594, + "y": 200.2112274169922 + }, + { + "x": 348.60882568359375, + "y": 196.5312042236328 + }, + { + "x": 78.71138000488281, + "y": 264.384033203125 + }, + { + "x": 125.87799835205078, + "y": 260.13775634765625 + }, + { + "x": 168.9134521484375, + "y": 254.73086547851562 + }, + { + "x": 216.1025390625, + "y": 253.59913635253906 + }, + { + "x": 259.13409423828125, + "y": 247.64073181152344 + }, + { + "x": 306.71270751953125, + "y": 247.1479949951172 + }, + { + "x": 345.7093811035156, + "y": 243.94268798828125 + }, + { + "x": 82.98843383789062, + "y": 314.42724609375 + }, + { + "x": 126.8501205444336, + "y": 304.887451171875 + }, + { + "x": 168.90908813476562, + "y": 302.0532531738281 + }, + { + "x": 213.6967010498047, + "y": 301.4693908691406 + }, + { + "x": 260.3740234375, + "y": 295.8980407714844 + }, + { + "x": 304.0978088378906, + "y": 291.7049255371094 + }, + { + "x": 349.5020751953125, + "y": 289.29217529296875 + }, + { + "x": 82.6568832397461, + "y": 361.1885986328125 + }, + { + "x": 127.82679748535156, + "y": 356.1568603515625 + }, + { + "x": 172.1353759765625, + "y": 351.83416748046875 + }, + { + "x": 216.69326782226562, + "y": 347.5262451171875 + }, + { + "x": 261.51824951171875, + "y": 341.6316223144531 + }, + { + "x": 305.80877685546875, + "y": 338.9231872558594 + }, + { + "x": 352.3433532714844, + "y": 333.0641174316406 + } + ], + "reprojectionErrors": [ + { + "x": -2.6972503662109375, + "y": -8.527839660644531 + }, + { + "x": 2.9153366088867188, + "y": -4.756534576416016 + }, + { + "x": 4.6191864013671875, + "y": -2.519580841064453 + }, + { + "x": 0.816925048828125, + "y": 0.12552642822265625 + }, + { + "x": -2.553558349609375, + "y": 6.3509979248046875 + }, + { + "x": -7.846038818359375, + "y": 3.4004287719726562 + }, + { + "x": -14.01141357421875, + "y": 7.998378753662109 + }, + { + "x": 0.2254486083984375, + "y": -6.532493591308594 + }, + { + "x": 3.3075714111328125, + "y": -3.512969970703125 + }, + { + "x": 2.694854736328125, + "y": -1.8759841918945312 + }, + { + "x": 4.0207366943359375, + "y": 1.1093978881835938 + }, + { + "x": 0.655059814453125, + "y": 2.17364501953125 + }, + { + "x": -3.73956298828125, + "y": 3.8953323364257812 + }, + { + "x": -10.964385986328125, + "y": 2.9479598999023438 + }, + { + "x": -0.02032470703125, + "y": -5.9469146728515625 + }, + { + "x": 3.6890335083007812, + "y": -3.6403961181640625 + }, + { + "x": 7.3097991943359375, + "y": -2.803070068359375 + }, + { + "x": 6.73321533203125, + "y": 1.3473968505859375 + }, + { + "x": 1.15118408203125, + "y": 3.49749755859375 + }, + { + "x": -2.946990966796875, + "y": 0.982086181640625 + }, + { + "x": -7.5064697265625, + "y": 0.966064453125 + }, + { + "x": -2.010101318359375, + "y": -3.2601470947265625 + }, + { + "x": 4.261322021484375, + "y": -2.371734619140625 + }, + { + "x": 6.126190185546875, + "y": -0.5834808349609375 + }, + { + "x": 5.504791259765625, + "y": -0.22723388671875 + }, + { + "x": 2.67193603515625, + "y": -2.8868408203125 + }, + { + "x": 0.369049072265625, + "y": -2.7833404541015625 + }, + { + "x": -7.03631591796875, + "y": -1.711029052734375 + }, + { + "x": -2.5343704223632812, + "y": 0.39007568359375 + }, + { + "x": 0.801025390625, + "y": -0.17919921875 + }, + { + "x": 5.5999755859375, + "y": 0.6664886474609375 + }, + { + "x": 3.7836151123046875, + "y": -2.5282440185546875 + }, + { + "x": 3.84832763671875, + "y": -0.679229736328125 + }, + { + "x": -2.7432861328125, + "y": -4.0947265625 + }, + { + "x": -2.711151123046875, + "y": -4.610931396484375 + }, + { + "x": -8.00018310546875, + "y": 3.62432861328125 + }, + { + "x": -0.7959213256835938, + "y": 6.837371826171875 + }, + { + "x": 5.4860382080078125, + "y": 3.682464599609375 + }, + { + "x": 6.52679443359375, + "y": -1.4114990234375 + }, + { + "x": 3.356170654296875, + "y": -1.230316162109375 + }, + { + "x": 0.989532470703125, + "y": -2.16107177734375 + }, + { + "x": -5.051727294921875, + "y": -4.625091552734375 + }, + { + "x": -8.883384704589844, + "y": 11.30572509765625 + }, + { + "x": -2.41070556640625, + "y": 8.435150146484375 + }, + { + "x": 2.139007568359375, + "y": 5.28155517578125 + }, + { + "x": 3.8743743896484375, + "y": 2.5057373046875 + }, + { + "x": 2.97442626953125, + "y": 1.678985595703125 + }, + { + "x": 0.41790771484375, + "y": -1.998687744140625 + }, + { + "x": -6.413787841796875, + "y": -2.21490478515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.4513579089099244, + "y": -0.14508354781090624, + "z": 0.1466847940999394 + }, + "rotation": { + "quaternion": { + "W": 0.9938617048743101, + "X": -0.03534380163594682, + "Y": -0.07508565393791194, + "Z": -0.07315648872769058 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img10.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img10.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 614.522705078125, + "y": 71.93058013916016 + }, + { + "x": 614.5848999023438, + "y": 117.12628936767578 + }, + { + "x": 613.4644775390625, + "y": 157.70631408691406 + }, + { + "x": 616.3052978515625, + "y": 201.40884399414062 + }, + { + "x": 613.7429809570312, + "y": 244.41488647460938 + }, + { + "x": 618.344482421875, + "y": 286.66162109375 + }, + { + "x": 621.0435180664062, + "y": 324.5143737792969 + }, + { + "x": 573.40673828125, + "y": 76.40914916992188 + }, + { + "x": 571.0655517578125, + "y": 116.32872009277344 + }, + { + "x": 574.8540649414062, + "y": 159.58218383789062 + }, + { + "x": 573.22607421875, + "y": 204.29718017578125 + }, + { + "x": 577.6859130859375, + "y": 246.75784301757812 + }, + { + "x": 575.319580078125, + "y": 287.7755126953125 + }, + { + "x": 579.1866455078125, + "y": 331.66162109375 + }, + { + "x": 531.7636108398438, + "y": 71.44073486328125 + }, + { + "x": 530.59423828125, + "y": 117.19758605957031 + }, + { + "x": 533.1818237304688, + "y": 157.04141235351562 + }, + { + "x": 532.8422241210938, + "y": 205.3590850830078 + }, + { + "x": 533.4708862304688, + "y": 247.09352111816406 + }, + { + "x": 536.626708984375, + "y": 292.1974182128906 + }, + { + "x": 536.248779296875, + "y": 333.00738525390625 + }, + { + "x": 488.1340637207031, + "y": 76.55473327636719 + }, + { + "x": 487.48358154296875, + "y": 117.8848648071289 + }, + { + "x": 487.0086669921875, + "y": 160.364501953125 + }, + { + "x": 489.8322448730469, + "y": 205.4175262451172 + }, + { + "x": 493.11285400390625, + "y": 251.97911071777344 + }, + { + "x": 491.5674133300781, + "y": 294.79583740234375 + }, + { + "x": 494.4450988769531, + "y": 338.87908935546875 + }, + { + "x": 441.1631164550781, + "y": 77.92274475097656 + }, + { + "x": 446.4052734375, + "y": 120.63775634765625 + }, + { + "x": 443.1044921875, + "y": 166.0692596435547 + }, + { + "x": 446.1207580566406, + "y": 207.62879943847656 + }, + { + "x": 447.3887634277344, + "y": 252.5395050048828 + }, + { + "x": 448.1083068847656, + "y": 296.0656433105469 + }, + { + "x": 451.094970703125, + "y": 341.7065124511719 + }, + { + "x": 398.354736328125, + "y": 77.58644104003906 + }, + { + "x": 399.7885437011719, + "y": 121.48765563964844 + }, + { + "x": 401.328369140625, + "y": 167.11279296875 + }, + { + "x": 401.3874816894531, + "y": 212.2455291748047 + }, + { + "x": 405.3919372558594, + "y": 256.7648010253906 + }, + { + "x": 406.40081787109375, + "y": 299.23822021484375 + }, + { + "x": 407.9231872558594, + "y": 346.0607604980469 + }, + { + "x": 355.5650939941406, + "y": 79.5315170288086 + }, + { + "x": 354.3309631347656, + "y": 123.4354476928711 + }, + { + "x": 355.832275390625, + "y": 169.86032104492188 + }, + { + "x": 357.8085021972656, + "y": 215.5163116455078 + }, + { + "x": 358.1407775878906, + "y": 260.55645751953125 + }, + { + "x": 362.98162841796875, + "y": 307.20611572265625 + }, + { + "x": 361.90924072265625, + "y": 350.5545349121094 + } + ], + "reprojectionErrors": [ + { + "x": -25.29840087890625, + "y": 13.655746459960938 + }, + { + "x": -21.76483154296875, + "y": 3.8115692138671875 + }, + { + "x": -16.88201904296875, + "y": 0.2216033935546875 + }, + { + "x": -15.78192138671875, + "y": -4.7357330322265625 + }, + { + "x": -9.087158203125, + "y": -7.113494873046875 + }, + { + "x": -9.35040283203125, + "y": -6.708160400390625 + }, + { + "x": -7.489501953125, + "y": 0.27001953125 + }, + { + "x": -14.92095947265625, + "y": 6.712409973144531 + }, + { + "x": -9.576171875, + "y": 3.3559036254882812 + }, + { + "x": -10.2166748046875, + "y": -1.5774993896484375 + }, + { + "x": -5.2857666015625, + "y": -6.085693359375 + }, + { + "x": -6.27587890625, + "y": -6.3099517822265625 + }, + { + "x": -0.26019287109375, + "y": -2.9039306640625 + }, + { + "x": -0.28387451171875, + "y": -0.004730224609375 + }, + { + "x": -6.25164794921875, + "y": 9.036834716796875 + }, + { + "x": -2.769287109375, + "y": 1.1404571533203125 + }, + { + "x": -2.92840576171875, + "y": 1.0458984375 + }, + { + "x": -0.03619384765625, + "y": -5.4887542724609375 + }, + { + "x": 2.0218505859375, + "y": -3.24627685546875 + }, + { + "x": 1.6976318359375, + "y": -2.00189208984375 + }, + { + "x": 5.06402587890625, + "y": 6.1048583984375 + }, + { + "x": 1.915802001953125, + "y": 1.0793228149414062 + }, + { + "x": 4.072357177734375, + "y": -0.9975738525390625 + }, + { + "x": 6.1314697265625, + "y": -2.18798828125 + }, + { + "x": 4.9764404296875, + "y": -3.7531890869140625 + }, + { + "x": 3.4556884765625, + "y": -4.44793701171875 + }, + { + "x": 6.859954833984375, + "y": 1.181884765625 + }, + { + "x": 5.948699951171875, + "y": 8.348785400390625 + }, + { + "x": 10.6436767578125, + "y": -3.3551864624023438 + }, + { + "x": 5.96258544921875, + "y": -5.317985534667969 + }, + { + "x": 9.854705810546875, + "y": -7.796173095703125 + }, + { + "x": 7.462646484375, + "y": -4.018035888671875 + }, + { + "x": 6.854522705078125, + "y": -1.00250244140625 + }, + { + "x": 6.8336181640625, + "y": 6.21435546875 + }, + { + "x": 4.587921142578125, + "y": 14.389068603515625 + }, + { + "x": 12.087493896484375, + "y": -6.335670471191406 + }, + { + "x": 10.104949951171875, + "y": -7.8668365478515625 + }, + { + "x": 7.985504150390625, + "y": -8.73480224609375 + }, + { + "x": 7.31317138671875, + "y": -6.5156402587890625 + }, + { + "x": 2.658905029296875, + "y": -0.85595703125 + }, + { + "x": 0.960235595703125, + "y": 9.9376220703125 + }, + { + "x": -1.29571533203125, + "y": 19.76416015625 + }, + { + "x": 9.992706298828125, + "y": -11.8797607421875 + }, + { + "x": 9.37054443359375, + "y": -11.662284851074219 + }, + { + "x": 5.90362548828125, + "y": -11.367950439453125 + }, + { + "x": 1.84259033203125, + "y": -7.4705657958984375 + }, + { + "x": -0.70489501953125, + "y": 0.142791748046875 + }, + { + "x": -7.904022216796875, + "y": 9.547088623046875 + }, + { + "x": -9.347259521484375, + "y": 25.993438720703125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.09095595977447354, + "y": -0.16600242122695455, + "z": 0.18184868066145007 + }, + "rotation": { + "quaternion": { + "W": 0.7630399790953359, + "X": -0.1456180350788214, + "Y": -0.016234309717982398, + "Z": 0.6295250792065024 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img11.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img11.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 494.20166015625, + "y": 77.94659423828125 + }, + { + "x": 535.0366821289062, + "y": 78.47824096679688 + }, + { + "x": 575.2452392578125, + "y": 80.43524932861328 + }, + { + "x": 618.75537109375, + "y": 81.3945083618164 + }, + { + "x": 659.3622436523438, + "y": 79.28446960449219 + }, + { + "x": 698.4789428710938, + "y": 85.40961456298828 + }, + { + "x": 735.96435546875, + "y": 83.5462875366211 + }, + { + "x": 492.1363525390625, + "y": 118.78611755371094 + }, + { + "x": 535.0194702148438, + "y": 119.33670806884766 + }, + { + "x": 578.8469848632812, + "y": 120.51716613769531 + }, + { + "x": 617.4498291015625, + "y": 119.82867431640625 + }, + { + "x": 658.484130859375, + "y": 121.6729965209961 + }, + { + "x": 695.2955932617188, + "y": 122.42247772216797 + }, + { + "x": 735.6129760742188, + "y": 125.21278381347656 + }, + { + "x": 492.6038818359375, + "y": 161.98574829101562 + }, + { + "x": 535.306640625, + "y": 161.49681091308594 + }, + { + "x": 574.3076171875, + "y": 163.31503295898438 + }, + { + "x": 615.07080078125, + "y": 159.41134643554688 + }, + { + "x": 659.1172485351562, + "y": 158.65310668945312 + }, + { + "x": 697.9701538085938, + "y": 163.37791442871094 + }, + { + "x": 733.3798217773438, + "y": 163.41943359375 + }, + { + "x": 493.1404724121094, + "y": 204.72003173828125 + }, + { + "x": 534.1917724609375, + "y": 203.7501220703125 + }, + { + "x": 576.3617553710938, + "y": 201.91075134277344 + }, + { + "x": 617.2459716796875, + "y": 201.83827209472656 + }, + { + "x": 657.541015625, + "y": 204.27432250976562 + }, + { + "x": 694.7543334960938, + "y": 205.06146240234375 + }, + { + "x": 734.8875122070312, + "y": 204.22930908203125 + }, + { + "x": 491.3307189941406, + "y": 247.08486938476562 + }, + { + "x": 536.4282836914062, + "y": 245.49444580078125 + }, + { + "x": 575.5347290039062, + "y": 243.8280487060547 + }, + { + "x": 618.54248046875, + "y": 245.14064025878906 + }, + { + "x": 656.5517578125, + "y": 242.92437744140625 + }, + { + "x": 698.0630493164062, + "y": 244.95790100097656 + }, + { + "x": 731.320068359375, + "y": 244.30897521972656 + }, + { + "x": 494.57305908203125, + "y": 290.35101318359375 + }, + { + "x": 535.638427734375, + "y": 285.2527770996094 + }, + { + "x": 574.4883422851562, + "y": 283.81671142578125 + }, + { + "x": 614.7189331054688, + "y": 287.0293273925781 + }, + { + "x": 658.0650634765625, + "y": 285.14276123046875 + }, + { + "x": 693.8991088867188, + "y": 282.8385925292969 + }, + { + "x": 734.2906494140625, + "y": 284.2098388671875 + }, + { + "x": 491.3924255371094, + "y": 330.8937683105469 + }, + { + "x": 536.7472534179688, + "y": 329.94268798828125 + }, + { + "x": 576.0443115234375, + "y": 326.7244873046875 + }, + { + "x": 617.0516967773438, + "y": 326.60516357421875 + }, + { + "x": 655.6512451171875, + "y": 323.177001953125 + }, + { + "x": 695.5284423828125, + "y": 323.5198974609375 + }, + { + "x": 735.16064453125, + "y": 319.564208984375 + } + ], + "reprojectionErrors": [ + { + "x": 23.83148193359375, + "y": -1.5754241943359375 + }, + { + "x": 17.83758544921875, + "y": 0.9229583740234375 + }, + { + "x": 10.92486572265625, + "y": 1.8616104125976562 + }, + { + "x": -0.734130859375, + "y": 3.672393798828125 + }, + { + "x": -10.84246826171875, + "y": 8.434852600097656 + }, + { + "x": -20.72894287109375, + "y": 4.851844787597656 + }, + { + "x": -30.1749267578125, + "y": 9.153770446777344 + }, + { + "x": 21.30511474609375, + "y": -7.319122314453125 + }, + { + "x": 15.03411865234375, + "y": -5.5290374755859375 + }, + { + "x": 6.1192626953125, + "y": -4.477455139160156 + }, + { + "x": 0.84527587890625, + "y": -1.6581573486328125 + }, + { + "x": -8.33856201171875, + "y": -1.4661712646484375 + }, + { + "x": -14.6817626953125, + "y": -0.26770782470703125 + }, + { + "x": -25.8250732421875, + "y": -1.192779541015625 + }, + { + "x": 15.774078369140625, + "y": -11.817047119140625 + }, + { + "x": 11.6436767578125, + "y": -9.8358154296875 + }, + { + "x": 9.337158203125, + "y": -10.234375 + }, + { + "x": 3.52435302734375, + "y": -4.9785003662109375 + }, + { + "x": -7.1943359375, + "y": -2.930816650390625 + }, + { + "x": -14.23162841796875, + "y": -6.4246826171875 + }, + { + "x": -19.2373046875, + "y": -5.28985595703125 + }, + { + "x": 9.6256103515625, + "y": -11.657913208007812 + }, + { + "x": 9.32806396484375, + "y": -10.243667602539062 + }, + { + "x": 5.82574462890625, + "y": -7.982696533203125 + }, + { + "x": 1.67926025390625, + "y": -7.5096282958984375 + }, + { + "x": -3.6669921875, + "y": -9.564590454101562 + }, + { + "x": -7.5928955078125, + "y": -9.988739013671875 + }, + { + "x": -15.98443603515625, + "y": -8.810440063476562 + }, + { + "x": 5.180877685546875, + "y": -6.2176666259765625 + }, + { + "x": 3.27911376953125, + "y": -5.483734130859375 + }, + { + "x": 5.03765869140625, + "y": -4.6275787353515625 + }, + { + "x": 0.7476806640625, + "y": -6.7078399658203125 + }, + { + "x": -0.52606201171875, + "y": -5.219940185546875 + }, + { + "x": -7.13568115234375, + "y": -7.9454345703125 + }, + { + "x": -7.19091796875, + "y": -7.95477294921875 + }, + { + "x": -5.075653076171875, + "y": 4.127838134765625 + }, + { + "x": -0.19293212890625, + "y": 6.744903564453125 + }, + { + "x": 4.28387451171875, + "y": 5.84136962890625 + }, + { + "x": 4.97674560546875, + "y": 0.4189453125 + }, + { + "x": 0.34539794921875, + "y": 0.2149658203125 + }, + { + "x": 1.1915283203125, + "y": 0.538482666015625 + }, + { + "x": -4.398193359375, + "y": -2.712005615234375 + }, + { + "x": -9.81622314453125, + "y": 24.129608154296875 + }, + { + "x": -6.09759521484375, + "y": 20.554962158203125 + }, + { + "x": 0.7091064453125, + "y": 19.5213623046875 + }, + { + "x": 3.09735107421875, + "y": 15.63861083984375 + }, + { + "x": 5.41717529296875, + "y": 15.2930908203125 + }, + { + "x": 4.18914794921875, + "y": 11.3858642578125 + }, + { + "x": 1.11968994140625, + "y": 11.96966552734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.134361416226366, + "y": -0.14723694096950365, + "z": 0.15606756773681013 + }, + "rotation": { + "quaternion": { + "W": 0.9857113566254629, + "X": -0.14824805167356206, + "Y": -0.06540171176672864, + "Z": -0.04602447927531643 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img12.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img12.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 606.2357788085938, + "y": 56.37633514404297 + }, + { + "x": 644.4970092773438, + "y": 57.4837532043457 + }, + { + "x": 682.2523803710938, + "y": 60.252037048339844 + }, + { + "x": 722.549072265625, + "y": 61.11540985107422 + }, + { + "x": 760.25732421875, + "y": 60.80948257446289 + }, + { + "x": 796.47265625, + "y": 67.13761901855469 + }, + { + "x": 831.20068359375, + "y": 66.43932342529297 + }, + { + "x": 605.3002319335938, + "y": 94.48171997070312 + }, + { + "x": 644.8646240234375, + "y": 95.73201751708984 + }, + { + "x": 685.2994384765625, + "y": 97.15101623535156 + }, + { + "x": 721.56591796875, + "y": 98.19398498535156 + }, + { + "x": 759.4636840820312, + "y": 100.06524658203125 + }, + { + "x": 793.9498901367188, + "y": 102.03302764892578 + }, + { + "x": 831.3717651367188, + "y": 104.7159194946289 + }, + { + "x": 605.2964477539062, + "y": 134.48361206054688 + }, + { + "x": 645.2548217773438, + "y": 134.51893615722656 + }, + { + "x": 682.3328247070312, + "y": 137.2942352294922 + }, + { + "x": 720.495361328125, + "y": 134.5845184326172 + }, + { + "x": 760.6723022460938, + "y": 134.94129943847656 + }, + { + "x": 796.4657592773438, + "y": 139.44752502441406 + }, + { + "x": 829.799072265625, + "y": 140.85206604003906 + }, + { + "x": 605.730712890625, + "y": 173.8740997314453 + }, + { + "x": 644.4006958007812, + "y": 174.4758758544922 + }, + { + "x": 684.175537109375, + "y": 173.48411560058594 + }, + { + "x": 722.260009765625, + "y": 174.15777587890625 + }, + { + "x": 759.4338989257812, + "y": 176.7790069580078 + }, + { + "x": 793.8646240234375, + "y": 179.23809814453125 + }, + { + "x": 831.5899658203125, + "y": 178.592529296875 + }, + { + "x": 604.392333984375, + "y": 213.5265350341797 + }, + { + "x": 646.7098388671875, + "y": 213.46307373046875 + }, + { + "x": 683.4494018554688, + "y": 212.4495086669922 + }, + { + "x": 723.3314819335938, + "y": 214.48681640625 + }, + { + "x": 758.5958251953125, + "y": 213.42092895507812 + }, + { + "x": 797.5016479492188, + "y": 216.11363220214844 + }, + { + "x": 828.4446411132812, + "y": 216.0653533935547 + }, + { + "x": 606.624267578125, + "y": 253.5352783203125 + }, + { + "x": 645.7036743164062, + "y": 250.36749267578125 + }, + { + "x": 682.4122314453125, + "y": 250.2469940185547 + }, + { + "x": 720.5443115234375, + "y": 252.68780517578125 + }, + { + "x": 759.3304443359375, + "y": 251.9055633544922 + }, + { + "x": 794.43212890625, + "y": 251.3968963623047 + }, + { + "x": 830.3724365234375, + "y": 252.6713409423828 + }, + { + "x": 604.0933227539062, + "y": 292.22369384765625 + }, + { + "x": 644.8158569335938, + "y": 291.3147277832031 + }, + { + "x": 683.3388061523438, + "y": 290.51593017578125 + }, + { + "x": 720.7705078125, + "y": 290.43939208984375 + }, + { + "x": 757.8340454101562, + "y": 288.8456726074219 + }, + { + "x": 794.4977416992188, + "y": 289.6092834472656 + }, + { + "x": 831.7598876953125, + "y": 287.44390869140625 + } + ], + "reprojectionErrors": [ + { + "x": 25.63275146484375, + "y": 8.678520202636719 + }, + { + "x": 16.06219482421875, + "y": 7.881061553955078 + }, + { + "x": 7.22857666015625, + "y": 5.425254821777344 + }, + { + "x": -3.91259765625, + "y": 4.8769073486328125 + }, + { + "x": -12.2286376953125, + "y": 5.500438690185547 + }, + { + "x": -18.812255859375, + "y": -0.5074920654296875 + }, + { + "x": -23.66607666015625, + "y": 0.5136566162109375 + }, + { + "x": 22.7154541015625, + "y": 0.5632171630859375 + }, + { + "x": 13.1761474609375, + "y": -0.2366180419921875 + }, + { + "x": 3.01953125, + "y": -1.2013320922851562 + }, + { + "x": -2.7122802734375, + "y": -1.7861557006835938 + }, + { + "x": -9.8157958984375, + "y": -3.1953506469726562 + }, + { + "x": -13.2447509765625, + "y": -4.697105407714844 + }, + { + "x": -19.34295654296875, + "y": -6.909950256347656 + }, + { + "x": 18.48748779296875, + "y": -6.498779296875 + }, + { + "x": 10.01861572265625, + "y": -5.916259765625 + }, + { + "x": 4.7088623046875, + "y": -8.068222045898438 + }, + { + "x": -1.40301513671875, + "y": -4.7296142578125 + }, + { + "x": -9.24310302734375, + "y": -4.451873779296875 + }, + { + "x": -12.40966796875, + "y": -8.31787109375 + }, + { + "x": -12.8221435546875, + "y": -9.076385498046875 + }, + { + "x": 13.3836669921875, + "y": -9.541824340820312 + }, + { + "x": 7.81787109375, + "y": -9.3251953125 + }, + { + "x": 1.45550537109375, + "y": -7.50738525390625 + }, + { + "x": -2.90386962890625, + "y": -7.3472442626953125 + }, + { + "x": -6.03564453125, + "y": -9.1268310546875 + }, + { + "x": -6.10272216796875, + "y": -10.736297607421875 + }, + { + "x": -9.138427734375, + "y": -9.2330322265625 + }, + { + "x": 9.5430908203125, + "y": -8.8817138671875 + }, + { + "x": 2.11895751953125, + "y": -7.757904052734375 + }, + { + "x": 0.6156005859375, + "y": -5.6735382080078125 + }, + { + "x": -3.68231201171875, + "y": -6.6294708251953125 + }, + { + "x": -3.00946044921875, + "y": -4.471466064453125 + }, + { + "x": -5.61962890625, + "y": -6.0611419677734375 + }, + { + "x": 0.09674072265625, + "y": -4.898773193359375 + }, + { + "x": 1.53472900390625, + "y": -3.9264984130859375 + }, + { + "x": -0.65777587890625, + "y": 0.5956878662109375 + }, + { + "x": -0.0958251953125, + "y": 2.0847015380859375 + }, + { + "x": -0.56781005859375, + "y": 1.0267181396484375 + }, + { + "x": -1.29815673828125, + "y": 3.206329345703125 + }, + { + "x": 2.05792236328125, + "y": 5.1271209716796875 + }, + { + "x": 4.9837646484375, + "y": 5.2798309326171875 + }, + { + "x": -2.41815185546875, + "y": 7.854705810546875 + }, + { + "x": -4.01861572265625, + "y": 10.47857666015625 + }, + { + "x": -2.98748779296875, + "y": 13.01123046875 + }, + { + "x": -0.4259033203125, + "y": 14.84088134765625 + }, + { + "x": 2.9503173828125, + "y": 18.207305908203125 + }, + { + "x": 7.180419921875, + "y": 19.236297607421875 + }, + { + "x": 11.2738037109375, + "y": 23.21453857421875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.04939737227183926, + "y": -0.17056892216123223, + "z": 0.17388257303539784 + }, + "rotation": { + "quaternion": { + "W": 0.9876134798265607, + "X": -0.15539130862940598, + "Y": 0.010877060903903469, + "Z": 0.01883733562383907 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img13.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img13.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 733.1257934570312, + "y": 61.27058792114258 + }, + { + "x": 768.6483154296875, + "y": 61.37685012817383 + }, + { + "x": 803.4987182617188, + "y": 63.60090637207031 + }, + { + "x": 840.9159545898438, + "y": 63.69866943359375 + }, + { + "x": 875.2134399414062, + "y": 62.56155776977539 + }, + { + "x": 908.6439819335938, + "y": 67.28844451904297 + }, + { + "x": 940.6708374023438, + "y": 66.85601043701172 + }, + { + "x": 733.7388916015625, + "y": 96.34146881103516 + }, + { + "x": 770.6975708007812, + "y": 97.1640625 + }, + { + "x": 807.312744140625, + "y": 97.52304077148438 + }, + { + "x": 841.5272216796875, + "y": 98.24211120605469 + }, + { + "x": 876.3515625, + "y": 99.37384033203125 + }, + { + "x": 909.0081176757812, + "y": 99.728759765625 + }, + { + "x": 942.2225341796875, + "y": 101.86039733886719 + }, + { + "x": 735.5869140625, + "y": 133.77377319335938 + }, + { + "x": 772.7200927734375, + "y": 133.42298889160156 + }, + { + "x": 807.091796875, + "y": 134.4502716064453 + }, + { + "x": 842.2740478515625, + "y": 132.33306884765625 + }, + { + "x": 878.5785522460938, + "y": 131.91270446777344 + }, + { + "x": 911.3560180664062, + "y": 135.15113830566406 + }, + { + "x": 942.6633911132812, + "y": 135.9853973388672 + }, + { + "x": 737.9849853515625, + "y": 170.45864868164062 + }, + { + "x": 773.1903076171875, + "y": 170.37757873535156 + }, + { + "x": 809.5380859375, + "y": 168.52813720703125 + }, + { + "x": 844.8095703125, + "y": 168.8446044921875 + }, + { + "x": 879.0469360351562, + "y": 170.51837158203125 + }, + { + "x": 911.2360229492188, + "y": 171.89967346191406 + }, + { + "x": 944.9854125976562, + "y": 171.0620574951172 + }, + { + "x": 737.7525634765625, + "y": 206.82107543945312 + }, + { + "x": 776.4979248046875, + "y": 206.35507202148438 + }, + { + "x": 810.4371948242188, + "y": 205.1021728515625 + }, + { + "x": 846.8617553710938, + "y": 206.26144409179688 + }, + { + "x": 879.5377807617188, + "y": 204.76870727539062 + }, + { + "x": 914.134521484375, + "y": 205.7396697998047 + }, + { + "x": 943.6339111328125, + "y": 206.409912109375 + }, + { + "x": 740.7294311523438, + "y": 243.83056640625 + }, + { + "x": 776.8218994140625, + "y": 240.47457885742188 + }, + { + "x": 810.6046142578125, + "y": 240.12371826171875 + }, + { + "x": 845.684814453125, + "y": 241.53086853027344 + }, + { + "x": 880.49755859375, + "y": 240.40728759765625 + }, + { + "x": 913.2073974609375, + "y": 239.9071807861328 + }, + { + "x": 946.2960205078125, + "y": 240.3385772705078 + }, + { + "x": 739.4417114257812, + "y": 279.7749328613281 + }, + { + "x": 776.6453247070312, + "y": 278.1065673828125 + }, + { + "x": 812.1825561523438, + "y": 277.50531005859375 + }, + { + "x": 846.7174072265625, + "y": 276.71728515625 + }, + { + "x": 880.6926879882812, + "y": 275.0014343261719 + }, + { + "x": 914.2197875976562, + "y": 275.48004150390625 + }, + { + "x": 948.12841796875, + "y": 273.40167236328125 + } + ], + "reprojectionErrors": [ + { + "x": 21.36859130859375, + "y": 11.221416473388672 + }, + { + "x": 12.04388427734375, + "y": 9.169681549072266 + }, + { + "x": 4.49200439453125, + "y": 4.918426513671875 + }, + { + "x": -4.45513916015625, + "y": 2.7064743041992188 + }, + { + "x": -9.0338134765625, + "y": 1.6366920471191406 + }, + { + "x": -11.41290283203125, + "y": -5.396030426025391 + }, + { + "x": -10.9639892578125, + "y": -7.37518310546875 + }, + { + "x": 19.18939208984375, + "y": 5.153923034667969 + }, + { + "x": 9.18963623046875, + "y": 2.9417343139648438 + }, + { + "x": 0.70123291015625, + "y": 1.1329803466796875 + }, + { + "x": -4.14111328125, + "y": -1.1000442504882812 + }, + { + "x": -8.263427734375, + "y": -3.8142547607421875 + }, + { + "x": -8.79559326171875, + "y": -5.824958801269531 + }, + { + "x": -8.362060546875, + "y": -9.690887451171875 + }, + { + "x": 15.679443359375, + "y": -1.499969482421875 + }, + { + "x": 6.31182861328125, + "y": -1.909332275390625 + }, + { + "x": 0.94696044921875, + "y": -3.7307281494140625 + }, + { + "x": -3.9022216796875, + "y": -2.443939208984375 + }, + { + "x": -8.45416259765625, + "y": -2.892822265625 + }, + { + "x": -7.95770263671875, + "y": -7.042144775390625 + }, + { + "x": -4.357666015625, + "y": -8.831993103027344 + }, + { + "x": 11.51446533203125, + "y": -5.4633026123046875 + }, + { + "x": 4.93115234375, + "y": -5.428436279296875 + }, + { + "x": -1.47296142578125, + "y": -3.6273345947265625 + }, + { + "x": -5.38531494140625, + "y": -3.9944000244140625 + }, + { + "x": -6.74530029296875, + "y": -5.7212066650390625 + }, + { + "x": -4.42584228515625, + "y": -7.1581573486328125 + }, + { + "x": -1.91094970703125, + "y": -6.3790283203125 + }, + { + "x": 9.8648681640625, + "y": -6.9710540771484375 + }, + { + "x": 0.65228271484375, + "y": -5.739959716796875 + }, + { + "x": -2.3438720703125, + "y": -3.6854095458984375 + }, + { + "x": -6.31146240234375, + "y": -4.0037994384765625 + }, + { + "x": -4.90277099609375, + "y": -1.62799072265625 + }, + { + "x": -3.66143798828125, + "y": -1.6704559326171875 + }, + { + "x": 4.56939697265625, + "y": -1.3631591796875 + }, + { + "x": 4.879150390625, + "y": -6.777130126953125 + }, + { + "x": -0.7099609375, + "y": -1.7320709228515625 + }, + { + "x": -2.4810791015625, + "y": 0.3913726806640625 + }, + { + "x": -3.92681884765625, + "y": 0.8466949462890625 + }, + { + "x": -3.35552978515625, + "y": 3.9296417236328125 + }, + { + "x": 1.2083740234375, + "y": 6.4937591552734375 + }, + { + "x": 7.43865966796875, + "y": 8.239639282226562 + }, + { + "x": 4.01788330078125, + "y": -2.92364501953125 + }, + { + "x": -1.6458740234375, + "y": 1.488616943359375 + }, + { + "x": -4.02667236328125, + "y": 4.97442626953125 + }, + { + "x": -3.66082763671875, + "y": 8.79876708984375 + }, + { + "x": -0.84991455078125, + "y": 13.714996337890625 + }, + { + "x": 4.4517822265625, + "y": 16.61444091796875 + }, + { + "x": 11.5894775390625, + "y": 22.263824462890625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.06821992253332347, + "y": -0.19341482970940715, + "z": 0.2022572408866527 + }, + "rotation": { + "quaternion": { + "W": 0.9880413141392826, + "X": -0.12076749019011948, + "Y": 0.07375674174182584, + "Z": 0.061233307233305695 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img14.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img14.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 838.7307739257812, + "y": 61.28567886352539 + }, + { + "x": 871.4646606445312, + "y": 60.17338180541992 + }, + { + "x": 903.5728149414062, + "y": 60.55702209472656 + }, + { + "x": 938.4310302734375, + "y": 59.364585876464844 + }, + { + "x": 969.4320678710938, + "y": 57.41373825073242 + }, + { + "x": 999.8712768554688, + "y": 59.62356185913086 + }, + { + "x": 1028.5977783203125, + "y": 58.51383972167969 + }, + { + "x": 841.7159423828125, + "y": 95.25579071044922 + }, + { + "x": 876.5068359375, + "y": 94.22223663330078 + }, + { + "x": 910.3641967773438, + "y": 93.27967834472656 + }, + { + "x": 940.693115234375, + "y": 92.50074005126953 + }, + { + "x": 973.1566162109375, + "y": 91.7098388671875 + }, + { + "x": 1002.5361328125, + "y": 90.76902770996094 + }, + { + "x": 1033.0343017578125, + "y": 90.83724975585938 + }, + { + "x": 846.5059204101562, + "y": 130.73329162597656 + }, + { + "x": 880.23583984375, + "y": 128.26882934570312 + }, + { + "x": 912.50146484375, + "y": 128.28025817871094 + }, + { + "x": 944.555908203125, + "y": 124.58436584472656 + }, + { + "x": 977.9114379882812, + "y": 122.80290222167969 + }, + { + "x": 1007.8173828125, + "y": 124.11883544921875 + }, + { + "x": 1035.833251953125, + "y": 124.00550079345703 + }, + { + "x": 851.5946655273438, + "y": 165.80931091308594 + }, + { + "x": 883.7254028320312, + "y": 164.19583129882812 + }, + { + "x": 917.5585327148438, + "y": 161.0037384033203 + }, + { + "x": 949.7410888671875, + "y": 159.34739685058594 + }, + { + "x": 980.7971801757812, + "y": 159.18450927734375 + }, + { + "x": 1010.6187133789062, + "y": 159.02816772460938 + }, + { + "x": 1040.9942626953125, + "y": 156.6741485595703 + }, + { + "x": 853.620849609375, + "y": 200.4501953125 + }, + { + "x": 889.4154663085938, + "y": 198.36732482910156 + }, + { + "x": 921.0110473632812, + "y": 195.20494079589844 + }, + { + "x": 954.230224609375, + "y": 194.80499267578125 + }, + { + "x": 984.0546264648438, + "y": 192.09716796875 + }, + { + "x": 1016.0540161132812, + "y": 191.78070068359375 + }, + { + "x": 1042.3682861328125, + "y": 190.35824584960938 + }, + { + "x": 858.6268920898438, + "y": 235.9028778076172 + }, + { + "x": 892.097900390625, + "y": 230.6087188720703 + }, + { + "x": 923.078125, + "y": 229.02450561523438 + }, + { + "x": 955.0114135742188, + "y": 229.64007568359375 + }, + { + "x": 987.162353515625, + "y": 225.8254852294922 + }, + { + "x": 1016.4793701171875, + "y": 224.3128204345703 + }, + { + "x": 1046.901123046875, + "y": 222.60043334960938 + }, + { + "x": 859.6871948242188, + "y": 270.5134582519531 + }, + { + "x": 894.382568359375, + "y": 267.2757568359375 + }, + { + "x": 926.5546875, + "y": 265.60601806640625 + }, + { + "x": 959.1096801757812, + "y": 262.55682373046875 + }, + { + "x": 989.9766235351562, + "y": 258.6378173828125 + }, + { + "x": 1020.383056640625, + "y": 258.12548828125 + }, + { + "x": 1050.6612548828125, + "y": 254.4474639892578 + } + ], + "reprojectionErrors": [ + { + "x": 15.509521484375, + "y": 9.20022201538086 + }, + { + "x": 8.7125244140625, + "y": 7.337253570556641 + }, + { + "x": 3.460205078125, + "y": 3.872955322265625 + }, + { + "x": -3.57354736328125, + "y": 1.8736228942871094 + }, + { + "x": -5.72808837890625, + "y": 0.5154838562011719 + }, + { + "x": -6.24139404296875, + "y": -5.127128601074219 + }, + { + "x": -3.90087890625, + "y": -7.581077575683594 + }, + { + "x": 13.86859130859375, + "y": 4.617889404296875 + }, + { + "x": 5.55938720703125, + "y": 3.13824462890625 + }, + { + "x": -0.85882568359375, + "y": 1.47674560546875 + }, + { + "x": -2.73834228515625, + "y": -0.4442291259765625 + }, + { + "x": -5.68524169921875, + "y": -2.4545135498046875 + }, + { + "x": -4.4197998046875, + "y": -4.4219512939453125 + }, + { + "x": -3.0787353515625, + "y": -7.511741638183594 + }, + { + "x": 10.47698974609375, + "y": -0.2885589599609375 + }, + { + "x": 3.796875, + "y": 0.1651611328125 + }, + { + "x": -0.4205322265625, + "y": -1.9312286376953125 + }, + { + "x": -3.3720703125, + "y": -0.39868927001953125 + }, + { + "x": -6.50933837890625, + "y": -0.86346435546875 + }, + { + "x": -5.016357421875, + "y": -4.513389587402344 + }, + { + "x": -0.382080078125, + "y": -6.827049255371094 + }, + { + "x": 6.84405517578125, + "y": -3.53729248046875 + }, + { + "x": 2.35614013671875, + "y": -3.387847900390625 + }, + { + "x": -2.79217529296875, + "y": -1.7149810791015625 + }, + { + "x": -5.1878662109375, + "y": -1.6362152099609375 + }, + { + "x": -5.29022216796875, + "y": -3.1126861572265625 + }, + { + "x": -2.9212646484375, + "y": -4.6612091064453125 + }, + { + "x": 0.2060546875, + "y": -4.0815277099609375 + }, + { + "x": 6.33477783203125, + "y": -5.0156402587890625 + }, + { + "x": -1.19757080078125, + "y": -3.8014984130859375 + }, + { + "x": -3.44232177734375, + "y": -1.541290283203125 + }, + { + "x": -6.15789794921875, + "y": -2.078948974609375 + }, + { + "x": -4.25677490234375, + "y": -0.3462677001953125 + }, + { + "x": -3.23370361328125, + "y": -1.0448150634765625 + }, + { + "x": 4.8525390625, + "y": -0.6797027587890625 + }, + { + "x": 2.91064453125, + "y": -5.884674072265625 + }, + { + "x": -1.65032958984375, + "y": -0.81048583984375 + }, + { + "x": -2.5821533203125, + "y": 0.54510498046875 + }, + { + "x": -3.2601318359375, + "y": -0.3082733154296875 + }, + { + "x": -2.87469482421875, + "y": 3.2587738037109375 + }, + { + "x": 1.706298828125, + "y": 4.5135498046875 + }, + { + "x": 6.6312255859375, + "y": 5.95703125 + }, + { + "x": 3.50146484375, + "y": -4.397186279296875 + }, + { + "x": -1.60577392578125, + "y": -0.671844482421875 + }, + { + "x": -2.9981689453125, + "y": 1.50518798828125 + }, + { + "x": -3.5084228515625, + "y": 5.08251953125 + }, + { + "x": -0.98602294921875, + "y": 9.551849365234375 + }, + { + "x": 3.42803955078125, + "y": 10.638092041015625 + }, + { + "x": 9.495361328125, + "y": 14.915176391601562 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.18416696177913988, + "y": -0.21043537455769257, + "z": 0.21853569282856147 + }, + "rotation": { + "quaternion": { + "W": 0.9930924522669313, + "X": -0.08637426141861555, + "Y": 0.0710214540304032, + "Z": 0.035536196789311976 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img15.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img15.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 978.6893310546875, + "y": 112.12852478027344 + }, + { + "x": 1009.5452880859375, + "y": 112.16021728515625 + }, + { + "x": 1039.449462890625, + "y": 113.01405334472656 + }, + { + "x": 1071.5828857421875, + "y": 112.54147338867188 + }, + { + "x": 1100.73095703125, + "y": 111.11441040039062 + }, + { + "x": 1129.0169677734375, + "y": 114.09103393554688 + }, + { + "x": 1155.3841552734375, + "y": 113.63288879394531 + }, + { + "x": 981.1710815429688, + "y": 145.39064025878906 + }, + { + "x": 1013.6951904296875, + "y": 145.2413787841797 + }, + { + "x": 1044.9443359375, + "y": 145.3490447998047 + }, + { + "x": 1073.6453857421875, + "y": 144.90406799316406 + }, + { + "x": 1103.613037109375, + "y": 145.17965698242188 + }, + { + "x": 1130.55126953125, + "y": 145.07403564453125 + }, + { + "x": 1159.27587890625, + "y": 146.07339477539062 + }, + { + "x": 984.7109375, + "y": 180.55372619628906 + }, + { + "x": 1015.8547973632812, + "y": 178.40980529785156 + }, + { + "x": 1046.6239013671875, + "y": 179.65966796875 + }, + { + "x": 1076.572998046875, + "y": 176.88890075683594 + }, + { + "x": 1107.421630859375, + "y": 176.14993286132812 + }, + { + "x": 1134.763671875, + "y": 177.48516845703125 + }, + { + "x": 1161.34130859375, + "y": 177.47930908203125 + }, + { + "x": 988.6810913085938, + "y": 214.64675903320312 + }, + { + "x": 1019.259765625, + "y": 213.71258544921875 + }, + { + "x": 1050.8702392578125, + "y": 212.1336212158203 + }, + { + "x": 1080.5762939453125, + "y": 210.65394592285156 + }, + { + "x": 1109.4595947265625, + "y": 211.41046142578125 + }, + { + "x": 1136.96923828125, + "y": 211.37916564941406 + }, + { + "x": 1165.141845703125, + "y": 210.35760498046875 + }, + { + "x": 990.1245727539062, + "y": 248.6435546875 + }, + { + "x": 1023.2886962890625, + "y": 247.38941955566406 + }, + { + "x": 1052.72607421875, + "y": 245.24717712402344 + }, + { + "x": 1083.37646484375, + "y": 245.2376708984375 + }, + { + "x": 1111.4647216796875, + "y": 243.4505615234375 + }, + { + "x": 1140.3243408203125, + "y": 243.08192443847656 + }, + { + "x": 1165.0794677734375, + "y": 242.89561462402344 + }, + { + "x": 993.7310791015625, + "y": 282.8938903808594 + }, + { + "x": 1025.215576171875, + "y": 278.6481018066406 + }, + { + "x": 1054.1688232421875, + "y": 278.20233154296875 + }, + { + "x": 1083.6043701171875, + "y": 278.9830322265625 + }, + { + "x": 1113.3516845703125, + "y": 275.9245910644531 + }, + { + "x": 1140.5523681640625, + "y": 275.153076171875 + }, + { + "x": 1168.495849609375, + "y": 274.23760986328125 + }, + { + "x": 993.7372436523438, + "y": 316.4188537597656 + }, + { + "x": 1025.99755859375, + "y": 314.1746520996094 + }, + { + "x": 1056.380126953125, + "y": 312.8519592285156 + }, + { + "x": 1086.12060546875, + "y": 311.1734619140625 + }, + { + "x": 1114.7296142578125, + "y": 308.2314758300781 + }, + { + "x": 1142.758544921875, + "y": 307.6773986816406 + }, + { + "x": 1170.666748046875, + "y": 305.3175964355469 + } + ], + "reprojectionErrors": [ + { + "x": 10.154296875, + "y": 7.608238220214844 + }, + { + "x": 5.10986328125, + "y": 5.483345031738281 + }, + { + "x": 1.793701171875, + "y": 2.4733505249023438 + }, + { + "x": -2.939697265625, + "y": 0.7239227294921875 + }, + { + "x": -3.837890625, + "y": -0.13993072509765625 + }, + { + "x": -2.9840087890625, + "y": -5.479637145996094 + }, + { + "x": 0.721435546875, + "y": -7.460205078125 + }, + { + "x": 9.184326171875, + "y": 4.7753448486328125 + }, + { + "x": 2.73150634765625, + "y": 3.267242431640625 + }, + { + "x": -1.6546630859375, + "y": 1.451904296875 + }, + { + "x": -2.66455078125, + "y": 0.136566162109375 + }, + { + "x": -4.073974609375, + "y": -1.9544525146484375 + }, + { + "x": -1.5452880859375, + "y": -3.722015380859375 + }, + { + "x": 0.1495361328125, + "y": -6.6551055908203125 + }, + { + "x": 7.183837890625, + "y": 0.5975799560546875 + }, + { + "x": 2.3763427734375, + "y": 1.5364532470703125 + }, + { + "x": -1.249267578125, + "y": -0.95538330078125 + }, + { + "x": -3.2098388671875, + "y": 0.5347747802734375 + }, + { + "x": -5.18505859375, + "y": -0.04736328125 + }, + { + "x": -2.72607421875, + "y": -2.7461395263671875 + }, + { + "x": 1.470458984375, + "y": -4.1483306884765625 + }, + { + "x": 4.78143310546875, + "y": -1.93865966796875 + }, + { + "x": 0.8095703125, + "y": -1.7400360107421875 + }, + { + "x": -3.370849609375, + "y": -0.91937255859375 + }, + { + "x": -4.7847900390625, + "y": -0.2218170166015625 + }, + { + "x": -4.47265625, + "y": -1.7854156494140625 + }, + { + "x": -1.8394775390625, + "y": -2.5873870849609375 + }, + { + "x": 1.1248779296875, + "y": -2.42657470703125 + }, + { + "x": 4.93487548828125, + "y": -3.7912445068359375 + }, + { + "x": -1.346435546875, + "y": -2.785247802734375 + }, + { + "x": -3.0611572265625, + "y": -0.898895263671875 + }, + { + "x": -5.1092529296875, + "y": -1.15338134765625 + }, + { + "x": -3.6728515625, + "y": 0.3612213134765625 + }, + { + "x": -2.0401611328125, + "y": 0.44842529296875 + }, + { + "x": 4.7130126953125, + "y": 0.3439178466796875 + }, + { + "x": 2.955322265625, + "y": -5.293365478515625 + }, + { + "x": -1.3646240234375, + "y": -0.78961181640625 + }, + { + "x": -2.2965087890625, + "y": -0.077789306640625 + }, + { + "x": -2.812744140625, + "y": -0.5838623046875 + }, + { + "x": -2.6988525390625, + "y": 2.758148193359375 + }, + { + "x": 0.9503173828125, + "y": 3.822601318359375 + }, + { + "x": 4.895263671875, + "y": 5.0408935546875 + }, + { + "x": 4.60693359375, + "y": -5.448944091796875 + }, + { + "x": -0.201171875, + "y": -2.421234130859375 + }, + { + "x": -2.2572021484375, + "y": -0.290069580078125 + }, + { + "x": -2.7542724609375, + "y": 2.223052978515625 + }, + { + "x": -1.157958984375, + "y": 6.02716064453125 + }, + { + "x": 2.02880859375, + "y": 7.47216796875 + }, + { + "x": 6.398193359375, + "y": 10.753204345703125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.35953832967822863, + "y": -0.18854427974982405, + "z": 0.2357934259677583 + }, + "rotation": { + "quaternion": { + "W": 0.9964852408007585, + "X": -0.04350679965554468, + "Y": 0.06690721770148172, + "Z": 0.025450883470581026 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img16.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img16.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 976.3771362304688, + "y": 78.11905670166016 + }, + { + "x": 1008.9569702148438, + "y": 77.57814025878906 + }, + { + "x": 1041.2015380859375, + "y": 78.81330871582031 + }, + { + "x": 1075.1090087890625, + "y": 78.62357330322266 + }, + { + "x": 1105.67236328125, + "y": 77.57579040527344 + }, + { + "x": 1136.054931640625, + "y": 80.73210906982422 + }, + { + "x": 1163.63330078125, + "y": 80.49260711669922 + }, + { + "x": 979.6699829101562, + "y": 112.67073822021484 + }, + { + "x": 1013.8866577148438, + "y": 112.67916107177734 + }, + { + "x": 1047.450439453125, + "y": 112.66675567626953 + }, + { + "x": 1077.380615234375, + "y": 112.84133911132812 + }, + { + "x": 1109.38671875, + "y": 112.65096282958984 + }, + { + "x": 1138.2279052734375, + "y": 112.73153686523438 + }, + { + "x": 1168.2261962890625, + "y": 113.72642517089844 + }, + { + "x": 984.0838012695312, + "y": 149.42889404296875 + }, + { + "x": 1017.6260986328125, + "y": 147.6898193359375 + }, + { + "x": 1049.4617919921875, + "y": 148.6537628173828 + }, + { + "x": 1081.091796875, + "y": 145.60816955566406 + }, + { + "x": 1114.0797119140625, + "y": 144.80142211914062 + }, + { + "x": 1143.380126953125, + "y": 147.0720672607422 + }, + { + "x": 1171.16796875, + "y": 146.89053344726562 + }, + { + "x": 988.493896484375, + "y": 184.90896606445312 + }, + { + "x": 1020.6245727539062, + "y": 184.37313842773438 + }, + { + "x": 1054.009765625, + "y": 182.19717407226562 + }, + { + "x": 1086.1373291015625, + "y": 181.2720947265625 + }, + { + "x": 1116.7127685546875, + "y": 182.3683624267578 + }, + { + "x": 1145.8387451171875, + "y": 182.52674865722656 + }, + { + "x": 1175.5814208984375, + "y": 181.57553100585938 + }, + { + "x": 990.314208984375, + "y": 220.5683135986328 + }, + { + "x": 1025.7001953125, + "y": 219.46543884277344 + }, + { + "x": 1056.943603515625, + "y": 217.2795867919922 + }, + { + "x": 1089.5897216796875, + "y": 217.6332244873047 + }, + { + "x": 1118.677490234375, + "y": 216.30404663085938 + }, + { + "x": 1150.2711181640625, + "y": 216.16238403320312 + }, + { + "x": 1176.2158203125, + "y": 215.55845642089844 + }, + { + "x": 994.5538940429688, + "y": 256.58038330078125 + }, + { + "x": 1027.9820556640625, + "y": 252.2428436279297 + }, + { + "x": 1058.5037841796875, + "y": 251.62290954589844 + }, + { + "x": 1089.8433837890625, + "y": 253.19512939453125 + }, + { + "x": 1121.399658203125, + "y": 250.287353515625 + }, + { + "x": 1150.4476318359375, + "y": 249.2984161376953 + }, + { + "x": 1180.1102294921875, + "y": 248.98129272460938 + }, + { + "x": 995.0901489257812, + "y": 291.81256103515625 + }, + { + "x": 1029.6546630859375, + "y": 289.99395751953125 + }, + { + "x": 1061.3609619140625, + "y": 288.4380187988281 + }, + { + "x": 1092.607666015625, + "y": 286.4822082519531 + }, + { + "x": 1123.312255859375, + "y": 284.2214660644531 + }, + { + "x": 1153.556396484375, + "y": 284.206298828125 + }, + { + "x": 1183.0421142578125, + "y": 281.3818054199219 + } + ], + "reprojectionErrors": [ + { + "x": 11.75750732421875, + "y": 7.856536865234375 + }, + { + "x": 6.32257080078125, + "y": 6.352394104003906 + }, + { + "x": 2.04052734375, + "y": 3.0105743408203125 + }, + { + "x": -3.049072265625, + "y": 1.0292510986328125 + }, + { + "x": -3.899658203125, + "y": -0.1614532470703125 + }, + { + "x": -3.632080078125, + "y": -5.626861572265625 + }, + { + "x": 0.422119140625, + "y": -7.77044677734375 + }, + { + "x": 10.23284912109375, + "y": 4.8482208251953125 + }, + { + "x": 3.498291015625, + "y": 3.2447357177734375 + }, + { + "x": -1.745849609375, + "y": 1.6134796142578125 + }, + { + "x": -2.480224609375, + "y": -0.255615234375 + }, + { + "x": -4.372802734375, + "y": -1.8129959106445312 + }, + { + "x": -2.1387939453125, + "y": -3.6971282958984375 + }, + { + "x": -0.0535888671875, + "y": -6.554084777832031 + }, + { + "x": 7.6275634765625, + "y": 0.352935791015625 + }, + { + "x": 1.91302490234375, + "y": 0.9682769775390625 + }, + { + "x": -1.2369384765625, + "y": -1.154022216796875 + }, + { + "x": -3.282958984375, + "y": 0.6969451904296875 + }, + { + "x": -5.745849609375, + "y": 0.2710723876953125 + }, + { + "x": -3.534423828125, + "y": -3.27203369140625 + }, + { + "x": 1.2249755859375, + "y": -4.404754638671875 + }, + { + "x": 5.06768798828125, + "y": -2.1198577880859375 + }, + { + "x": 1.119140625, + "y": -2.2139434814453125 + }, + { + "x": -3.2047119140625, + "y": -0.6875457763671875 + }, + { + "x": -5.349853515625, + "y": -0.4326019287109375 + }, + { + "x": -4.9774169921875, + "y": -2.2205810546875 + }, + { + "x": -2.142578125, + "y": -3.0933074951171875 + }, + { + "x": 1.138916015625, + "y": -2.8801727294921875 + }, + { + "x": 5.14080810546875, + "y": -4.00146484375 + }, + { + "x": -1.6995849609375, + "y": -3.011016845703125 + }, + { + "x": -3.49609375, + "y": -0.941131591796875 + }, + { + "x": -5.750732421875, + "y": -1.414459228515625 + }, + { + "x": -3.4561767578125, + "y": -0.2088470458984375 + }, + { + "x": -2.6273193359375, + "y": -0.1948394775390625 + }, + { + "x": 4.943115234375, + "y": 0.277130126953125 + }, + { + "x": 2.8392333984375, + "y": -5.4380340576171875 + }, + { + "x": -1.67041015625, + "y": -0.67047119140625 + }, + { + "x": -2.3494873046875, + "y": 0.39324951171875 + }, + { + "x": -2.8773193359375, + "y": -0.7207794189453125 + }, + { + "x": -2.6044921875, + "y": 2.6603240966796875 + }, + { + "x": 1.2449951171875, + "y": 4.13848876953125 + }, + { + "x": 5.6029052734375, + "y": 4.9615478515625 + }, + { + "x": 4.28741455078125, + "y": -5.26837158203125 + }, + { + "x": -0.9759521484375, + "y": -2.450958251953125 + }, + { + "x": -2.43310546875, + "y": 0.1361083984375 + }, + { + "x": -2.43603515625, + "y": 3.156951904296875 + }, + { + "x": -0.8521728515625, + "y": 6.518341064453125 + }, + { + "x": 2.2899169921875, + "y": 7.671600341796875 + }, + { + "x": 7.3453369140625, + "y": 11.673553466796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.3376622854645539, + "y": -0.20234070372028368, + "z": 0.22196961334498885 + }, + "rotation": { + "quaternion": { + "W": 0.9962210681238468, + "X": -0.05093509983118777, + "Y": 0.06247485525983141, + "Z": 0.03234333766994277 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img17.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img17.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 786.687255859375, + "y": 372.55841064453125 + }, + { + "x": 817.9632568359375, + "y": 370.72412109375 + }, + { + "x": 849.2498779296875, + "y": 370.646484375 + }, + { + "x": 882.1162719726562, + "y": 368.5846252441406 + }, + { + "x": 912.45947265625, + "y": 365.4188537597656 + }, + { + "x": 942.3304443359375, + "y": 366.7344970703125 + }, + { + "x": 970.7257690429688, + "y": 363.3737487792969 + }, + { + "x": 786.491455078125, + "y": 404.6744689941406 + }, + { + "x": 819.320556640625, + "y": 403.5381164550781 + }, + { + "x": 852.2510986328125, + "y": 402.3951110839844 + }, + { + "x": 881.3427734375, + "y": 400.123046875 + }, + { + "x": 911.6289672851562, + "y": 398.4598693847656 + }, + { + "x": 940.115478515625, + "y": 396.98065185546875 + }, + { + "x": 970.4358520507812, + "y": 396.2145080566406 + }, + { + "x": 787.7067260742188, + "y": 438.1477355957031 + }, + { + "x": 820.138916015625, + "y": 436.469482421875 + }, + { + "x": 849.6089477539062, + "y": 435.27606201171875 + }, + { + "x": 879.5797729492188, + "y": 430.7545471191406 + }, + { + "x": 912.593994140625, + "y": 427.8049011230469 + }, + { + "x": 941.4520874023438, + "y": 428.4593200683594 + }, + { + "x": 968.4617309570312, + "y": 426.2095642089844 + }, + { + "x": 788.423828125, + "y": 470.6040344238281 + }, + { + "x": 819.2742919921875, + "y": 468.2814636230469 + }, + { + "x": 850.394775390625, + "y": 464.505859375 + }, + { + "x": 881.4256591796875, + "y": 462.7981262207031 + }, + { + "x": 911.0547485351562, + "y": 462.3161315917969 + }, + { + "x": 939.3921508789062, + "y": 460.1109924316406 + }, + { + "x": 968.3837280273438, + "y": 457.37249755859375 + }, + { + "x": 787.6683959960938, + "y": 501.46514892578125 + }, + { + "x": 820.7720336914062, + "y": 498.9275207519531 + }, + { + "x": 850.28466796875, + "y": 496.09942626953125 + }, + { + "x": 881.6282348632812, + "y": 494.8021545410156 + }, + { + "x": 909.9054565429688, + "y": 491.4823303222656 + }, + { + "x": 939.28271484375, + "y": 489.4258117675781 + }, + { + "x": 965.8916625976562, + "y": 487.3223571777344 + }, + { + "x": 789.5588989257812, + "y": 533.2293701171875 + }, + { + "x": 820.3237915039062, + "y": 528.0891723632812 + }, + { + "x": 848.5849609375, + "y": 525.1749267578125 + }, + { + "x": 879.5089721679688, + "y": 524.5092163085938 + }, + { + "x": 909.8077392578125, + "y": 521.8016967773438 + }, + { + "x": 937.205810546875, + "y": 518.5345458984375 + }, + { + "x": 966.6731567382812, + "y": 517.2835693359375 + }, + { + "x": 786.92138671875, + "y": 562.3927612304688 + }, + { + "x": 819.7315673828125, + "y": 559.4210205078125 + }, + { + "x": 849.3114624023438, + "y": 556.540283203125 + }, + { + "x": 879.61962890625, + "y": 554.3809204101562 + }, + { + "x": 907.7431030273438, + "y": 550.1773071289062 + }, + { + "x": 937.2695922851562, + "y": 547.7181396484375 + }, + { + "x": 966.4390869140625, + "y": 542.7944946289062 + } + ], + "reprojectionErrors": [ + { + "x": 6.85760498046875, + "y": 6.240386962890625 + }, + { + "x": 1.8377685546875, + "y": 3.337066650390625 + }, + { + "x": -1.54486083984375, + "y": -1.6202392578125 + }, + { + "x": -4.69927978515625, + "y": -4.919586181640625 + }, + { + "x": -3.34100341796875, + "y": -7.4739990234375 + }, + { + "x": 0.68585205078125, + "y": -14.9061279296875 + }, + { + "x": 8.62109375, + "y": -18.100830078125 + }, + { + "x": 8.8729248046875, + "y": 6.73358154296875 + }, + { + "x": 1.64129638671875, + "y": 4.226104736328125 + }, + { + "x": -4.13031005859375, + "y": 1.502960205078125 + }, + { + "x": -4.35406494140625, + "y": -0.3343505859375 + }, + { + "x": -3.89691162109375, + "y": -3.047576904296875 + }, + { + "x": 0.42431640625, + "y": -6.238616943359375 + }, + { + "x": 5.19110107421875, + "y": -10.46722412109375 + }, + { + "x": 9.38372802734375, + "y": 4.194549560546875 + }, + { + "x": 1.92236328125, + "y": 3.2166748046875 + }, + { + "x": -1.094970703125, + "y": 1.596343994140625 + }, + { + "x": -2.99530029296875, + "y": 3.13201904296875 + }, + { + "x": -6.16815185546875, + "y": 2.907440185546875 + }, + { + "x": -3.24090576171875, + "y": -1.12799072265625 + }, + { + "x": 3.675048828125, + "y": -2.486907958984375 + }, + { + "x": 10.3062744140625, + "y": 1.123260498046875 + }, + { + "x": 3.829833984375, + "y": 1.68310546875 + }, + { + "x": -1.50848388671875, + "y": 3.594085693359375 + }, + { + "x": -5.22344970703125, + "y": 3.3262939453125 + }, + { + "x": -5.8616943359375, + "y": 1.711639404296875 + }, + { + "x": -3.37451171875, + "y": 1.687469482421875 + }, + { + "x": 0.471923828125, + "y": 2.051025390625 + }, + { + "x": 12.6212158203125, + "y": -1.7884521484375 + }, + { + "x": 3.32257080078125, + "y": -0.204345703125 + }, + { + "x": -1.0452880859375, + "y": 1.616546630859375 + }, + { + "x": -5.78790283203125, + "y": 1.8482666015625 + }, + { + "x": -5.8778076171875, + "y": 4.039031982421875 + }, + { + "x": -5.33502197265625, + "y": 4.89703369140625 + }, + { + "x": -0.12640380859375, + "y": 5.725982666015625 + }, + { + "x": 12.21588134765625, + "y": -6.936279296875 + }, + { + "x": 4.7127685546875, + "y": -2.01556396484375 + }, + { + "x": 0.98974609375, + "y": 0.6671142578125 + }, + { + "x": -4.0118408203125, + "y": 1.08819580078125 + }, + { + "x": -6.8834228515625, + "y": 3.536865234375 + }, + { + "x": -5.21453857421875, + "y": 6.52972412109375 + }, + { + "x": -3.8236083984375, + "y": 7.48944091796875 + }, + { + "x": 16.26934814453125, + "y": -10.72308349609375 + }, + { + "x": 6.20196533203125, + "y": -7.30419921875 + }, + { + "x": 0.5821533203125, + "y": -3.952392578125 + }, + { + "x": -4.44842529296875, + "y": -1.296142578125 + }, + { + "x": -5.86492919921875, + "y": 3.4324951171875 + }, + { + "x": -7.13037109375, + "y": 6.44720458984375 + }, + { + "x": -6.34503173828125, + "y": 11.959716796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.11487852803730356, + "y": 0.012759435881769964, + "z": 0.21465726439151156 + }, + "rotation": { + "quaternion": { + "W": 0.9811702036075526, + "X": 0.12700136011510746, + "Y": 0.11574292677789658, + "Z": -0.08820011894840699 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img18.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img18.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 742.7108764648438, + "y": 426.1680603027344 + }, + { + "x": 773.2683715820312, + "y": 424.5452880859375 + }, + { + "x": 803.8978271484375, + "y": 424.2264404296875 + }, + { + "x": 836.7348022460938, + "y": 421.6802673339844 + }, + { + "x": 867.8759155273438, + "y": 417.8452453613281 + }, + { + "x": 897.810546875, + "y": 419.3948059082031 + }, + { + "x": 926.7733764648438, + "y": 415.383056640625 + }, + { + "x": 743.3133544921875, + "y": 457.8565979003906 + }, + { + "x": 775.566650390625, + "y": 456.4815979003906 + }, + { + "x": 807.4449462890625, + "y": 454.8724670410156 + }, + { + "x": 837.3207397460938, + "y": 453.0321960449219 + }, + { + "x": 868.4614868164062, + "y": 451.2330322265625 + }, + { + "x": 897.4261474609375, + "y": 448.8849792480469 + }, + { + "x": 927.7659301757812, + "y": 447.5005187988281 + }, + { + "x": 745.7337036132812, + "y": 490.8035888671875 + }, + { + "x": 776.8942260742188, + "y": 488.36993408203125 + }, + { + "x": 807.3583374023438, + "y": 488.13787841796875 + }, + { + "x": 838.0216674804688, + "y": 483.4027404785156 + }, + { + "x": 870.75, + "y": 480.43988037109375 + }, + { + "x": 900.0709838867188, + "y": 480.49395751953125 + }, + { + "x": 928.5118408203125, + "y": 478.18408203125 + }, + { + "x": 747.0482177734375, + "y": 522.7080688476562 + }, + { + "x": 778.2042236328125, + "y": 520.8870849609375 + }, + { + "x": 809.6731567382812, + "y": 517.5076904296875 + }, + { + "x": 841.181884765625, + "y": 515.4292602539062 + }, + { + "x": 870.9568481445312, + "y": 514.7545776367188 + }, + { + "x": 900.29736328125, + "y": 512.7984619140625 + }, + { + "x": 930.517333984375, + "y": 509.739013671875 + }, + { + "x": 747.9060668945312, + "y": 554.2225341796875 + }, + { + "x": 781.2913208007812, + "y": 551.9307250976562 + }, + { + "x": 811.1275024414062, + "y": 549.02685546875 + }, + { + "x": 842.95703125, + "y": 548.3220825195312 + }, + { + "x": 872.4857788085938, + "y": 544.3904418945312 + }, + { + "x": 903.0370483398438, + "y": 543.481201171875 + }, + { + "x": 929.512939453125, + "y": 540.5745239257812 + }, + { + "x": 750.9721069335938, + "y": 586.3074951171875 + }, + { + "x": 782.2745971679688, + "y": 581.2626342773438 + }, + { + "x": 811.0667724609375, + "y": 579.0872802734375 + }, + { + "x": 841.55859375, + "y": 579.8032836914062 + }, + { + "x": 872.974609375, + "y": 575.5254516601562 + }, + { + "x": 901.6663208007812, + "y": 572.5870971679688 + }, + { + "x": 931.6400756835938, + "y": 570.0150146484375 + }, + { + "x": 750.46533203125, + "y": 615.5924682617188 + }, + { + "x": 781.9362182617188, + "y": 612.6946411132812 + }, + { + "x": 813.23486328125, + "y": 610.7510375976562 + }, + { + "x": 843.5987548828125, + "y": 608.5914306640625 + }, + { + "x": 873.6616821289062, + "y": 604.631103515625 + }, + { + "x": 903.9508056640625, + "y": 603.3263549804688 + }, + { + "x": 933.5914916992188, + "y": 598.4886474609375 + } + ], + "reprojectionErrors": [ + { + "x": 3.99530029296875, + "y": 4.633148193359375 + }, + { + "x": 0.33721923828125, + "y": 1.438323974609375 + }, + { + "x": -1.72601318359375, + "y": -3.358978271484375 + }, + { + "x": -4.16998291015625, + "y": -6.256103515625 + }, + { + "x": -2.910400390625, + "y": -8.223968505859375 + }, + { + "x": 1.7691650390625, + "y": -15.97283935546875 + }, + { + "x": 9.8687744140625, + "y": -18.598907470703125 + }, + { + "x": 7.218017578125, + "y": 6.40869140625 + }, + { + "x": 1.13775634765625, + "y": 4.090484619140625 + }, + { + "x": -2.9976806640625, + "y": 1.78485107421875 + }, + { + "x": -3.41522216796875, + "y": -0.53167724609375 + }, + { + "x": -3.2181396484375, + "y": -3.154541015625 + }, + { + "x": 1.22039794921875, + "y": -5.519989013671875 + }, + { + "x": 6.56036376953125, + "y": -9.1702880859375 + }, + { + "x": 8.398193359375, + "y": 4.959869384765625 + }, + { + "x": 2.72186279296875, + "y": 4.70123291015625 + }, + { + "x": -0.77703857421875, + "y": 2.084564208984375 + }, + { + "x": -2.86126708984375, + "y": 3.800445556640625 + }, + { + "x": -5.2471923828125, + "y": 3.5577392578125 + }, + { + "x": -2.29400634765625, + "y": 0.094024658203125 + }, + { + "x": 3.66143798828125, + "y": -1.22998046875 + }, + { + "x": 10.47869873046875, + "y": 2.75592041015625 + }, + { + "x": 4.15283203125, + "y": 2.777587890625 + }, + { + "x": -1.0865478515625, + "y": 4.25628662109375 + }, + { + "x": -4.84442138671875, + "y": 4.32373046875 + }, + { + "x": -5.21112060546875, + "y": 2.8673095703125 + }, + { + "x": -3.332763671875, + "y": 2.5611572265625 + }, + { + "x": -0.35076904296875, + "y": 3.214599609375 + }, + { + "x": 12.8275146484375, + "y": -0.7060546875 + }, + { + "x": 3.6505126953125, + "y": 0.58465576171875 + }, + { + "x": -0.65289306640625, + "y": 2.43267822265625 + }, + { + "x": -5.51336669921875, + "y": 2.022216796875 + }, + { + "x": -6.51220703125, + "y": 4.7740478515625 + }, + { + "x": -6.8330078125, + "y": 4.43310546875 + }, + { + "x": -1.22119140625, + "y": 6.0128173828125 + }, + { + "x": 12.79498291015625, + "y": -6.25311279296875 + }, + { + "x": 5.10888671875, + "y": -1.4945068359375 + }, + { + "x": 1.1884765625, + "y": 0.37933349609375 + }, + { + "x": -3.0733642578125, + "y": -0.65460205078125 + }, + { + "x": -6.786865234375, + "y": 3.28741455078125 + }, + { + "x": -6.17578125, + "y": 5.8704833984375 + }, + { + "x": -5.1038818359375, + "y": 8.06622314453125 + }, + { + "x": 16.17578125, + "y": -10.395263671875 + }, + { + "x": 7.75732421875, + "y": -7.142578125 + }, + { + "x": 0.70257568359375, + "y": -4.8258056640625 + }, + { + "x": -4.13104248046875, + "y": -2.273193359375 + }, + { + "x": -7.272216796875, + "y": 2.1015625 + }, + { + "x": -9.131103515625, + "y": 3.8438720703125 + }, + { + "x": -8.70263671875, + "y": 9.1444091796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.058653851135174725, + "y": 0.04566663540906264, + "z": 0.19693876770591434 + }, + "rotation": { + "quaternion": { + "W": 0.9805026325922506, + "X": 0.13393228347274463, + "Y": 0.10143045464699901, + "Z": -0.10192445140173909 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img19.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img19.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 930.2930297851562, + "y": 521.8823852539062 + }, + { + "x": 928.4281005859375, + "y": 554.5870971679688 + }, + { + "x": 926.4312744140625, + "y": 584.8357543945312 + }, + { + "x": 925.4949951171875, + "y": 615.6098022460938 + }, + { + "x": 922.3023681640625, + "y": 645.4846801757812 + }, + { + "x": 921.6383666992188, + "y": 674.5044555664062 + }, + { + "x": 921.7269897460938, + "y": 700.5091552734375 + }, + { + "x": 900.2755737304688, + "y": 524.912109375 + }, + { + "x": 897.7530517578125, + "y": 554.48193359375 + }, + { + "x": 896.6345825195312, + "y": 585.5088500976562 + }, + { + "x": 894.6600341796875, + "y": 617.7409057617188 + }, + { + "x": 894.5452270507812, + "y": 646.7625122070312 + }, + { + "x": 892.093994140625, + "y": 674.9449462890625 + }, + { + "x": 890.5631103515625, + "y": 704.2645263671875 + }, + { + "x": 869.3179931640625, + "y": 522.2911376953125 + }, + { + "x": 867.5881958007812, + "y": 555.5122680664062 + }, + { + "x": 867.419921875, + "y": 584.616943359375 + }, + { + "x": 865.1508178710938, + "y": 618.2076416015625 + }, + { + "x": 863.4517211914062, + "y": 647.4515380859375 + }, + { + "x": 862.7946166992188, + "y": 677.1578979492188 + }, + { + "x": 860.7528686523438, + "y": 704.3689575195312 + }, + { + "x": 837.6419677734375, + "y": 524.7572631835938 + }, + { + "x": 836.3621215820312, + "y": 555.8680419921875 + }, + { + "x": 833.3504638671875, + "y": 585.7684326171875 + }, + { + "x": 834.6243896484375, + "y": 617.7164916992188 + }, + { + "x": 834.0931396484375, + "y": 649.2485961914062 + }, + { + "x": 830.85498046875, + "y": 679.1043701171875 + }, + { + "x": 830.5119018554688, + "y": 707.33544921875 + }, + { + "x": 804.439697265625, + "y": 525.7155151367188 + }, + { + "x": 806.246826171875, + "y": 556.7699584960938 + }, + { + "x": 802.8836669921875, + "y": 589.4603271484375 + }, + { + "x": 803.2324829101562, + "y": 618.220947265625 + }, + { + "x": 801.8178100585938, + "y": 648.6454467773438 + }, + { + "x": 799.4912719726562, + "y": 676.8574829101562 + }, + { + "x": 799.7763671875, + "y": 707.7059326171875 + }, + { + "x": 772.771240234375, + "y": 524.6691284179688 + }, + { + "x": 772.8746337890625, + "y": 556.6868286132812 + }, + { + "x": 772.3267822265625, + "y": 588.286865234375 + }, + { + "x": 771.1640014648438, + "y": 620.0821533203125 + }, + { + "x": 772.3128051757812, + "y": 649.9810791015625 + }, + { + "x": 771.07470703125, + "y": 678.0538940429688 + }, + { + "x": 769.908447265625, + "y": 709.3486328125 + }, + { + "x": 741.7338256835938, + "y": 524.5845336914062 + }, + { + "x": 740.3761596679688, + "y": 556.4750366210938 + }, + { + "x": 740.3605346679688, + "y": 589.0512084960938 + }, + { + "x": 740.2996215820312, + "y": 620.3385009765625 + }, + { + "x": 738.5842895507812, + "y": 650.6836547851562 + }, + { + "x": 739.9268798828125, + "y": 681.4420166015625 + }, + { + "x": 736.4208374023438, + "y": 709.7619018554688 + } + ], + "reprojectionErrors": [ + { + "x": 10.29974365234375, + "y": -12.075103759765625 + }, + { + "x": 6.435546875, + "y": -5.225830078125 + }, + { + "x": 3.16162109375, + "y": 0.915283203125 + }, + { + "x": -0.76751708984375, + "y": 3.73187255859375 + }, + { + "x": -2.07989501953125, + "y": 4.95947265625 + }, + { + "x": -5.59912109375, + "y": 4.82061767578125 + }, + { + "x": -9.58251953125, + "y": 5.705078125 + }, + { + "x": 3.54608154296875, + "y": -12.0882568359375 + }, + { + "x": 1.95367431640625, + "y": -3.00091552734375 + }, + { + "x": -0.7198486328125, + "y": 1.594970703125 + }, + { + "x": -2.2508544921875, + "y": 2.29510498046875 + }, + { + "x": -5.386474609375, + "y": 3.808837890625 + }, + { + "x": -5.9573974609375, + "y": 4.017333984375 + }, + { + "x": -7.24365234375, + "y": 1.16253662109375 + }, + { + "x": -0.7978515625, + "y": -6.57122802734375 + }, + { + "x": -1.68963623046875, + "y": -1.9927978515625 + }, + { + "x": -3.9410400390625, + "y": 3.789794921875 + }, + { + "x": -3.91204833984375, + "y": 2.498046875 + }, + { + "x": -4.29278564453125, + "y": 3.24267578125 + }, + { + "x": -5.57196044921875, + "y": 1.45361328125 + }, + { + "x": -5.337158203125, + "y": 0.29608154296875 + }, + { + "x": -3.04010009765625, + "y": -6.25482177734375 + }, + { + "x": -2.9991455078125, + "y": -0.38690185546875 + }, + { + "x": -1.132568359375, + "y": 3.89398193359375 + }, + { + "x": -3.4681396484375, + "y": 3.63555908203125 + }, + { + "x": -3.92388916015625, + "y": 1.56427001953125 + }, + { + "x": -1.605712890625, + "y": -0.832275390625 + }, + { + "x": -2.12213134765625, + "y": -3.408447265625 + }, + { + "x": -2.45263671875, + "y": -4.53753662109375 + }, + { + "x": -4.21722412109375, + "y": 0.60040283203125 + }, + { + "x": -0.814697265625, + "y": 1.4130859375 + }, + { + "x": -1.126953125, + "y": 3.7552490234375 + }, + { + "x": 0.32171630859375, + "y": 2.2822265625 + }, + { + "x": 2.67999267578125, + "y": 1.08612060546875 + }, + { + "x": 2.424560546875, + "y": -4.494140625 + }, + { + "x": -2.169189453125, + "y": -0.91644287109375 + }, + { + "x": -1.041748046875, + "y": 2.50421142578125 + }, + { + "x": 0.6470947265625, + "y": 3.7552490234375 + }, + { + "x": 2.87042236328125, + "y": 2.49713134765625 + }, + { + "x": 2.7100830078125, + "y": 1.0576171875 + }, + { + "x": 4.87158203125, + "y": -0.428466796875 + }, + { + "x": 6.90234375, + "y": -6.8302001953125 + }, + { + "x": -1.355224609375, + "y": 1.6475830078125 + }, + { + "x": 2.33599853515625, + "y": 4.4718017578125 + }, + { + "x": 4.5177001953125, + "y": 4.11944580078125 + }, + { + "x": 6.5947265625, + "y": 2.8238525390625 + }, + { + "x": 10.19110107421875, + "y": 0.46246337890625 + }, + { + "x": 10.6077880859375, + "y": -4.12493896484375 + }, + { + "x": 15.76263427734375, + "y": -7.916015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.19573026512465327, + "y": 0.0755017744776876, + "z": 0.15287815988055942 + }, + "rotation": { + "quaternion": { + "W": 0.7471648281318961, + "X": 0.13451448249916045, + "Y": -0.05840677782661824, + "Z": 0.6482586072737712 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img20.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img20.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 627.6473999023438, + "y": 537.372314453125 + }, + { + "x": 659.250732421875, + "y": 537.2542724609375 + }, + { + "x": 690.8466186523438, + "y": 538.5137939453125 + }, + { + "x": 726.2086181640625, + "y": 538.0162963867188 + }, + { + "x": 758.7374877929688, + "y": 534.7128295898438 + }, + { + "x": 791.2130737304688, + "y": 537.6094970703125 + }, + { + "x": 823.1832885742188, + "y": 533.6078491210938 + }, + { + "x": 626.9494018554688, + "y": 569.18896484375 + }, + { + "x": 660.038818359375, + "y": 569.4625244140625 + }, + { + "x": 694.1927490234375, + "y": 569.68017578125 + }, + { + "x": 725.7488403320312, + "y": 567.8314208984375 + }, + { + "x": 757.8642578125, + "y": 568.5830078125 + }, + { + "x": 788.9641723632812, + "y": 567.5523071289062 + }, + { + "x": 821.9736938476562, + "y": 567.92431640625 + }, + { + "x": 628.6737060546875, + "y": 601.5724487304688 + }, + { + "x": 660.6275024414062, + "y": 601.5453491210938 + }, + { + "x": 691.5250244140625, + "y": 602.5435180664062 + }, + { + "x": 723.3204345703125, + "y": 599.2420654296875 + }, + { + "x": 758.8004150390625, + "y": 597.3927612304688 + }, + { + "x": 788.7395629882812, + "y": 598.7766723632812 + }, + { + "x": 820.296875, + "y": 598.3792114257812 + }, + { + "x": 628.9960327148438, + "y": 633.6968383789062 + }, + { + "x": 660.2152099609375, + "y": 633.2537841796875 + }, + { + "x": 693.1630249023438, + "y": 632.1785888671875 + }, + { + "x": 725.53857421875, + "y": 630.9991455078125 + }, + { + "x": 757.4515380859375, + "y": 632.367919921875 + }, + { + "x": 787.7308959960938, + "y": 631.837890625 + }, + { + "x": 820.3151245117188, + "y": 629.783935546875 + }, + { + "x": 628.6217041015625, + "y": 663.4052734375 + }, + { + "x": 662.303955078125, + "y": 663.3199462890625 + }, + { + "x": 692.9940795898438, + "y": 661.6192626953125 + }, + { + "x": 725.93603515625, + "y": 663.245849609375 + }, + { + "x": 756.1767578125, + "y": 661.7139282226562 + }, + { + "x": 789.0780029296875, + "y": 661.5415649414062 + }, + { + "x": 818.366943359375, + "y": 659.6654663085938 + }, + { + "x": 630.5034790039062, + "y": 694.378173828125 + }, + { + "x": 662.2937622070312, + "y": 691.4732055664062 + }, + { + "x": 691.4989624023438, + "y": 691.2490234375 + }, + { + "x": 723.4598388671875, + "y": 693.4288330078125 + }, + { + "x": 757.3562622070312, + "y": 692.1854858398438 + }, + { + "x": 787.0931396484375, + "y": 689.6062622070312 + }, + { + "x": 818.740966796875, + "y": 690.1533203125 + }, + { + "x": 627.5806274414062, + "y": 723.46826171875 + }, + { + "x": 662.6827392578125, + "y": 723.1846313476562 + }, + { + "x": 692.662353515625, + "y": 721.7540283203125 + }, + { + "x": 724.5338745117188, + "y": 721.7962646484375 + }, + { + "x": 755.6080322265625, + "y": 719.1637573242188 + }, + { + "x": 787.081298828125, + "y": 719.6913452148438 + }, + { + "x": 819.5531005859375, + "y": 715.990234375 + } + ], + "reprojectionErrors": [ + { + "x": -7.0897216796875, + "y": -4.831298828125 + }, + { + "x": -4.4383544921875, + "y": -5.96917724609375 + }, + { + "x": -1.3636474609375, + "y": -8.4998779296875 + }, + { + "x": -1.63153076171875, + "y": -9.2890625 + }, + { + "x": 1.36505126953125, + "y": -7.28814697265625 + }, + { + "x": 4.854248046875, + "y": -11.5035400390625 + }, + { + "x": 9.29632568359375, + "y": -8.83697509765625 + }, + { + "x": -1.24981689453125, + "y": 2.0802001953125 + }, + { + "x": -1.81884765625, + "y": 0.8370361328125 + }, + { + "x": -3.07806396484375, + "y": -0.361328125 + }, + { + "x": -1.3585205078125, + "y": 0.4952392578125 + }, + { + "x": 0.18927001953125, + "y": -1.26007080078125 + }, + { + "x": 3.14691162109375, + "y": -1.24481201171875 + }, + { + "x": 4.59625244140625, + "y": -2.64434814453125 + }, + { + "x": 1.66693115234375, + "y": 4.6524658203125 + }, + { + "x": 0.666259765625, + "y": 3.94775390625 + }, + { + "x": 1.0606689453125, + "y": 2.209716796875 + }, + { + "x": 0.901611328125, + "y": 4.76312255859375 + }, + { + "x": -2.5919189453125, + "y": 5.8560791015625 + }, + { + "x": -0.18865966796875, + "y": 3.70745849609375 + }, + { + "x": 0.9583740234375, + "y": 3.33154296875 + }, + { + "x": 5.5545654296875, + "y": 4.23699951171875 + }, + { + "x": 3.86541748046875, + "y": 4.14691162109375 + }, + { + "x": 0.75567626953125, + "y": 4.68341064453125 + }, + { + "x": -1.46893310546875, + "y": 5.3184814453125 + }, + { + "x": -2.9130859375, + "y": 3.3995361328125 + }, + { + "x": -2.40069580078125, + "y": 3.37359619140625 + }, + { + "x": -3.86517333984375, + "y": 4.8656005859375 + }, + { + "x": 9.76519775390625, + "y": 3.4229736328125 + }, + { + "x": 4.31488037109375, + "y": 3.14215087890625 + }, + { + "x": 2.1380615234375, + "y": 4.47308349609375 + }, + { + "x": -2.00506591796875, + "y": 2.4730224609375 + }, + { + "x": -3.1571044921875, + "y": 3.62762451171875 + }, + { + "x": -6.6754150390625, + "y": 3.41888427734375 + }, + { + "x": -6.28271484375, + "y": 4.90997314453125 + }, + { + "x": 11.3936767578125, + "y": -1.11126708984375 + }, + { + "x": 6.6466064453125, + "y": 1.5687255859375 + }, + { + "x": 4.7425537109375, + "y": 1.56573486328125 + }, + { + "x": 0.34442138671875, + "y": -0.84344482421875 + }, + { + "x": -5.723876953125, + "y": 0.1683349609375 + }, + { + "x": -7.36334228515625, + "y": 2.513671875 + }, + { + "x": -10.640625, + "y": 1.73046875 + }, + { + "x": 17.54058837890625, + "y": -5.91815185546875 + }, + { + "x": 8.38897705078125, + "y": -5.73974609375 + }, + { + "x": 4.59722900390625, + "y": -4.4154052734375 + }, + { + "x": -0.84588623046875, + "y": -4.5648193359375 + }, + { + "x": -5.2476806640625, + "y": -2.04058837890625 + }, + { + "x": -9.80133056640625, + "y": -2.67742919921875 + }, + { + "x": -15.102783203125, + "y": 0.91339111328125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.04959409873067281, + "y": 0.08269395457292886, + "z": 0.14526706373676304 + }, + "rotation": { + "quaternion": { + "W": 0.9872731389165007, + "X": 0.1566217405867127, + "Y": 0.013560060852511373, + "Z": -0.024031319132011626 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img21.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img21.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 702.43212890625, + "y": 560.4592895507812 + }, + { + "x": 703.14599609375, + "y": 593.5857543945312 + }, + { + "x": 703.6443481445312, + "y": 625.6906127929688 + }, + { + "x": 706.0320434570312, + "y": 657.6135864257812 + }, + { + "x": 705.3821411132812, + "y": 688.0955810546875 + }, + { + "x": 707.5994262695312, + "y": 717.8951416015625 + }, + { + "x": 710.409912109375, + "y": 744.7941284179688 + }, + { + "x": 669.618408203125, + "y": 564.4953002929688 + }, + { + "x": 669.6210327148438, + "y": 595.2642211914062 + }, + { + "x": 671.611328125, + "y": 627.2230834960938 + }, + { + "x": 672.329345703125, + "y": 659.7960815429688 + }, + { + "x": 674.6647338867188, + "y": 690.2717895507812 + }, + { + "x": 675.05126953125, + "y": 718.9273071289062 + }, + { + "x": 676.71044921875, + "y": 749.3379516601562 + }, + { + "x": 635.9852905273438, + "y": 562.7620239257812 + }, + { + "x": 637.1107788085938, + "y": 597.3396606445312 + }, + { + "x": 639.2740478515625, + "y": 627.2415771484375 + }, + { + "x": 640.060302734375, + "y": 661.3781127929688 + }, + { + "x": 641.2749633789062, + "y": 691.00048828125 + }, + { + "x": 643.2245483398438, + "y": 721.6380004882812 + }, + { + "x": 644.6870727539062, + "y": 749.2940673828125 + }, + { + "x": 602.7177734375, + "y": 566.7103881835938 + }, + { + "x": 603.4466552734375, + "y": 598.4605712890625 + }, + { + "x": 604.0237426757812, + "y": 629.3917846679688 + }, + { + "x": 607.599365234375, + "y": 661.4688720703125 + }, + { + "x": 610.4700317382812, + "y": 694.1624145507812 + }, + { + "x": 610.2099609375, + "y": 723.426025390625 + }, + { + "x": 612.3482666015625, + "y": 752.5397338867188 + }, + { + "x": 567.329833984375, + "y": 568.4594116210938 + }, + { + "x": 571.1749877929688, + "y": 600.0908203125 + }, + { + "x": 571.4144287109375, + "y": 633.1283569335938 + }, + { + "x": 574.2169799804688, + "y": 662.683349609375 + }, + { + "x": 576.06103515625, + "y": 693.7738037109375 + }, + { + "x": 576.7919921875, + "y": 722.5811767578125 + }, + { + "x": 580.4322509765625, + "y": 753.3568115234375 + }, + { + "x": 534.3890380859375, + "y": 568.438720703125 + }, + { + "x": 537.2146606445312, + "y": 600.8194580078125 + }, + { + "x": 539.5265502929688, + "y": 633.19287109375 + }, + { + "x": 541.1780395507812, + "y": 665.2832641601562 + }, + { + "x": 545.530517578125, + "y": 695.5921020507812 + }, + { + "x": 547.4390258789062, + "y": 723.3828735351562 + }, + { + "x": 548.3944091796875, + "y": 754.2733764648438 + }, + { + "x": 502.6153564453125, + "y": 569.2786865234375 + }, + { + "x": 503.6550598144531, + "y": 601.3978881835938 + }, + { + "x": 507.3798828125, + "y": 633.948486328125 + }, + { + "x": 509.52606201171875, + "y": 665.843994140625 + }, + { + "x": 511.6429138183594, + "y": 695.7622680664062 + }, + { + "x": 515.424560546875, + "y": 727.1918334960938 + }, + { + "x": 515.364501953125, + "y": 755.64599609375 + } + ], + "reprojectionErrors": [ + { + "x": 4.9637451171875, + "y": -2.856201171875 + }, + { + "x": 1.3768310546875, + "y": 1.84326171875 + }, + { + "x": -1.73919677734375, + "y": 4.2025146484375 + }, + { + "x": -6.5218505859375, + "y": 3.81085205078125 + }, + { + "x": -8.0714111328125, + "y": 2.2864990234375 + }, + { + "x": -12.315673828125, + "y": -0.8262939453125 + }, + { + "x": -17.00018310546875, + "y": -3.052490234375 + }, + { + "x": 4.0093994140625, + "y": -6.55194091796875 + }, + { + "x": 2.688232421875, + "y": 0.95013427734375 + }, + { + "x": -0.5020751953125, + "y": 3.82122802734375 + }, + { + "x": -2.31683349609375, + "y": 3.081298828125 + }, + { + "x": -5.658447265625, + "y": 1.8126220703125 + }, + { + "x": -6.9715576171875, + "y": 0.05010986328125 + }, + { + "x": -9.48663330078125, + "y": -5.5169677734375 + }, + { + "x": 2.9993896484375, + "y": -4.46954345703125 + }, + { + "x": 2.18994140625, + "y": -0.32061767578125 + }, + { + "x": 0.31396484375, + "y": 4.9810791015625 + }, + { + "x": -0.21002197265625, + "y": 2.98492431640625 + }, + { + "x": -1.18426513671875, + "y": 2.82293701171875 + }, + { + "x": -2.9127197265625, + "y": -0.71246337890625 + }, + { + "x": -4.17108154296875, + "y": -3.35235595703125 + }, + { + "x": 0.71435546875, + "y": -8.05963134765625 + }, + { + "x": 2.020751953125, + "y": -0.61676025390625 + }, + { + "x": 3.2916259765625, + "y": 4.0372314453125 + }, + { + "x": 1.40130615234375, + "y": 4.4136962890625 + }, + { + "x": 0.07391357421875, + "y": 1.43798828125 + }, + { + "x": 1.75244140625, + "y": -0.51153564453125 + }, + { + "x": 0.92230224609375, + "y": -4.43463134765625 + }, + { + "x": -0.3961181640625, + "y": -9.44091796875 + }, + { + "x": -0.39697265625, + "y": -1.40130615234375 + }, + { + "x": 2.84979248046875, + "y": 1.5361328125 + }, + { + "x": 3.2230224609375, + "y": 4.75372314453125 + }, + { + "x": 4.2841796875, + "y": 3.642822265625 + }, + { + "x": 6.22088623046875, + "y": 2.36431884765625 + }, + { + "x": 5.03887939453125, + "y": -3.0443115234375 + }, + { + "x": -4.93768310546875, + "y": -9.04248046875 + }, + { + "x": -2.01495361328125, + "y": -1.26263427734375 + }, + { + "x": 0.87939453125, + "y": 2.7373046875 + }, + { + "x": 3.96533203125, + "y": 3.74456787109375 + }, + { + "x": 3.94207763671875, + "y": 3.68121337890625 + }, + { + "x": 6.00506591796875, + "y": 3.6370849609375 + }, + { + "x": 8.70611572265625, + "y": -1.7081298828125 + }, + { + "x": -11.670745849609375, + "y": -9.49444580078125 + }, + { + "x": -4.957305908203125, + "y": -0.95123291015625 + }, + { + "x": -1.669097900390625, + "y": 3.27862548828125 + }, + { + "x": 2.5587158203125, + "y": 4.8121337890625 + }, + { + "x": 6.260406494140625, + "y": 5.40966796875 + }, + { + "x": 7.81134033203125, + "y": 1.94744873046875 + }, + { + "x": 12.776611328125, + "y": -0.78125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.014666707777231154, + "y": 0.09700655819862725, + "z": 0.14870069618983808 + }, + "rotation": { + "quaternion": { + "W": 0.6805469898807492, + "X": 0.07901596779165669, + "Y": -0.12649347950000794, + "Z": 0.717364392092457 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img22.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img22.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 355.8403625488281, + "y": 564.5835571289062 + }, + { + "x": 385.83355712890625, + "y": 563.552734375 + }, + { + "x": 417.251220703125, + "y": 564.449951171875 + }, + { + "x": 451.482177734375, + "y": 563.1104736328125 + }, + { + "x": 484.8870849609375, + "y": 558.6146240234375 + }, + { + "x": 517.3722534179688, + "y": 561.384765625 + }, + { + "x": 550.2354125976562, + "y": 556.545166015625 + }, + { + "x": 357.5960693359375, + "y": 596.4374389648438 + }, + { + "x": 389.5074462890625, + "y": 595.8064575195312 + }, + { + "x": 421.7079772949219, + "y": 595.442138671875 + }, + { + "x": 452.494140625, + "y": 594.3826904296875 + }, + { + "x": 485.3962707519531, + "y": 593.1393432617188 + }, + { + "x": 517.6106567382812, + "y": 591.5250244140625 + }, + { + "x": 551.32275390625, + "y": 590.9415893554688 + }, + { + "x": 361.6501770019531, + "y": 628.8623657226562 + }, + { + "x": 393.1018371582031, + "y": 628.2840576171875 + }, + { + "x": 422.2945861816406, + "y": 628.743896484375 + }, + { + "x": 454.5738525390625, + "y": 624.9174194335938 + }, + { + "x": 489.4941101074219, + "y": 622.356689453125 + }, + { + "x": 521.0296020507812, + "y": 623.6275024414062 + }, + { + "x": 552.5440063476562, + "y": 621.989501953125 + }, + { + "x": 365.1109619140625, + "y": 659.6520385742188 + }, + { + "x": 394.7845153808594, + "y": 659.6813354492188 + }, + { + "x": 427.3440246582031, + "y": 658.0316162109375 + }, + { + "x": 459.13470458984375, + "y": 656.3636474609375 + }, + { + "x": 490.9176330566406, + "y": 657.2466430664062 + }, + { + "x": 522.2515258789062, + "y": 656.2020263671875 + }, + { + "x": 555.4470825195312, + "y": 653.8701171875 + }, + { + "x": 367.61761474609375, + "y": 689.6263427734375 + }, + { + "x": 400.2984619140625, + "y": 689.146484375 + }, + { + "x": 430.5289001464844, + "y": 686.7615966796875 + }, + { + "x": 462.7293701171875, + "y": 688.6390380859375 + }, + { + "x": 492.9664001464844, + "y": 686.80322265625 + }, + { + "x": 525.6698608398438, + "y": 685.83154296875 + }, + { + "x": 556.14404296875, + "y": 684.2962036132812 + }, + { + "x": 373.2596130371094, + "y": 719.9721069335938 + }, + { + "x": 403.607421875, + "y": 716.55078125 + }, + { + "x": 432.0522155761719, + "y": 716.7792358398438 + }, + { + "x": 463.7005920410156, + "y": 718.3411254882812 + }, + { + "x": 496.345947265625, + "y": 716.5789184570312 + }, + { + "x": 526.600830078125, + "y": 714.7975463867188 + }, + { + "x": 559.9501342773438, + "y": 714.5248413085938 + }, + { + "x": 375.2018737792969, + "y": 746.6337280273438 + }, + { + "x": 406.2290954589844, + "y": 747.4553833007812 + }, + { + "x": 436.2905578613281, + "y": 746.5882568359375 + }, + { + "x": 467.36895751953125, + "y": 746.52197265625 + }, + { + "x": 498.7449951171875, + "y": 743.5704956054688 + }, + { + "x": 530.0875854492188, + "y": 744.4790649414062 + }, + { + "x": 563.8772583007812, + "y": 740.681396484375 + } + ], + "reprojectionErrors": [ + { + "x": -11.04107666015625, + "y": -9.78155517578125 + }, + { + "x": -3.129180908203125, + "y": -7.658935546875 + }, + { + "x": 1.67303466796875, + "y": -7.512939453125 + }, + { + "x": 2.086669921875, + "y": -5.1756591796875 + }, + { + "x": 1.851654052734375, + "y": 0.2755126953125 + }, + { + "x": 1.15386962890625, + "y": -1.5791015625 + }, + { + "x": -1.2197265625, + "y": 4.13861083984375 + }, + { + "x": -5.897857666015625, + "y": -3.33856201171875 + }, + { + "x": -1.28466796875, + "y": -2.49365234375 + }, + { + "x": 1.467010498046875, + "y": -1.9246826171875 + }, + { + "x": 4.160125732421875, + "y": -0.66912841796875 + }, + { + "x": 3.35552978515625, + "y": 0.76214599609375 + }, + { + "x": 1.940673828125, + "y": 2.55682373046875 + }, + { + "x": -2.192626953125, + "y": 3.31341552734375 + }, + { + "x": -3.495697021484375, + "y": 0.07598876953125 + }, + { + "x": 0.29278564453125, + "y": 0.09783935546875 + }, + { + "x": 4.869781494140625, + "y": -0.89520263671875 + }, + { + "x": 4.980010986328125, + "y": 2.4197998046875 + }, + { + "x": 1.15191650390625, + "y": 4.48956298828125 + }, + { + "x": -0.5123291015625, + "y": 2.74700927734375 + }, + { + "x": -3.305908203125, + "y": 3.93145751953125 + }, + { + "x": -0.901580810546875, + "y": 2.89764404296875 + }, + { + "x": 3.467071533203125, + "y": 1.63446044921875 + }, + { + "x": 3.571746826171875, + "y": 2.10028076171875 + }, + { + "x": 3.149200439453125, + "y": 2.63128662109375 + }, + { + "x": 1.514007568359375, + "y": 0.655517578125 + }, + { + "x": -0.82269287109375, + "y": 0.6490478515625 + }, + { + "x": -6.10693359375, + "y": 1.96923828125 + }, + { + "x": 2.28155517578125, + "y": 4.5079345703125 + }, + { + "x": 2.52313232421875, + "y": 3.1572265625 + }, + { + "x": 3.92095947265625, + "y": 3.78338623046875 + }, + { + "x": 2.1295166015625, + "y": 0.215087890625 + }, + { + "x": 1.1513671875, + "y": 0.4239501953125 + }, + { + "x": -3.3792724609375, + "y": -0.17095947265625 + }, + { + "x": -6.7073974609375, + "y": -0.1451416015625 + }, + { + "x": 1.996337890625, + "y": 3.89813232421875 + }, + { + "x": 3.5218505859375, + "y": 4.9622802734375 + }, + { + "x": 5.732818603515625, + "y": 2.46673583984375 + }, + { + "x": 3.59100341796875, + "y": -1.27728271484375 + }, + { + "x": -0.63348388671875, + "y": -1.616943359375 + }, + { + "x": -3.494384765625, + "y": -1.86151123046875 + }, + { + "x": -10.4219970703125, + "y": -3.5428466796875 + }, + { + "x": 5.106201171875, + "y": 5.2813720703125 + }, + { + "x": 4.967559814453125, + "y": 1.637451171875 + }, + { + "x": 4.647003173828125, + "y": -0.21282958984375 + }, + { + "x": 2.224609375, + "y": -2.76483154296875 + }, + { + "x": -1.52203369140625, + "y": -2.337890625 + }, + { + "x": -6.2076416015625, + "y": -5.68218994140625 + }, + { + "x": -14.26226806640625, + "y": -4.2359619140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.2779048931851538, + "y": 0.10278309275185843, + "z": 0.15983121348804324 + }, + "rotation": { + "quaternion": { + "W": 0.9890508330788145, + "X": 0.1135488591973936, + "Y": -0.06631484649624757, + "Z": 0.06698841164897681 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img23.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img23.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 188.3204803466797, + "y": 724.34521484375 + }, + { + "x": 186.29527282714844, + "y": 697.6096801757812 + }, + { + "x": 181.23150634765625, + "y": 667.5960693359375 + }, + { + "x": 177.81085205078125, + "y": 639.7178955078125 + }, + { + "x": 173.65463256835938, + "y": 609.583740234375 + }, + { + "x": 169.28880310058594, + "y": 578.4458618164062 + }, + { + "x": 167.26425170898438, + "y": 547.958984375 + }, + { + "x": 217.36944580078125, + "y": 727.4336547851562 + }, + { + "x": 212.11029052734375, + "y": 696.3367919921875 + }, + { + "x": 207.6127166748047, + "y": 668.9345703125 + }, + { + "x": 202.16566467285156, + "y": 640.8820190429688 + }, + { + "x": 199.4726104736328, + "y": 609.7218017578125 + }, + { + "x": 196.3998565673828, + "y": 579.190673828125 + }, + { + "x": 192.86097717285156, + "y": 548.8185424804688 + }, + { + "x": 241.63031005859375, + "y": 727.5017700195312 + }, + { + "x": 236.78887939453125, + "y": 697.848876953125 + }, + { + "x": 234.50816345214844, + "y": 668.8980712890625 + }, + { + "x": 230.26710510253906, + "y": 640.0862426757812 + }, + { + "x": 225.3474884033203, + "y": 612.314453125 + }, + { + "x": 224.353759765625, + "y": 579.8472900390625 + }, + { + "x": 219.97695922851562, + "y": 549.7052612304688 + }, + { + "x": 269.6534423828125, + "y": 729.3472900390625 + }, + { + "x": 265.2758483886719, + "y": 701.3388671875 + }, + { + "x": 263.2115478515625, + "y": 672.628662109375 + }, + { + "x": 258.3956604003906, + "y": 640.7504272460938 + }, + { + "x": 253.3180694580078, + "y": 609.842041015625 + }, + { + "x": 251.2398681640625, + "y": 580.0203857421875 + }, + { + "x": 249.4308319091797, + "y": 549.5684814453125 + }, + { + "x": 298.1138916015625, + "y": 728.2413330078125 + }, + { + "x": 293.79986572265625, + "y": 701.4345092773438 + }, + { + "x": 289.51544189453125, + "y": 672.9611206054688 + }, + { + "x": 287.2663879394531, + "y": 643.3825073242188 + }, + { + "x": 284.5704040527344, + "y": 609.3884887695312 + }, + { + "x": 280.37945556640625, + "y": 580.4703369140625 + }, + { + "x": 278.6845397949219, + "y": 547.34423828125 + }, + { + "x": 326.36871337890625, + "y": 731.3975830078125 + }, + { + "x": 321.4684753417969, + "y": 702.5285034179688 + }, + { + "x": 320.2648010253906, + "y": 673.6176147460938 + }, + { + "x": 316.08770751953125, + "y": 643.741943359375 + }, + { + "x": 313.29815673828125, + "y": 611.9769897460938 + }, + { + "x": 309.25799560546875, + "y": 580.298583984375 + }, + { + "x": 308.19287109375, + "y": 549.9186401367188 + }, + { + "x": 357.7044372558594, + "y": 730.4437255859375 + }, + { + "x": 352.5484313964844, + "y": 703.265869140625 + }, + { + "x": 347.8865661621094, + "y": 673.7090454101562 + }, + { + "x": 346.47161865234375, + "y": 643.6304321289062 + }, + { + "x": 342.4628601074219, + "y": 611.890625 + }, + { + "x": 340.2022705078125, + "y": 580.5809326171875 + }, + { + "x": 338.2625427246094, + "y": 547.8097534179688 + } + ], + "reprojectionErrors": [ + { + "x": 1.06683349609375, + "y": 5.3363037109375 + }, + { + "x": -1.450042724609375, + "y": 3.09234619140625 + }, + { + "x": -1.067108154296875, + "y": 3.240966796875 + }, + { + "x": -2.4725189208984375, + "y": 0.32745361328125 + }, + { + "x": -3.2944488525390625, + "y": -1.30059814453125 + }, + { + "x": -4.066162109375, + "y": -2.9420166015625 + }, + { + "x": -7.3463287353515625, + "y": -6.30126953125 + }, + { + "x": 0.0640411376953125, + "y": 1.7957763671875 + }, + { + "x": 1.2530517578125, + "y": 4.2574462890625 + }, + { + "x": 1.55767822265625, + "y": 2.1602783203125 + }, + { + "x": 2.683319091796875, + "y": -0.19049072265625 + }, + { + "x": 0.920501708984375, + "y": -0.37969970703125 + }, + { + "x": -0.60345458984375, + "y": -2.18902587890625 + }, + { + "x": -1.80889892578125, + "y": -5.196044921875 + }, + { + "x": 3.1877593994140625, + "y": 1.2862548828125 + }, + { + "x": 4.40997314453125, + "y": 2.64019775390625 + }, + { + "x": 2.963592529296875, + "y": 2.44830322265625 + }, + { + "x": 3.364776611328125, + "y": 1.23553466796875 + }, + { + "x": 4.3265380859375, + "y": -1.94000244140625 + }, + { + "x": 1.238922119140625, + "y": -1.38592529296875 + }, + { + "x": 1.404998779296875, + "y": -4.16876220703125 + }, + { + "x": 1.9107666015625, + "y": -0.99041748046875 + }, + { + "x": 3.100128173828125, + "y": -0.9525146484375 + }, + { + "x": 1.88232421875, + "y": -1.0367431640625 + }, + { + "x": 3.3179931640625, + "y": 1.18621826171875 + }, + { + "x": 4.9127960205078125, + "y": 1.539306640625 + }, + { + "x": 3.4008941650390625, + "y": -0.13592529296875 + }, + { + "x": 1.507476806640625, + "y": -2.166748046875 + }, + { + "x": -0.419952392578125, + "y": -0.3056640625 + }, + { + "x": 1.117919921875, + "y": -1.14849853515625 + }, + { + "x": 2.54541015625, + "y": -1.1295166015625 + }, + { + "x": 1.853179931640625, + "y": -0.8458251953125 + }, + { + "x": 1.519683837890625, + "y": 2.97515869140625 + }, + { + "x": 2.5889892578125, + "y": 0.8018798828125 + }, + { + "x": 1.065826416015625, + "y": 1.87567138671875 + }, + { + "x": -3.140350341796875, + "y": -3.87353515625 + }, + { + "x": -0.62213134765625, + "y": -2.34051513671875 + }, + { + "x": -1.8690185546875, + "y": -1.552001953125 + }, + { + "x": -0.213958740234375, + "y": -0.61944580078125 + }, + { + "x": -0.0211181640625, + "y": 1.34521484375 + }, + { + "x": 1.344268798828125, + "y": 2.327392578125 + }, + { + "x": -0.34698486328125, + "y": 1.07427978515625 + }, + { + "x": -9.516845703125, + "y": -3.322021484375 + }, + { + "x": -6.3658447265625, + "y": -3.17364501953125 + }, + { + "x": -3.765960693359375, + "y": -1.414794921875 + }, + { + "x": -4.472442626953125, + "y": 0.0640869140625 + }, + { + "x": -2.647186279296875, + "y": 2.36724853515625 + }, + { + "x": -2.634918212890625, + "y": 3.3660888671875 + }, + { + "x": -3.01129150390625, + "y": 4.91259765625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.5592953999878646, + "y": 0.27075914795742256, + "z": 0.22139326187774455 + }, + "rotation": { + "quaternion": { + "W": 0.7467173680728405, + "X": 0.08252047251618053, + "Y": 0.013599786448838493, + "Z": -0.6598625535993253 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img24.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img24.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 36.66222381591797, + "y": 570.420654296875 + }, + { + "x": 59.533714294433594, + "y": 571.4552001953125 + }, + { + "x": 83.37271881103516, + "y": 572.844482421875 + }, + { + "x": 109.68400573730469, + "y": 573.307373046875 + }, + { + "x": 135.3839874267578, + "y": 571.8655395507812 + }, + { + "x": 161.83602905273438, + "y": 574.7774047851562 + }, + { + "x": 188.6013946533203, + "y": 574.137451171875 + }, + { + "x": 40.363487243652344, + "y": 599.5592041015625 + }, + { + "x": 63.94424057006836, + "y": 600.650390625 + }, + { + "x": 88.46753692626953, + "y": 602.4225463867188 + }, + { + "x": 112.19135284423828, + "y": 603.04296875 + }, + { + "x": 138.73109436035156, + "y": 604.0676879882812 + }, + { + "x": 164.92662048339844, + "y": 603.4913940429688 + }, + { + "x": 192.7109832763672, + "y": 605.2738647460938 + }, + { + "x": 45.445594787597656, + "y": 628.7159423828125 + }, + { + "x": 67.81134033203125, + "y": 629.4497680664062 + }, + { + "x": 91.73114013671875, + "y": 632.1702270507812 + }, + { + "x": 116.38634490966797, + "y": 631.6443481445312 + }, + { + "x": 143.43600463867188, + "y": 631.7064208984375 + }, + { + "x": 169.06851196289062, + "y": 634.4661865234375 + }, + { + "x": 195.92955017089844, + "y": 635.2825317382812 + }, + { + "x": 51.30561065673828, + "y": 657.8949584960938 + }, + { + "x": 72.58489990234375, + "y": 659.0047607421875 + }, + { + "x": 97.06224822998047, + "y": 659.9425048828125 + }, + { + "x": 122.13118743896484, + "y": 660.7924194335938 + }, + { + "x": 147.6494903564453, + "y": 663.6920166015625 + }, + { + "x": 172.9078826904297, + "y": 665.3346557617188 + }, + { + "x": 201.39183044433594, + "y": 665.7665405273438 + }, + { + "x": 54.65834426879883, + "y": 684.4078979492188 + }, + { + "x": 78.59085845947266, + "y": 686.7905883789062 + }, + { + "x": 101.70001220703125, + "y": 687.8067626953125 + }, + { + "x": 126.84403991699219, + "y": 690.4782104492188 + }, + { + "x": 151.3787384033203, + "y": 691.540283203125 + }, + { + "x": 178.3060760498047, + "y": 692.9096069335938 + }, + { + "x": 204.3035430908203, + "y": 694.3422241210938 + }, + { + "x": 60.86203384399414, + "y": 712.0803833007812 + }, + { + "x": 83.48368072509766, + "y": 712.0995483398438 + }, + { + "x": 106.01754760742188, + "y": 714.6748657226562 + }, + { + "x": 131.2477569580078, + "y": 717.6844482421875 + }, + { + "x": 156.6284942626953, + "y": 719.433837890625 + }, + { + "x": 181.65155029296875, + "y": 721.0993041992188 + }, + { + "x": 209.21551513671875, + "y": 722.2935791015625 + }, + { + "x": 64.29447937011719, + "y": 738.5001220703125 + }, + { + "x": 88.49467468261719, + "y": 740.2587280273438 + }, + { + "x": 111.65016174316406, + "y": 742.6375122070312 + }, + { + "x": 136.31155395507812, + "y": 744.6569213867188 + }, + { + "x": 162.43727111816406, + "y": 744.786865234375 + }, + { + "x": 187.66322326660156, + "y": 748.7183837890625 + }, + { + "x": 215.52415466308594, + "y": 749.3596801757812 + } + ], + "reprojectionErrors": [ + { + "x": -5.607486724853516, + "y": -4.21722412109375 + }, + { + "x": -1.6596488952636719, + "y": -3.233154296875 + }, + { + "x": 0.957916259765625, + "y": -2.63116455078125 + }, + { + "x": 0.7477340698242188, + "y": -1.1295166015625 + }, + { + "x": 0.8005218505859375, + "y": 2.25054931640625 + }, + { + "x": -0.24017333984375, + "y": 1.25128173828125 + }, + { + "x": -1.928863525390625, + "y": 3.77862548828125 + }, + { + "x": -3.3726463317871094, + "y": -2.1766357421875 + }, + { + "x": -0.5104827880859375, + "y": -1.48419189453125 + }, + { + "x": 1.0559234619140625, + "y": -1.49658203125 + }, + { + "x": 3.0756301879882812, + "y": -0.380615234375 + }, + { + "x": 1.9400634765625, + "y": 0.30816650390625 + }, + { + "x": 0.8160247802734375, + "y": 2.5755615234375 + }, + { + "x": -2.2230377197265625, + "y": 2.46209716796875 + }, + { + "x": -2.6667404174804688, + "y": -0.93212890625 + }, + { + "x": 1.0443344116210938, + "y": -0.1063232421875 + }, + { + "x": 2.8573226928710938, + "y": -1.28778076171875 + }, + { + "x": 3.597625732421875, + "y": 0.7569580078125 + }, + { + "x": 1.6127777099609375, + "y": 2.1939697265625 + }, + { + "x": 0.7208251953125, + "y": 0.913818359375 + }, + { + "x": -1.71771240234375, + "y": 1.55810546875 + }, + { + "x": -2.8813514709472656, + "y": -0.458984375 + }, + { + "x": 1.5599746704101562, + "y": -0.2227783203125 + }, + { + "x": 2.4680404663085938, + "y": 0.16796875 + }, + { + "x": 2.4558029174804688, + "y": 0.6292724609375 + }, + { + "x": 1.671844482421875, + "y": -0.9759521484375 + }, + { + "x": 0.8316192626953125, + "y": -1.34075927734375 + }, + { + "x": -3.544342041015625, + "y": -0.5111083984375 + }, + { + "x": -0.7260894775390625, + "y": 1.95843505859375 + }, + { + "x": 0.7153167724609375, + "y": 0.718017578125 + }, + { + "x": 2.6533660888671875, + "y": 0.82940673828125 + }, + { + "x": 2.236083984375, + "y": -0.72894287109375 + }, + { + "x": 2.113800048828125, + "y": -0.69207763671875 + }, + { + "x": -0.7095184326171875, + "y": -0.97637939453125 + }, + { + "x": -2.9055633544921875, + "y": -1.33758544921875 + }, + { + "x": -1.554229736328125, + "y": 2.52056884765625 + }, + { + "x": 0.8604812622070312, + "y": 3.44927978515625 + }, + { + "x": 3.0444259643554688, + "y": 1.8096923828125 + }, + { + "x": 2.219512939453125, + "y": -0.27593994140625 + }, + { + "x": 0.9374542236328125, + "y": -1.113037109375 + }, + { + "x": -0.2877960205078125, + "y": -1.87762451171875 + }, + { + "x": -4.3492431640625, + "y": -2.18218994140625 + }, + { + "x": 0.26114654541015625, + "y": 3.66455078125 + }, + { + "x": 0.7685165405273438, + "y": 2.668212890625 + }, + { + "x": 2.0099258422851562, + "y": 1.04205322265625 + }, + { + "x": 1.440582275390625, + "y": -0.234130859375 + }, + { + "x": -0.8922882080078125, + "y": 0.36993408203125 + }, + { + "x": -2.6190032958984375, + "y": -2.836669921875 + }, + { + "x": -7.2689666748046875, + "y": -2.76202392578125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.7365561219365427, + "y": 0.15066745273199583, + "z": 0.2212833321429422 + }, + "rotation": { + "quaternion": { + "W": 0.9966660381997939, + "X": 0.057306951823271, + "Y": -0.02701019879035814, + "Z": 0.05141177621087942 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img25.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img25.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 189.51934814453125, + "y": 451.98162841796875 + }, + { + "x": 192.4725799560547, + "y": 485.96124267578125 + }, + { + "x": 195.84451293945312, + "y": 517.9207763671875 + }, + { + "x": 201.59190368652344, + "y": 550.3546752929688 + }, + { + "x": 204.33502197265625, + "y": 581.4708862304688 + }, + { + "x": 211.19625854492188, + "y": 611.4158325195312 + }, + { + "x": 217.42434692382812, + "y": 638.6319580078125 + }, + { + "x": 158.72518920898438, + "y": 457.48370361328125 + }, + { + "x": 160.51492309570312, + "y": 488.7712097167969 + }, + { + "x": 166.25660705566406, + "y": 520.5506591796875 + }, + { + "x": 170.45738220214844, + "y": 554.2144775390625 + }, + { + "x": 176.65850830078125, + "y": 584.0162963867188 + }, + { + "x": 179.78076171875, + "y": 613.4483642578125 + }, + { + "x": 186.39517211914062, + "y": 643.48876953125 + }, + { + "x": 128.66555786132812, + "y": 456.819091796875 + }, + { + "x": 131.62684631347656, + "y": 491.47320556640625 + }, + { + "x": 137.23524475097656, + "y": 521.3297119140625 + }, + { + "x": 141.24940490722656, + "y": 555.7723999023438 + }, + { + "x": 146.38328552246094, + "y": 585.60205078125 + }, + { + "x": 151.80377197265625, + "y": 616.2691040039062 + }, + { + "x": 156.840576171875, + "y": 644.285400390625 + }, + { + "x": 98.63196563720703, + "y": 462.54925537109375 + }, + { + "x": 101.75758361816406, + "y": 493.8594665527344 + }, + { + "x": 105.5844955444336, + "y": 524.8321533203125 + }, + { + "x": 112.42977142333984, + "y": 556.613525390625 + }, + { + "x": 118.48030853271484, + "y": 588.906005859375 + }, + { + "x": 122.8090591430664, + "y": 618.2676391601562 + }, + { + "x": 129.3886260986328, + "y": 648.1526489257812 + }, + { + "x": 68.24491882324219, + "y": 465.26568603515625 + }, + { + "x": 75.4721450805664, + "y": 497.4145202636719 + }, + { + "x": 77.79761505126953, + "y": 529.386474609375 + }, + { + "x": 83.53305053710938, + "y": 559.3307495117188 + }, + { + "x": 89.19595336914062, + "y": 589.70849609375 + }, + { + "x": 94.15272521972656, + "y": 619.317626953125 + }, + { + "x": 100.66680908203125, + "y": 649.263427734375 + }, + { + "x": 40.65012741088867, + "y": 467.3558044433594 + }, + { + "x": 45.70228958129883, + "y": 498.56256103515625 + }, + { + "x": 50.76961898803711, + "y": 531.292236328125 + }, + { + "x": 55.165374755859375, + "y": 562.4315795898438 + }, + { + "x": 62.74525833129883, + "y": 592.6392822265625 + }, + { + "x": 68.26632690429688, + "y": 620.21337890625 + }, + { + "x": 74.29977416992188, + "y": 651.4752197265625 + }, + { + "x": 14.179500579833984, + "y": 468.7657775878906 + }, + { + "x": 17.596824645996094, + "y": 501.4282531738281 + }, + { + "x": 23.396089553833008, + "y": 533.181640625 + }, + { + "x": 30.265016555786133, + "y": 565.31396484375 + }, + { + "x": 33.92562484741211, + "y": 594.4956665039062 + }, + { + "x": 42.14015197753906, + "y": 625.02734375 + }, + { + "x": 45.73855972290039, + "y": 653.4954833984375 + } + ], + "reprojectionErrors": [ + { + "x": -4.6077880859375, + "y": 5.452056884765625 + }, + { + "x": -3.179901123046875, + "y": 2.854400634765625 + }, + { + "x": -2.249298095703125, + "y": 1.71380615234375 + }, + { + "x": -3.7706298828125, + "y": -0.44903564453125 + }, + { + "x": -2.3621368408203125, + "y": -1.8277587890625 + }, + { + "x": -5.144287109375, + "y": -2.55462646484375 + }, + { + "x": -7.3639068603515625, + "y": -1.05877685546875 + }, + { + "x": -1.4664306640625, + "y": 1.175048828125 + }, + { + "x": 1.4313201904296875, + "y": 1.6383056640625 + }, + { + "x": 0.29205322265625, + "y": 1.03326416015625 + }, + { + "x": 0.61090087890625, + "y": -2.01708984375 + }, + { + "x": -1.1511688232421875, + "y": -1.75128173828125 + }, + { + "x": 0.087188720703125, + "y": -1.64715576171875 + }, + { + "x": -2.24298095703125, + "y": -2.66876220703125 + }, + { + "x": 0.25604248046875, + "y": 3.095001220703125 + }, + { + "x": 2.302459716796875, + "y": 0.569305419921875 + }, + { + "x": 1.6097869873046875, + "y": 2.2508544921875 + }, + { + "x": 2.4218597412109375, + "y": -1.22808837890625 + }, + { + "x": 2.02716064453125, + "y": -0.65264892578125 + }, + { + "x": 1.2611083984375, + "y": -1.45831298828125 + }, + { + "x": 0.7962799072265625, + "y": -0.14251708984375 + }, + { + "x": 1.2423858642578125, + "y": -1.34832763671875 + }, + { + "x": 3.4593276977539062, + "y": -0.143463134765625 + }, + { + "x": 4.875617980957031, + "y": 0.79412841796875 + }, + { + "x": 3.1769332885742188, + "y": 0.3349609375 + }, + { + "x": 2.1790313720703125, + "y": -1.2073974609375 + }, + { + "x": 2.8115005493164062, + "y": -0.37530517578125 + }, + { + "x": 1.1042022705078125, + "y": -0.60809326171875 + }, + { + "x": 1.8450851440429688, + "y": -2.745269775390625 + }, + { + "x": 0.31067657470703125, + "y": -1.982940673828125 + }, + { + "x": 3.5708465576171875, + "y": -1.66351318359375 + }, + { + "x": 3.3168563842773438, + "y": 0.08111572265625 + }, + { + "x": 3.0341033935546875, + "y": 0.8065185546875 + }, + { + "x": 3.3589630126953125, + "y": 1.73089599609375 + }, + { + "x": 2.0306777954101562, + "y": 1.764404296875 + }, + { + "x": -1.110015869140625, + "y": -3.482025146484375 + }, + { + "x": -0.10280227661132812, + "y": -1.371734619140625 + }, + { + "x": 0.7737159729003906, + "y": -1.41973876953125 + }, + { + "x": 2.209552764892578, + "y": -0.4947509765625 + }, + { + "x": 0.3521575927734375, + "y": 0.7618408203125 + }, + { + "x": 0.447509765625, + "y": 4.06866455078125 + }, + { + "x": -0.07266998291015625, + "y": 3.1204833984375 + }, + { + "x": -5.984692573547363, + "y": -3.50335693359375 + }, + { + "x": -2.9588851928710938, + "y": -2.432830810546875 + }, + { + "x": -2.4394302368164062, + "y": -1.104736328125 + }, + { + "x": -3.1104812622070312, + "y": -0.788330078125 + }, + { + "x": -0.6906242370605469, + "y": 1.86376953125 + }, + { + "x": -2.9387893676757812, + "y": 2.5684814453125 + }, + { + "x": -0.6817550659179688, + "y": 4.75579833984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.5976580272588907, + "y": 0.075077706259765, + "z": 0.23447382192926552 + }, + "rotation": { + "quaternion": { + "W": 0.7041731799548537, + "X": -0.009507626752293205, + "Y": -0.06940713179448933, + "Z": 0.7065637888555222 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img26.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img26.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 15.130423545837402, + "y": 383.3187255859375 + }, + { + "x": 43.21192169189453, + "y": 384.5238342285156 + }, + { + "x": 72.15617370605469, + "y": 385.3253479003906 + }, + { + "x": 104.07945251464844, + "y": 385.560791015625 + }, + { + "x": 135.154296875, + "y": 383.5749206542969 + }, + { + "x": 166.73240661621094, + "y": 386.9415283203125 + }, + { + "x": 197.68359375, + "y": 385.63360595703125 + }, + { + "x": 14.812849044799805, + "y": 417.4223327636719 + }, + { + "x": 44.00617218017578, + "y": 417.3095703125 + }, + { + "x": 74.245849609375, + "y": 418.763916015625 + }, + { + "x": 103.49549865722656, + "y": 418.39794921875 + }, + { + "x": 134.38882446289062, + "y": 419.41778564453125 + }, + { + "x": 165.49032592773438, + "y": 419.2450256347656 + }, + { + "x": 197.7969970703125, + "y": 420.3357238769531 + }, + { + "x": 16.378427505493164, + "y": 450.6768798828125 + }, + { + "x": 44.32515335083008, + "y": 450.8999938964844 + }, + { + "x": 73.58507537841797, + "y": 452.33856201171875 + }, + { + "x": 103.2529067993164, + "y": 450.85186767578125 + }, + { + "x": 135.73643493652344, + "y": 450.69793701171875 + }, + { + "x": 166.12315368652344, + "y": 452.8227233886719 + }, + { + "x": 197.23519897460938, + "y": 453.4098815917969 + }, + { + "x": 18.571308135986328, + "y": 484.3828430175781 + }, + { + "x": 45.651065826416016, + "y": 484.4822082519531 + }, + { + "x": 76.0334243774414, + "y": 485.140380859375 + }, + { + "x": 105.79652404785156, + "y": 484.4526062011719 + }, + { + "x": 135.80320739746094, + "y": 486.5638427734375 + }, + { + "x": 166.11500549316406, + "y": 486.9466247558594 + }, + { + "x": 199.1057586669922, + "y": 487.5736999511719 + }, + { + "x": 19.302927017211914, + "y": 515.3485717773438 + }, + { + "x": 49.178890228271484, + "y": 516.7811279296875 + }, + { + "x": 76.94990539550781, + "y": 516.4729614257812 + }, + { + "x": 107.57437896728516, + "y": 518.5939331054688 + }, + { + "x": 136.58255004882812, + "y": 517.810302734375 + }, + { + "x": 168.57974243164062, + "y": 519.4037475585938 + }, + { + "x": 198.26840209960938, + "y": 519.1463012695312 + }, + { + "x": 23.286924362182617, + "y": 547.708251953125 + }, + { + "x": 51.20295333862305, + "y": 546.0145874023438 + }, + { + "x": 78.55992126464844, + "y": 548.0263061523438 + }, + { + "x": 108.09490203857422, + "y": 549.6160888671875 + }, + { + "x": 139.00389099121094, + "y": 550.2782592773438 + }, + { + "x": 168.60797119140625, + "y": 550.107421875 + }, + { + "x": 199.8101348876953, + "y": 550.6114501953125 + }, + { + "x": 23.609445571899414, + "y": 577.953125 + }, + { + "x": 53.07707214355469, + "y": 578.81494140625 + }, + { + "x": 81.00579071044922, + "y": 579.8839111328125 + }, + { + "x": 110.66626739501953, + "y": 580.71337890625 + }, + { + "x": 141.20765686035156, + "y": 579.479248046875 + }, + { + "x": 170.5089874267578, + "y": 581.5934448242188 + }, + { + "x": 202.71218872070312, + "y": 580.5696411132812 + } + ], + "reprojectionErrors": [ + { + "x": -4.744912147521973, + "y": -4.189697265625 + }, + { + "x": -0.2673454284667969, + "y": -3.294525146484375 + }, + { + "x": 2.4017868041992188, + "y": -2.056732177734375 + }, + { + "x": 1.1868362426757812, + "y": -0.311279296875 + }, + { + "x": -0.04644775390625, + "y": 3.59954833984375 + }, + { + "x": -2.6135406494140625, + "y": 2.1043701171875 + }, + { + "x": -5.35009765625, + "y": 5.2322998046875 + }, + { + "x": -2.6059608459472656, + "y": -3.3218994140625 + }, + { + "x": 0.5659332275390625, + "y": -1.632354736328125 + }, + { + "x": 1.7561798095703125, + "y": -1.55548095703125 + }, + { + "x": 3.0411376953125, + "y": 0.298065185546875 + }, + { + "x": 1.824798583984375, + "y": 0.724029541015625 + }, + { + "x": -0.42169189453125, + "y": 2.30255126953125 + }, + { + "x": -4.661651611328125, + "y": 2.579193115234375 + }, + { + "x": -2.3690338134765625, + "y": -1.967559814453125 + }, + { + "x": 1.8578643798828125, + "y": -1.12677001953125 + }, + { + "x": 3.84649658203125, + "y": -1.532012939453125 + }, + { + "x": 4.541473388671875, + "y": 0.958709716796875 + }, + { + "x": 1.5721435546875, + "y": 2.088592529296875 + }, + { + "x": -0.1139068603515625, + "y": 0.912841796875 + }, + { + "x": -3.305633544921875, + "y": 1.248931884765625 + }, + { + "x": -2.777987480163574, + "y": -1.42156982421875 + }, + { + "x": 2.1265029907226562, + "y": -0.959503173828125 + }, + { + "x": 2.8133697509765625, + "y": -1.072296142578125 + }, + { + "x": 3.2431869506835938, + "y": 0.145477294921875 + }, + { + "x": 2.58966064453125, + "y": -1.450531005859375 + }, + { + "x": 0.825836181640625, + "y": -1.33221435546875 + }, + { + "x": -4.3894805908203125, + "y": -1.471771240234375 + }, + { + "x": -1.7439727783203125, + "y": 1.51324462890625 + }, + { + "x": 0.17711639404296875, + "y": 0.14984130859375 + }, + { + "x": 3.2980194091796875, + "y": 0.525146484375 + }, + { + "x": 2.6984405517578125, + "y": -1.53057861328125 + }, + { + "x": 2.884124755859375, + "y": -0.68353271484375 + }, + { + "x": -0.716217041015625, + "y": -2.21527099609375 + }, + { + "x": -2.7728424072265625, + "y": -1.89776611328125 + }, + { + "x": -3.9803466796875, + "y": 2.7081298828125 + }, + { + "x": -0.2843818664550781, + "y": 3.988525390625 + }, + { + "x": 3.0752410888671875, + "y": 1.5751953125 + }, + { + "x": 3.3989639282226562, + "y": -0.40496826171875 + }, + { + "x": 1.5262298583984375, + "y": -1.44677734375 + }, + { + "x": 0.169464111328125, + "y": -1.645263671875 + }, + { + "x": -3.5425872802734375, + "y": -2.50872802734375 + }, + { + "x": -2.5729846954345703, + "y": 5.677001953125 + }, + { + "x": -0.6115684509277344, + "y": 3.92919921875 + }, + { + "x": 2.0029296875, + "y": 1.99920654296875 + }, + { + "x": 2.036773681640625, + "y": 0.3326416015625 + }, + { + "x": 0.375701904296875, + "y": 0.75262451171875 + }, + { + "x": -0.8262786865234375, + "y": -2.15374755859375 + }, + { + "x": -5.6798553466796875, + "y": -1.90093994140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.7432464376486121, + "y": 0.013104925707336235, + "z": 0.21648151108862582 + }, + "rotation": { + "quaternion": { + "W": 0.9970696648831463, + "X": 0.02463749100155573, + "Y": -0.06304682041990217, + "Z": 0.03563952639835762 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img27.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img27.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 343.5724182128906, + "y": 119.88111877441406 + }, + { + "x": 343.3459777832031, + "y": 155.3393096923828 + }, + { + "x": 342.2275390625, + "y": 187.4005126953125 + }, + { + "x": 344.2475891113281, + "y": 221.43975830078125 + }, + { + "x": 342.841552734375, + "y": 255.23963928222656 + }, + { + "x": 346.61602783203125, + "y": 288.08050537109375 + }, + { + "x": 349.5968933105469, + "y": 318.4530334472656 + }, + { + "x": 310.6678771972656, + "y": 125.52472686767578 + }, + { + "x": 308.5124816894531, + "y": 156.66415405273438 + }, + { + "x": 311.39984130859375, + "y": 190.1047821044922 + }, + { + "x": 310.5473327636719, + "y": 224.50914001464844 + }, + { + "x": 313.5668029785156, + "y": 257.5312194824219 + }, + { + "x": 312.6152038574219, + "y": 289.20623779296875 + }, + { + "x": 316.5723876953125, + "y": 323.8663024902344 + }, + { + "x": 278.6390380859375, + "y": 123.80691528320312 + }, + { + "x": 278.261962890625, + "y": 159.631103515625 + }, + { + "x": 278.9138488769531, + "y": 189.66693115234375 + }, + { + "x": 278.7696533203125, + "y": 227.06105041503906 + }, + { + "x": 279.498046875, + "y": 258.7941589355469 + }, + { + "x": 281.8728942871094, + "y": 292.6172180175781 + }, + { + "x": 281.6423645019531, + "y": 325.19189453125 + }, + { + "x": 245.39659118652344, + "y": 129.9130401611328 + }, + { + "x": 244.0525665283203, + "y": 161.75636291503906 + }, + { + "x": 243.34971618652344, + "y": 193.8109130859375 + }, + { + "x": 246.4391632080078, + "y": 227.60165405273438 + }, + { + "x": 248.52456665039062, + "y": 262.5640563964844 + }, + { + "x": 248.7447052001953, + "y": 295.27899169921875 + }, + { + "x": 250.7011260986328, + "y": 328.4742736816406 + }, + { + "x": 211.1673126220703, + "y": 133.29013061523438 + }, + { + "x": 215.210693359375, + "y": 165.3794708251953 + }, + { + "x": 211.5163116455078, + "y": 199.88699340820312 + }, + { + "x": 214.7432403564453, + "y": 231.081787109375 + }, + { + "x": 215.5143585205078, + "y": 263.9911804199219 + }, + { + "x": 215.9099578857422, + "y": 296.30859375 + }, + { + "x": 218.29757690429688, + "y": 331.38079833984375 + }, + { + "x": 181.3533172607422, + "y": 134.96502685546875 + }, + { + "x": 181.4807891845703, + "y": 167.59512329101562 + }, + { + "x": 181.2996368408203, + "y": 200.59922790527344 + }, + { + "x": 182.1492156982422, + "y": 235.12789916992188 + }, + { + "x": 185.5922088623047, + "y": 267.3775939941406 + }, + { + "x": 186.5671844482422, + "y": 298.8159484863281 + }, + { + "x": 189.1743927001953, + "y": 334.52471923828125 + }, + { + "x": 151.5878143310547, + "y": 137.42431640625 + }, + { + "x": 150.9821014404297, + "y": 171.45150756835938 + }, + { + "x": 151.5630340576172, + "y": 204.1828155517578 + }, + { + "x": 153.24534606933594, + "y": 238.6566925048828 + }, + { + "x": 152.4809112548828, + "y": 271.0189208984375 + }, + { + "x": 156.48731994628906, + "y": 305.088623046875 + }, + { + "x": 155.380859375, + "y": 337.6584777832031 + } + ], + "reprojectionErrors": [ + { + "x": -9.162750244140625, + "y": 7.929595947265625 + }, + { + "x": -7.455657958984375, + "y": 2.861083984375 + }, + { + "x": -4.83837890625, + "y": 1.5625152587890625 + }, + { + "x": -5.341064453125, + "y": -1.3342437744140625 + }, + { + "x": -2.3988037109375, + "y": -3.604705810546875 + }, + { + "x": -4.617828369140625, + "y": -4.521942138671875 + }, + { + "x": -6.023651123046875, + "y": -2.569244384765625 + }, + { + "x": -4.122528076171875, + "y": 2.8493728637695312 + }, + { + "x": -0.630126953125, + "y": 2.7127227783203125 + }, + { + "x": -2.1636962890625, + "y": 0.66302490234375 + }, + { + "x": 0.05963134765625, + "y": -1.9549102783203125 + }, + { + "x": -1.57159423828125, + "y": -2.7875518798828125 + }, + { + "x": 0.78594970703125, + "y": -1.8624267578125 + }, + { + "x": -1.7471923828125, + "y": -3.50372314453125 + }, + { + "x": -1.091583251953125, + "y": 5.1534881591796875 + }, + { + "x": 0.465789794921875, + "y": 0.9704132080078125 + }, + { + "x": 1.009307861328125, + "y": 2.9800262451171875 + }, + { + "x": 2.364288330078125, + "y": -1.9565582275390625 + }, + { + "x": 2.86236572265625, + "y": -0.812042236328125 + }, + { + "x": 1.72998046875, + "y": -1.329132080078125 + }, + { + "x": 3.219268798828125, + "y": -0.161163330078125 + }, + { + "x": 1.948822021484375, + "y": -0.34197998046875 + }, + { + "x": 4.30206298828125, + "y": 0.121002197265625 + }, + { + "x": 6.0273284912109375, + "y": 0.7942352294921875 + }, + { + "x": 3.9737396240234375, + "y": 0.1610870361328125 + }, + { + "x": 2.937896728515625, + "y": -1.205413818359375 + }, + { + "x": 3.7812957763671875, + "y": 0.122589111328125 + }, + { + "x": 2.9026947021484375, + "y": 1.42626953125 + }, + { + "x": 4.6952972412109375, + "y": -3.08251953125 + }, + { + "x": 1.4742889404296875, + "y": -2.17181396484375 + }, + { + "x": 6.00201416015625, + "y": -3.2394866943359375 + }, + { + "x": 3.6196441650390625, + "y": -0.545806884765625 + }, + { + "x": 3.704498291015625, + "y": 0.8909912109375 + }, + { + "x": 4.1765289306640625, + "y": 3.386871337890625 + }, + { + "x": 2.6684417724609375, + "y": 3.60455322265625 + }, + { + "x": 1.6624908447265625, + "y": -4.0932769775390625 + }, + { + "x": 2.153167724609375, + "y": -2.9991302490234375 + }, + { + "x": 2.9608917236328125, + "y": -1.8196868896484375 + }, + { + "x": 2.74652099609375, + "y": -1.696044921875 + }, + { + "x": -0.052490234375, + "y": 1.185028076171875 + }, + { + "x": -0.37451171875, + "y": 5.365875244140625 + }, + { + "x": -2.3195953369140625, + "y": 5.774993896484375 + }, + { + "x": -2.873382568359375, + "y": -5.8590240478515625 + }, + { + "x": -1.8729248046875, + "y": -5.4052886962890625 + }, + { + "x": -2.0535888671875, + "y": -3.175506591796875 + }, + { + "x": -3.3300018310546875, + "y": -2.198028564453125 + }, + { + "x": -2.153900146484375, + "y": 1.3917236328125 + }, + { + "x": -5.742767333984375, + "y": 3.785308837890625 + }, + { + "x": -4.2127685546875, + "y": 8.2010498046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.4268117222420906, + "y": -0.18413579236169214, + "z": 0.2382577299332165 + }, + "rotation": { + "quaternion": { + "W": 0.7602778095157793, + "X": -0.08878379361463219, + "Y": -0.0376250547443348, + "Z": 0.64240131195754 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img28.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img28.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 246.21649169921875, + "y": 122.37732696533203 + }, + { + "x": 246.0473175048828, + "y": 157.49111938476562 + }, + { + "x": 244.4457550048828, + "y": 189.5337371826172 + }, + { + "x": 246.27310180664062, + "y": 224.1475830078125 + }, + { + "x": 244.3253173828125, + "y": 257.7000732421875 + }, + { + "x": 248.00885009765625, + "y": 291.4232482910156 + }, + { + "x": 250.6903533935547, + "y": 321.6352844238281 + }, + { + "x": 214.72557067871094, + "y": 127.27062225341797 + }, + { + "x": 212.2888641357422, + "y": 158.40768432617188 + }, + { + "x": 214.20970153808594, + "y": 192.4092559814453 + }, + { + "x": 213.3263397216797, + "y": 226.5424041748047 + }, + { + "x": 216.12841796875, + "y": 260.71746826171875 + }, + { + "x": 214.31887817382812, + "y": 292.8292541503906 + }, + { + "x": 217.63912963867188, + "y": 327.3731689453125 + }, + { + "x": 183.17120361328125, + "y": 125.36316680908203 + }, + { + "x": 182.1643524169922, + "y": 161.3798065185547 + }, + { + "x": 182.6421661376953, + "y": 191.69711303710938 + }, + { + "x": 182.05816650390625, + "y": 229.75856018066406 + }, + { + "x": 182.0577392578125, + "y": 262.15301513671875 + }, + { + "x": 184.5227813720703, + "y": 296.5226745605469 + }, + { + "x": 184.5845489501953, + "y": 328.7685852050781 + }, + { + "x": 150.87657165527344, + "y": 131.36029052734375 + }, + { + "x": 148.89283752441406, + "y": 163.18789672851562 + }, + { + "x": 147.6212158203125, + "y": 196.11929321289062 + }, + { + "x": 149.93304443359375, + "y": 230.43955993652344 + }, + { + "x": 152.2236785888672, + "y": 266.4433898925781 + }, + { + "x": 151.84719848632812, + "y": 298.83111572265625 + }, + { + "x": 154.08892822265625, + "y": 333.8886413574219 + }, + { + "x": 117.22774505615234, + "y": 133.68409729003906 + }, + { + "x": 120.39254760742188, + "y": 166.83912658691406 + }, + { + "x": 115.92505645751953, + "y": 202.17706298828125 + }, + { + "x": 118.32770538330078, + "y": 233.76109313964844 + }, + { + "x": 119.26858520507812, + "y": 267.42462158203125 + }, + { + "x": 119.35826110839844, + "y": 300.87921142578125 + }, + { + "x": 121.50942993164062, + "y": 336.42218017578125 + }, + { + "x": 87.56520080566406, + "y": 136.02569580078125 + }, + { + "x": 87.12722778320312, + "y": 168.63450622558594 + }, + { + "x": 86.777099609375, + "y": 203.29798889160156 + }, + { + "x": 86.5240478515625, + "y": 237.518798828125 + }, + { + "x": 89.3797607421875, + "y": 271.45220947265625 + }, + { + "x": 90.23033905029297, + "y": 303.3312072753906 + }, + { + "x": 92.4431381225586, + "y": 340.48297119140625 + }, + { + "x": 57.86702346801758, + "y": 137.81935119628906 + }, + { + "x": 56.057212829589844, + "y": 172.59242248535156 + }, + { + "x": 57.125484466552734, + "y": 205.7177276611328 + }, + { + "x": 57.29692459106445, + "y": 241.76458740234375 + }, + { + "x": 56.7857666015625, + "y": 274.4578552246094 + }, + { + "x": 60.25050735473633, + "y": 310.5372314453125 + }, + { + "x": 58.5968132019043, + "y": 343.9168701171875 + } + ], + "reprojectionErrors": [ + { + "x": -6.6018524169921875, + "y": 5.0070037841796875 + }, + { + "x": -5.424102783203125, + "y": 1.3714447021484375 + }, + { + "x": -2.8039398193359375, + "y": 1.1194000244140625 + }, + { + "x": -3.6025238037109375, + "y": -1.386871337890625 + }, + { + "x": -0.6156463623046875, + "y": -2.510009765625 + }, + { + "x": -3.249603271484375, + "y": -3.477203369140625 + }, + { + "x": -4.870880126953125, + "y": -0.601715087890625 + }, + { + "x": -3.5175323486328125, + "y": 1.1887588500976562 + }, + { + "x": -0.1988525390625, + "y": 2.029266357421875 + }, + { + "x": -1.22882080078125, + "y": 0.3275604248046875 + }, + { + "x": 0.5544586181640625, + "y": -1.17852783203125 + }, + { + "x": -1.338531494140625, + "y": -2.394378662109375 + }, + { + "x": 1.389434814453125, + "y": -1.209625244140625 + }, + { + "x": -1.0029449462890625, + "y": -2.11456298828125 + }, + { + "x": -1.2708740234375, + "y": 4.205375671386719 + }, + { + "x": 0.4827117919921875, + "y": 0.681732177734375 + }, + { + "x": 0.759307861328125, + "y": 3.190155029296875 + }, + { + "x": 2.1054840087890625, + "y": -1.7076873779296875 + }, + { + "x": 2.876007080078125, + "y": -0.595428466796875 + }, + { + "x": 1.1890869140625, + "y": -1.109893798828125 + }, + { + "x": 1.9135894775390625, + "y": 0.853271484375 + }, + { + "x": 0.7713775634765625, + "y": -0.6468353271484375 + }, + { + "x": 3.3573455810546875, + "y": 0.550872802734375 + }, + { + "x": 5.23748779296875, + "y": 0.9884796142578125 + }, + { + "x": 3.5405731201171875, + "y": 0.38629150390625 + }, + { + "x": 1.8713226318359375, + "y": -1.54486083984375 + }, + { + "x": 2.87579345703125, + "y": 0.50030517578125 + }, + { + "x": 1.26873779296875, + "y": 0.241607666015625 + }, + { + "x": 3.1767425537109375, + "y": -1.7882080078125 + }, + { + "x": 0.45969390869140625, + "y": -1.3679046630859375 + }, + { + "x": 5.37969970703125, + "y": -2.7752838134765625 + }, + { + "x": 3.4344024658203125, + "y": -0.0678863525390625 + }, + { + "x": 2.955780029296875, + "y": 0.9266357421875 + }, + { + "x": 3.3333587646484375, + "y": 2.502685546875 + }, + { + "x": 1.6545181274414062, + "y": 2.368927001953125 + }, + { + "x": 0.555206298828125, + "y": -2.9080047607421875 + }, + { + "x": 1.2757186889648438, + "y": -1.372802734375 + }, + { + "x": 1.9114456176757812, + "y": -1.52496337890625 + }, + { + "x": 2.4532089233398438, + "y": -0.8612060546875 + }, + { + "x": -0.11061859130859375, + "y": 0.46929931640625 + }, + { + "x": -0.666107177734375, + "y": 4.239776611328125 + }, + { + "x": -2.5805435180664062, + "y": 3.129364013671875 + }, + { + "x": -3.1241607666015625, + "y": -3.4384613037109375 + }, + { + "x": -1.2086029052734375, + "y": -3.479248046875 + }, + { + "x": -2.1699485778808594, + "y": -1.4922637939453125 + }, + { + "x": -2.233257293701172, + "y": -2.04052734375 + }, + { + "x": -1.6127471923828125, + "y": 1.157470703125 + }, + { + "x": -4.966892242431641, + "y": 1.36865234375 + }, + { + "x": -3.2013397216796875, + "y": 4.68548583984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.529364355178793, + "y": -0.18041867434181658, + "z": 0.2330217499786628 + }, + "rotation": { + "quaternion": { + "W": 0.7548860226497299, + "X": -0.06829217278213132, + "Y": -0.029103169811804688, + "Z": 0.6516412183492326 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img29.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img29.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 252.53636169433594, + "y": 106.33451080322266 + }, + { + "x": 249.58163452148438, + "y": 143.4234619140625 + }, + { + "x": 246.20005798339844, + "y": 177.45921325683594 + }, + { + "x": 245.52381896972656, + "y": 213.71371459960938 + }, + { + "x": 241.99916076660156, + "y": 249.24853515625 + }, + { + "x": 243.50526428222656, + "y": 284.8812255859375 + }, + { + "x": 244.41586303710938, + "y": 317.10693359375 + }, + { + "x": 218.66567993164062, + "y": 109.64862823486328 + }, + { + "x": 214.56753540039062, + "y": 142.153564453125 + }, + { + "x": 214.0910186767578, + "y": 178.32144165039062 + }, + { + "x": 210.4990997314453, + "y": 215.2406463623047 + }, + { + "x": 211.69468688964844, + "y": 250.3892364501953 + }, + { + "x": 208.08673095703125, + "y": 284.3656005859375 + }, + { + "x": 209.44419860839844, + "y": 320.7403259277344 + }, + { + "x": 185.92892456054688, + "y": 105.85009765625 + }, + { + "x": 182.68930053710938, + "y": 143.7467498779297 + }, + { + "x": 181.12460327148438, + "y": 175.76751708984375 + }, + { + "x": 177.814208984375, + "y": 215.77159118652344 + }, + { + "x": 176.5831298828125, + "y": 249.73117065429688 + }, + { + "x": 176.75587463378906, + "y": 286.6765441894531 + }, + { + "x": 174.80288696289062, + "y": 320.2001647949219 + }, + { + "x": 151.3317108154297, + "y": 110.23311614990234 + }, + { + "x": 148.0098419189453, + "y": 143.60394287109375 + }, + { + "x": 144.04055786132812, + "y": 177.90025329589844 + }, + { + "x": 144.60836791992188, + "y": 214.48155212402344 + }, + { + "x": 144.2868194580078, + "y": 251.9951171875 + }, + { + "x": 140.7081756591797, + "y": 288.9297180175781 + }, + { + "x": 142.30784606933594, + "y": 323.4200439453125 + }, + { + "x": 116.05029296875, + "y": 111.16515350341797 + }, + { + "x": 117.56285095214844, + "y": 145.60873413085938 + }, + { + "x": 111.253173828125, + "y": 182.27896118164062 + }, + { + "x": 111.10489654541016, + "y": 215.3642120361328 + }, + { + "x": 110.54943084716797, + "y": 251.29991149902344 + }, + { + "x": 109.14342498779297, + "y": 287.3887023925781 + }, + { + "x": 108.55577087402344, + "y": 324.19927978515625 + }, + { + "x": 85.71941375732422, + "y": 111.626220703125 + }, + { + "x": 82.78898620605469, + "y": 145.43190002441406 + }, + { + "x": 80.72501373291016, + "y": 182.4678955078125 + }, + { + "x": 77.80887603759766, + "y": 218.28955078125 + }, + { + "x": 78.40513610839844, + "y": 253.4972381591797 + }, + { + "x": 77.60039520263672, + "y": 287.6412353515625 + }, + { + "x": 78.51046752929688, + "y": 326.8670959472656 + }, + { + "x": 55.119197845458984, + "y": 111.02806854248047 + }, + { + "x": 50.35404968261719, + "y": 147.83106994628906 + }, + { + "x": 48.804813385009766, + "y": 183.26243591308594 + }, + { + "x": 47.58087921142578, + "y": 221.02783203125 + }, + { + "x": 44.3985595703125, + "y": 255.60726928710938 + }, + { + "x": 46.29558181762695, + "y": 293.14129638671875 + }, + { + "x": 43.326202392578125, + "y": 327.57794189453125 + } + ], + "reprojectionErrors": [ + { + "x": -8.590896606445312, + "y": 5.5099334716796875 + }, + { + "x": -6.32080078125, + "y": 1.3827667236328125 + }, + { + "x": -3.6330108642578125, + "y": 0.7496490478515625 + }, + { + "x": -3.659881591796875, + "y": -1.6524658203125 + }, + { + "x": -0.84783935546875, + "y": -2.87603759765625 + }, + { + "x": -3.076263427734375, + "y": -3.72918701171875 + }, + { + "x": -4.7191009521484375, + "y": -0.69744873046875 + }, + { + "x": -4.2732086181640625, + "y": 1.5532379150390625 + }, + { + "x": -1.0696868896484375, + "y": 2.517669677734375 + }, + { + "x": -1.49993896484375, + "y": 0.2738037109375 + }, + { + "x": 1.172821044921875, + "y": -2.2574310302734375 + }, + { + "x": -0.9545440673828125, + "y": -2.544525146484375 + }, + { + "x": 1.7087249755859375, + "y": -1.176025390625 + }, + { + "x": -0.606597900390625, + "y": -1.712371826171875 + }, + { + "x": -2.015533447265625, + "y": 4.689048767089844 + }, + { + "x": 0.1064910888671875, + "y": 0.7852325439453125 + }, + { + "x": 0.5381927490234375, + "y": 3.2263946533203125 + }, + { + "x": 2.699859619140625, + "y": -1.8369140625 + }, + { + "x": 2.76617431640625, + "y": -0.3668365478515625 + }, + { + "x": 1.412261962890625, + "y": -1.38330078125 + }, + { + "x": 2.1673431396484375, + "y": 1.53179931640625 + }, + { + "x": 1.1322784423828125, + "y": -0.377777099609375 + }, + { + "x": 3.0996856689453125, + "y": 0.784332275390625 + }, + { + "x": 5.695526123046875, + "y": 1.50518798828125 + }, + { + "x": 3.7349090576171875, + "y": 0.4355316162109375 + }, + { + "x": 2.6438751220703125, + "y": -1.0613861083984375 + }, + { + "x": 4.7897186279296875, + "y": -1.463470458984375 + }, + { + "x": 1.736602783203125, + "y": 1.105743408203125 + }, + { + "x": 3.9468917846679688, + "y": -2.0157394409179688 + }, + { + "x": 0.8280868530273438, + "y": -1.36883544921875 + }, + { + "x": 5.5086517333984375, + "y": -2.4484710693359375 + }, + { + "x": 4.00445556640625, + "y": 0.5677337646484375 + }, + { + "x": 2.8835830688476562, + "y": 1.2554473876953125 + }, + { + "x": 2.5888595581054688, + "y": 2.32342529296875 + }, + { + "x": 1.4508590698242188, + "y": 3.214691162109375 + }, + { + "x": 0.7433853149414062, + "y": -3.2059402465820312 + }, + { + "x": 1.7997665405273438, + "y": -1.345306396484375 + }, + { + "x": 1.9625625610351562, + "y": -2.1981964111328125 + }, + { + "x": 2.9498062133789062, + "y": -1.308624267578125 + }, + { + "x": 0.3963165283203125, + "y": 0.734649658203125 + }, + { + "x": -0.7851333618164062, + "y": 4.39337158203125 + }, + { + "x": -3.7110061645507812, + "y": 3.534271240234375 + }, + { + "x": -3.3118972778320312, + "y": -3.361297607421875 + }, + { + "x": -0.705810546875, + "y": -3.9029388427734375 + }, + { + "x": -1.3474235534667969, + "y": -2.538604736328125 + }, + { + "x": -2.346832275390625, + "y": -2.9620819091796875 + }, + { + "x": -1.4210777282714844, + "y": 0.3588714599609375 + }, + { + "x": -5.608638763427734, + "y": 1.29632568359375 + }, + { + "x": -4.964546203613281, + "y": 5.915252685546875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.4978265653782484, + "y": -0.1827274994028703, + "z": 0.22127665610826633 + }, + "rotation": { + "quaternion": { + "W": 0.7382169403375823, + "X": -0.06848723454632544, + "Y": -0.023285472143556335, + "Z": 0.6706735677584638 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img30.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img30.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 926.4190673828125, + "y": 263.9939270019531 + }, + { + "x": 928.1792602539062, + "y": 294.2813415527344 + }, + { + "x": 927.44091796875, + "y": 323.1568908691406 + }, + { + "x": 929.3353271484375, + "y": 352.8280029296875 + }, + { + "x": 928.52294921875, + "y": 381.59539794921875 + }, + { + "x": 930.6046142578125, + "y": 410.6044616699219 + }, + { + "x": 932.3631591796875, + "y": 436.00103759765625 + }, + { + "x": 901.69775390625, + "y": 267.1348876953125 + }, + { + "x": 901.0581665039062, + "y": 295.509033203125 + }, + { + "x": 903.2723999023438, + "y": 325.2671203613281 + }, + { + "x": 903.685546875, + "y": 355.8245849609375 + }, + { + "x": 904.5165405273438, + "y": 384.4509582519531 + }, + { + "x": 903.8067016601562, + "y": 412.91278076171875 + }, + { + "x": 905.7001953125, + "y": 441.5194091796875 + }, + { + "x": 875.2847900390625, + "y": 265.6487121582031 + }, + { + "x": 876.2346801757812, + "y": 297.88739013671875 + }, + { + "x": 877.5821533203125, + "y": 325.82000732421875 + }, + { + "x": 877.5299682617188, + "y": 358.6492614746094 + }, + { + "x": 878.4364013671875, + "y": 387.3327331542969 + }, + { + "x": 880.0790405273438, + "y": 417.27117919921875 + }, + { + "x": 878.798828125, + "y": 444.9289245605469 + }, + { + "x": 846.91552734375, + "y": 269.76593017578125 + }, + { + "x": 847.488037109375, + "y": 299.8529052734375 + }, + { + "x": 847.5934448242188, + "y": 329.0538635253906 + }, + { + "x": 850.5516967773438, + "y": 360.2873229980469 + }, + { + "x": 851.917724609375, + "y": 390.8472900390625 + }, + { + "x": 852.471435546875, + "y": 419.8484191894531 + }, + { + "x": 853.250244140625, + "y": 449.5354309082031 + }, + { + "x": 817.3040161132812, + "y": 272.38458251953125 + }, + { + "x": 822.338134765625, + "y": 302.92047119140625 + }, + { + "x": 820.4236450195312, + "y": 334.5516357421875 + }, + { + "x": 822.6570434570312, + "y": 363.05322265625 + }, + { + "x": 824.0267333984375, + "y": 393.3741455078125 + }, + { + "x": 823.8071899414062, + "y": 422.3263854980469 + }, + { + "x": 825.2826538085938, + "y": 453.33905029296875 + }, + { + "x": 789.3031005859375, + "y": 272.9254150390625 + }, + { + "x": 791.5042724609375, + "y": 304.40380859375 + }, + { + "x": 793.8954467773438, + "y": 336.3903503417969 + }, + { + "x": 794.0773315429688, + "y": 367.3409118652344 + }, + { + "x": 796.7183227539062, + "y": 397.1988830566406 + }, + { + "x": 797.2433471679688, + "y": 426.2623596191406 + }, + { + "x": 798.6441040039062, + "y": 457.4405212402344 + }, + { + "x": 761.2037963867188, + "y": 274.7514953613281 + }, + { + "x": 761.4725952148438, + "y": 306.4882507324219 + }, + { + "x": 764.1790771484375, + "y": 338.5550231933594 + }, + { + "x": 765.839111328125, + "y": 370.5870666503906 + }, + { + "x": 765.7688598632812, + "y": 401.3974304199219 + }, + { + "x": 769.4276733398438, + "y": 432.3917541503906 + }, + { + "x": 767.7037963867188, + "y": 461.8224792480469 + } + ], + "reprojectionErrors": [ + { + "x": 1.034912109375, + "y": -19.273452758789062 + }, + { + "x": -0.732421875, + "y": -12.752044677734375 + }, + { + "x": -0.00103759765625, + "y": -5.745269775390625 + }, + { + "x": -1.9022216796875, + "y": -0.425994873046875 + }, + { + "x": -1.09649658203125, + "y": 4.9378662109375 + }, + { + "x": -3.18463134765625, + "y": 9.232208251953125 + }, + { + "x": -4.94952392578125, + "y": 16.340911865234375 + }, + { + "x": -4.17742919921875, + "y": -15.205459594726562 + }, + { + "x": -3.1759033203125, + "y": -8.083892822265625 + }, + { + "x": -5.0369873046875, + "y": -3.210357666015625 + }, + { + "x": -5.10552978515625, + "y": 0.0308837890625 + }, + { + "x": -5.60009765625, + "y": 4.399993896484375 + }, + { + "x": -4.561767578125, + "y": 8.15869140625 + }, + { + "x": -6.13433837890625, + "y": 11.024627685546875 + }, + { + "x": -5.74774169921875, + "y": -6.98004150390625 + }, + { + "x": -6.01361083984375, + "y": -4.94598388671875 + }, + { + "x": -6.6932373046875, + "y": 0.586395263671875 + }, + { + "x": -5.98876953125, + "y": 0.442535400390625 + }, + { + "x": -6.25787353515625, + "y": 3.69183349609375 + }, + { + "x": -7.27777099609375, + "y": 4.959228515625 + }, + { + "x": -5.3887939453125, + "y": 7.804901123046875 + }, + { + "x": -3.595947265625, + "y": -4.783294677734375 + }, + { + "x": -3.20294189453125, + "y": -1.739288330078125 + }, + { + "x": -2.36480712890625, + "y": 1.433929443359375 + }, + { + "x": -4.40087890625, + "y": 1.843505859375 + }, + { + "x": -4.8653564453125, + "y": 2.219879150390625 + }, + { + "x": -4.537353515625, + "y": 3.471832275390625 + }, + { + "x": -4.45379638671875, + "y": 3.376983642578125 + }, + { + "x": 1.40179443359375, + "y": -1.47418212890625 + }, + { + "x": -2.420166015625, + "y": 0.052520751953125 + }, + { + "x": 0.6795654296875, + "y": -0.2265625 + }, + { + "x": -0.39453125, + "y": 1.93682861328125 + }, + { + "x": -0.63006591796875, + "y": 1.616058349609375 + }, + { + "x": 0.69927978515625, + "y": 2.020599365234375 + }, + { + "x": 0.31005859375, + "y": -0.25823974609375 + }, + { + "x": 6.24993896484375, + "y": 3.560882568359375 + }, + { + "x": 5.47711181640625, + "y": 3.14324951171875 + }, + { + "x": 4.4835205078125, + "y": 1.549163818359375 + }, + { + "x": 5.66949462890625, + "y": 0.344085693359375 + }, + { + "x": 4.36749267578125, + "y": -0.394927978515625 + }, + { + "x": 5.15362548828125, + "y": -0.9464111328125 + }, + { + "x": 5.03692626953125, + "y": -4.200714111328125 + }, + { + "x": 12.53106689453125, + "y": 6.989288330078125 + }, + { + "x": 13.88037109375, + "y": 5.371978759765625 + }, + { + "x": 12.7581787109375, + "y": 2.794921875 + }, + { + "x": 12.649658203125, + "y": -0.357666015625 + }, + { + "x": 14.23956298828125, + "y": -2.880035400390625 + }, + { + "x": 12.0697021484375, + "y": -6.15985107421875 + }, + { + "x": 15.2525634765625, + "y": -8.432281494140625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.2560898753908746, + "y": -0.08126826613930697, + "z": 0.21099505265038127 + }, + "rotation": { + "quaternion": { + "W": 0.7373961559143849, + "X": 0.14552464189169717, + "Y": 0.05696593527871375, + "Z": 0.6571334492040432 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img31.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img31.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 907.4207763671875, + "y": 275.6828918457031 + }, + { + "x": 932.7286376953125, + "y": 273.6068420410156 + }, + { + "x": 958.0929565429688, + "y": 272.7484436035156 + }, + { + "x": 984.13232421875, + "y": 270.3695373535156 + }, + { + "x": 1008.5098876953125, + "y": 267.095947265625 + }, + { + "x": 1032.013671875, + "y": 267.6199645996094 + }, + { + "x": 1054.3616943359375, + "y": 264.86163330078125 + }, + { + "x": 908.9068603515625, + "y": 303.6646728515625 + }, + { + "x": 935.5436401367188, + "y": 301.7040710449219 + }, + { + "x": 961.1576538085938, + "y": 299.7085266113281 + }, + { + "x": 985.30859375, + "y": 297.7269287109375 + }, + { + "x": 1009.614501953125, + "y": 295.7168884277344 + }, + { + "x": 1032.5120849609375, + "y": 293.458251953125 + }, + { + "x": 1056.3035888671875, + "y": 292.18603515625 + }, + { + "x": 911.17236328125, + "y": 332.650390625 + }, + { + "x": 937.1610107421875, + "y": 329.7378845214844 + }, + { + "x": 961.6815795898438, + "y": 328.40875244140625 + }, + { + "x": 986.0035400390625, + "y": 324.1601257324219 + }, + { + "x": 1011.7224731445312, + "y": 321.5029296875 + }, + { + "x": 1034.492919921875, + "y": 320.3773193359375 + }, + { + "x": 1056.70166015625, + "y": 318.6118469238281 + }, + { + "x": 913.65576171875, + "y": 360.9776611328125 + }, + { + "x": 938.5121459960938, + "y": 358.288330078125 + }, + { + "x": 963.4841918945312, + "y": 354.3165588378906 + }, + { + "x": 988.765869140625, + "y": 352.0608215332031 + }, + { + "x": 1012.34716796875, + "y": 350.4939270019531 + }, + { + "x": 1035.5615234375, + "y": 348.3482666015625 + }, + { + "x": 1058.4874267578125, + "y": 345.30462646484375 + }, + { + "x": 913.9864501953125, + "y": 388.598876953125 + }, + { + "x": 941.473388671875, + "y": 385.6052551269531 + }, + { + "x": 965.3453369140625, + "y": 382.0120544433594 + }, + { + "x": 990.23876953125, + "y": 379.8727111816406 + }, + { + "x": 1013.5126342773438, + "y": 376.60113525390625 + }, + { + "x": 1037.4593505859375, + "y": 374.28228759765625 + }, + { + "x": 1058.34326171875, + "y": 372.08575439453125 + }, + { + "x": 917.0225219726562, + "y": 416.8328552246094 + }, + { + "x": 942.2179565429688, + "y": 410.9373779296875 + }, + { + "x": 965.6539916992188, + "y": 408.30718994140625 + }, + { + "x": 989.9251098632812, + "y": 407.4132995605469 + }, + { + "x": 1014.48828125, + "y": 403.02001953125 + }, + { + "x": 1037.0751953125, + "y": 400.17279052734375 + }, + { + "x": 1060.0863037109375, + "y": 397.3782043457031 + }, + { + "x": 916.3430786132812, + "y": 442.9444580078125 + }, + { + "x": 941.8964233398438, + "y": 438.6047058105469 + }, + { + "x": 966.6632690429688, + "y": 436.7433776855469 + }, + { + "x": 991.6934814453125, + "y": 433.26422119140625 + }, + { + "x": 1014.7051391601562, + "y": 429.1395263671875 + }, + { + "x": 1038.7066650390625, + "y": 426.489990234375 + }, + { + "x": 1061.218017578125, + "y": 422.3296813964844 + } + ], + "reprojectionErrors": [ + { + "x": 7.131591796875, + "y": 6.307830810546875 + }, + { + "x": 3.13824462890625, + "y": 4.532867431640625 + }, + { + "x": -0.0552978515625, + "y": 1.38555908203125 + }, + { + "x": -3.0147705078125, + "y": -0.405487060546875 + }, + { + "x": -3.346435546875, + "y": -1.476409912109375 + }, + { + "x": -1.7762451171875, + "y": -6.530670166015625 + }, + { + "x": 2.045166015625, + "y": -8.50048828125 + }, + { + "x": 6.93389892578125, + "y": 4.292236328125 + }, + { + "x": 1.61029052734375, + "y": 2.9173583984375 + }, + { + "x": -1.8353271484375, + "y": 1.443603515625 + }, + { + "x": -2.91015625, + "y": -0.1861572265625 + }, + { + "x": -3.17529296875, + "y": -1.9384765625 + }, + { + "x": -1.005615234375, + "y": -3.602783203125 + }, + { + "x": 1.3636474609375, + "y": -6.4246826171875 + }, + { + "x": 5.95367431640625, + "y": 1.2091064453125 + }, + { + "x": 1.27685546875, + "y": 1.29913330078125 + }, + { + "x": -1.077880859375, + "y": -0.30731201171875 + }, + { + "x": -2.3275146484375, + "y": 0.88568115234375 + }, + { + "x": -4.01092529296875, + "y": 0.359649658203125 + }, + { + "x": -1.720947265625, + "y": -1.833648681640625 + }, + { + "x": 2.222412109375, + "y": -3.531707763671875 + }, + { + "x": 4.75238037109375, + "y": -1.278900146484375 + }, + { + "x": 1.20635986328125, + "y": -0.901580810546875 + }, + { + "x": -1.60235595703125, + "y": 0.665618896484375 + }, + { + "x": -3.8155517578125, + "y": 0.418609619140625 + }, + { + "x": -3.36663818359375, + "y": -0.62158203125 + }, + { + "x": -1.5274658203125, + "y": -1.19403076171875 + }, + { + "x": 1.6900634765625, + "y": -0.98675537109375 + }, + { + "x": 5.70062255859375, + "y": -3.1240234375 + }, + { + "x": -0.4774169921875, + "y": -1.9344482421875 + }, + { + "x": -2.18865966796875, + "y": -0.2174072265625 + }, + { + "x": -4.01751708984375, + "y": -0.03076171875 + }, + { + "x": -3.2664794921875, + "y": 1.206817626953125 + }, + { + "x": -2.1666259765625, + "y": 1.405181884765625 + }, + { + "x": 3.0841064453125, + "y": 1.38909912109375 + }, + { + "x": 3.9404296875, + "y": -5.644775390625 + }, + { + "x": 0.0523681640625, + "y": -1.047882080078125 + }, + { + "x": -1.22564697265625, + "y": 0.23187255859375 + }, + { + "x": -2.4361572265625, + "y": -0.2796630859375 + }, + { + "x": -2.97979736328125, + "y": 2.64971923828125 + }, + { + "x": -0.5272216796875, + "y": 3.97088623046875 + }, + { + "x": 2.5875244140625, + "y": 5.1732177734375 + }, + { + "x": 5.892578125, + "y": -6.105804443359375 + }, + { + "x": 1.64501953125, + "y": -2.5616455078125 + }, + { + "x": -0.966552734375, + "y": -1.52764892578125 + }, + { + "x": -2.940185546875, + "y": 1.09051513671875 + }, + { + "x": -1.937744140625, + "y": 4.318450927734375 + }, + { + "x": -0.9068603515625, + "y": 6.033203125 + }, + { + "x": 2.6988525390625, + "y": 9.218231201171875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.3381223965345192, + "y": -0.07701947163144716, + "z": 0.2944422582985427 + }, + "rotation": { + "quaternion": { + "W": 0.992587790036772, + "X": 0.012257165554274514, + "Y": 0.11221781789920623, + "Z": -0.04501557850825296 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img32.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img32.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1171.2056884765625, + "y": 263.7370910644531 + }, + { + "x": 1174.128662109375, + "y": 289.49560546875 + }, + { + "x": 1175.2803955078125, + "y": 315.0513916015625 + }, + { + "x": 1178.1988525390625, + "y": 341.3127136230469 + }, + { + "x": 1177.840576171875, + "y": 366.8492431640625 + }, + { + "x": 1180.1864013671875, + "y": 391.4876708984375 + }, + { + "x": 1181.7232666015625, + "y": 416.4811706542969 + }, + { + "x": 1149.634033203125, + "y": 265.69342041015625 + }, + { + "x": 1149.760009765625, + "y": 290.8296203613281 + }, + { + "x": 1154.011962890625, + "y": 316.5575866699219 + }, + { + "x": 1154.8531494140625, + "y": 343.2975158691406 + }, + { + "x": 1157.213134765625, + "y": 368.0807189941406 + }, + { + "x": 1156.869384765625, + "y": 393.3926696777344 + }, + { + "x": 1159.7298583984375, + "y": 418.6689758300781 + }, + { + "x": 1126.2862548828125, + "y": 264.72003173828125 + }, + { + "x": 1128.7293701171875, + "y": 291.8733215332031 + }, + { + "x": 1130.9693603515625, + "y": 315.773681640625 + }, + { + "x": 1131.6688232421875, + "y": 343.6285400390625 + }, + { + "x": 1133.1500244140625, + "y": 369.715087890625 + }, + { + "x": 1135.433837890625, + "y": 394.7002868652344 + }, + { + "x": 1135.6905517578125, + "y": 419.3134765625 + }, + { + "x": 1102.32666015625, + "y": 267.36376953125 + }, + { + "x": 1103.2325439453125, + "y": 293.30389404296875 + }, + { + "x": 1105.239501953125, + "y": 317.8513488769531 + }, + { + "x": 1108.88818359375, + "y": 344.3185729980469 + }, + { + "x": 1110.8775634765625, + "y": 370.8169860839844 + }, + { + "x": 1111.6683349609375, + "y": 396.48724365234375 + }, + { + "x": 1112.789794921875, + "y": 421.67254638671875 + }, + { + "x": 1076.7569580078125, + "y": 269.3710021972656 + }, + { + "x": 1082.1102294921875, + "y": 294.58648681640625 + }, + { + "x": 1081.22314453125, + "y": 322.0868225097656 + }, + { + "x": 1084.6737060546875, + "y": 345.5004577636719 + }, + { + "x": 1086.5499267578125, + "y": 371.7976989746094 + }, + { + "x": 1086.9119873046875, + "y": 396.33758544921875 + }, + { + "x": 1088.69677734375, + "y": 423.5936584472656 + }, + { + "x": 1053.42724609375, + "y": 269.3661804199219 + }, + { + "x": 1056.117431640625, + "y": 295.6161193847656 + }, + { + "x": 1058.6644287109375, + "y": 321.6712646484375 + }, + { + "x": 1060.4371337890625, + "y": 348.3772888183594 + }, + { + "x": 1063.4744873046875, + "y": 373.57147216796875 + }, + { + "x": 1064.693359375, + "y": 398.1889343261719 + }, + { + "x": 1064.1387939453125, + "y": 423.7735595703125 + }, + { + "x": 1029.7408447265625, + "y": 270.5361022949219 + }, + { + "x": 1031.3785400390625, + "y": 296.6048583984375 + }, + { + "x": 1034.4747314453125, + "y": 323.4622802734375 + }, + { + "x": 1036.5101318359375, + "y": 349.6640930175781 + }, + { + "x": 1037.710205078125, + "y": 375.57159423828125 + }, + { + "x": 1041.0567626953125, + "y": 402.2174987792969 + }, + { + "x": 1039.7196044921875, + "y": 427.5863037109375 + } + ], + "reprojectionErrors": [ + { + "x": 1.953369140625, + "y": -4.44549560546875 + }, + { + "x": 0.995849609375, + "y": -3.4268798828125 + }, + { + "x": 1.8197021484375, + "y": -2.06854248046875 + }, + { + "x": 0.886962890625, + "y": -1.2777099609375 + }, + { + "x": 3.2410888671875, + "y": 0.37701416015625 + }, + { + "x": 2.9013671875, + "y": 3.070037841796875 + }, + { + "x": 3.3809814453125, + "y": 5.549224853515625 + }, + { + "x": -1.421630859375, + "y": -3.540313720703125 + }, + { + "x": 0.3232421875, + "y": -2.328155517578125 + }, + { + "x": -2.04833984375, + "y": -1.5751953125 + }, + { + "x": -0.999755859375, + "y": -1.700592041015625 + }, + { + "x": -1.46044921875, + "y": 0.265350341796875 + }, + { + "x": 0.792236328125, + "y": 1.838165283203125 + }, + { + "x": -0.1495361328125, + "y": 3.583282470703125 + }, + { + "x": -2.22314453125, + "y": 0.203125 + }, + { + "x": -2.8848876953125, + "y": -1.01708984375 + }, + { + "x": -3.3348388671875, + "y": 1.14404296875 + }, + { + "x": -2.2353515625, + "y": -0.51995849609375 + }, + { + "x": -1.9085693359375, + "y": -0.28533935546875 + }, + { + "x": -2.37548828125, + "y": 1.18194580078125 + }, + { + "x": -0.80615234375, + "y": 3.153472900390625 + }, + { + "x": -1.653076171875, + "y": 0.2423095703125 + }, + { + "x": -0.862548828125, + "y": -0.1671142578125 + }, + { + "x": -1.1649169921875, + "y": 0.940521240234375 + }, + { + "x": -3.1007080078125, + "y": 0.253753662109375 + }, + { + "x": -3.3687744140625, + "y": -0.3380126953125 + }, + { + "x": -2.4298095703125, + "y": 0.025604248046875 + }, + { + "x": -1.81298828125, + "y": 1.00225830078125 + }, + { + "x": 1.25146484375, + "y": 0.83489990234375 + }, + { + "x": -2.4859619140625, + "y": 0.760009765625 + }, + { + "x": 0.024658203125, + "y": -1.4791259765625 + }, + { + "x": -1.794677734375, + "y": 0.48992919921875 + }, + { + "x": -2.0316162109375, + "y": -0.302276611328125 + }, + { + "x": -0.74658203125, + "y": 0.786102294921875 + }, + { + "x": -0.8763427734375, + "y": -0.717559814453125 + }, + { + "x": 2.6072998046875, + "y": 3.360260009765625 + }, + { + "x": 1.4564208984375, + "y": 1.87255859375 + }, + { + "x": 0.4560546875, + "y": 0.696624755859375 + }, + { + "x": 0.2371826171875, + "y": -1.01239013671875 + }, + { + "x": -1.2388916015625, + "y": -1.090911865234375 + }, + { + "x": -0.8890380859375, + "y": -0.473236083984375 + }, + { + "x": 1.2415771484375, + "y": -0.702392578125 + }, + { + "x": 4.97998046875, + "y": 4.6351318359375 + }, + { + "x": 4.8089599609375, + "y": 2.96148681640625 + }, + { + "x": 3.186279296875, + "y": 0.6126708984375 + }, + { + "x": 2.6312255859375, + "y": -0.96624755859375 + }, + { + "x": 2.91845703125, + "y": -2.135772705078125 + }, + { + "x": 1.0660400390625, + "y": -3.92779541015625 + }, + { + "x": 3.9044189453125, + "y": -4.32598876953125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.6975114305035303, + "y": -0.0955579609413988, + "z": 0.2836823287062394 + }, + "rotation": { + "quaternion": { + "W": 0.7192241704481276, + "X": 0.0570222034092478, + "Y": 0.07433923068555473, + "Z": 0.6884320879670247 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img33.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img33.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1197.4844970703125, + "y": 262.5670166015625 + }, + { + "x": 1200.4725341796875, + "y": 290.4239501953125 + }, + { + "x": 1202.367919921875, + "y": 318.485107421875 + }, + { + "x": 1205.219970703125, + "y": 347.61688232421875 + }, + { + "x": 1204.589599609375, + "y": 375.4684753417969 + }, + { + "x": 1207.1416015625, + "y": 402.4634704589844 + }, + { + "x": 1208.7044677734375, + "y": 429.3155822753906 + }, + { + "x": 1174.1943359375, + "y": 264.9649963378906 + }, + { + "x": 1174.50732421875, + "y": 291.5963134765625 + }, + { + "x": 1178.451904296875, + "y": 320.0616760253906 + }, + { + "x": 1179.6507568359375, + "y": 349.2977600097656 + }, + { + "x": 1181.559814453125, + "y": 376.4398193359375 + }, + { + "x": 1181.5107421875, + "y": 404.0302429199219 + }, + { + "x": 1184.2735595703125, + "y": 431.8282165527344 + }, + { + "x": 1148.251953125, + "y": 263.3185729980469 + }, + { + "x": 1150.430908203125, + "y": 293.2640075683594 + }, + { + "x": 1153.1492919921875, + "y": 319.7007141113281 + }, + { + "x": 1154.4412841796875, + "y": 350.3383483886719 + }, + { + "x": 1155.4556884765625, + "y": 378.3692932128906 + }, + { + "x": 1157.8280029296875, + "y": 405.4339294433594 + }, + { + "x": 1158.461669921875, + "y": 432.1054382324219 + }, + { + "x": 1122.3319091796875, + "y": 266.6705017089844 + }, + { + "x": 1122.923095703125, + "y": 294.7288818359375 + }, + { + "x": 1124.670654296875, + "y": 321.522216796875 + }, + { + "x": 1129.227783203125, + "y": 350.3782653808594 + }, + { + "x": 1131.6671142578125, + "y": 379.7908020019531 + }, + { + "x": 1131.6650390625, + "y": 407.7563781738281 + }, + { + "x": 1133.5482177734375, + "y": 434.72833251953125 + }, + { + "x": 1093.552490234375, + "y": 268.8670349121094 + }, + { + "x": 1099.402099609375, + "y": 295.9680480957031 + }, + { + "x": 1099.5693359375, + "y": 325.72186279296875 + }, + { + "x": 1102.52978515625, + "y": 351.6336975097656 + }, + { + "x": 1104.8154296875, + "y": 380.2135925292969 + }, + { + "x": 1105.324462890625, + "y": 407.0333557128906 + }, + { + "x": 1107.2872314453125, + "y": 436.2483825683594 + }, + { + "x": 1068.5455322265625, + "y": 268.4960632324219 + }, + { + "x": 1071.5020751953125, + "y": 297.4762878417969 + }, + { + "x": 1074.362548828125, + "y": 325.5343322753906 + }, + { + "x": 1076.405029296875, + "y": 354.6044616699219 + }, + { + "x": 1079.65673828125, + "y": 382.013671875 + }, + { + "x": 1080.9669189453125, + "y": 408.5154113769531 + }, + { + "x": 1082.4583740234375, + "y": 437.5057067871094 + }, + { + "x": 1042.5650634765625, + "y": 270.2201232910156 + }, + { + "x": 1044.8443603515625, + "y": 298.3720397949219 + }, + { + "x": 1048.4605712890625, + "y": 327.3259582519531 + }, + { + "x": 1050.79248046875, + "y": 356.0561218261719 + }, + { + "x": 1051.5574951171875, + "y": 384.0305480957031 + }, + { + "x": 1055.089111328125, + "y": 412.248291015625 + }, + { + "x": 1054.0782470703125, + "y": 439.8132019042969 + } + ], + "reprojectionErrors": [ + { + "x": 1.9951171875, + "y": -4.75048828125 + }, + { + "x": 1.156494140625, + "y": -3.376190185546875 + }, + { + "x": 1.421630859375, + "y": -2.053985595703125 + }, + { + "x": 0.741455078125, + "y": -1.649139404296875 + }, + { + "x": 3.5550537109375, + "y": 0.19036865234375 + }, + { + "x": 3.1976318359375, + "y": 3.04217529296875 + }, + { + "x": 3.8409423828125, + "y": 6.19378662109375 + }, + { + "x": -2.017578125, + "y": -4.05377197265625 + }, + { + "x": -0.287353515625, + "y": -1.942596435546875 + }, + { + "x": -2.17822265625, + "y": -1.51849365234375 + }, + { + "x": -1.3128662109375, + "y": -1.71697998046875 + }, + { + "x": -1.1470947265625, + "y": 0.327850341796875 + }, + { + "x": 0.9874267578125, + "y": 2.074737548828125 + }, + { + "x": 0.32080078125, + "y": 3.765655517578125 + }, + { + "x": -2.4681396484375, + "y": 0.584228515625 + }, + { + "x": -2.7041015625, + "y": -1.0914306640625 + }, + { + "x": -3.4698486328125, + "y": 0.8837890625 + }, + { + "x": -2.79931640625, + "y": -1.19866943359375 + }, + { + "x": -1.84130859375, + "y": -0.530120849609375 + }, + { + "x": -2.231201171875, + "y": 1.250152587890625 + }, + { + "x": -0.8724365234375, + "y": 3.570037841796875 + }, + { + "x": -2.0755615234375, + "y": 0.125823974609375 + }, + { + "x": -0.8187255859375, + "y": -0.120208740234375 + }, + { + "x": -0.709228515625, + "y": 1.036376953125 + }, + { + "x": -3.4000244140625, + "y": 0.268798828125 + }, + { + "x": -3.9637451171875, + "y": -0.915618896484375 + }, + { + "x": -2.07666015625, + "y": -0.512451171875 + }, + { + "x": -2.0655517578125, + "y": 1.02606201171875 + }, + { + "x": 1.9996337890625, + "y": 0.72943115234375 + }, + { + "x": -2.091796875, + "y": 0.9979248046875 + }, + { + "x": -0.4923095703125, + "y": -1.253204345703125 + }, + { + "x": -1.6773681640625, + "y": 0.4718017578125 + }, + { + "x": -2.1790771484375, + "y": -0.336151123046875 + }, + { + "x": -0.895263671875, + "y": 0.752166748046875 + }, + { + "x": -1.0565185546875, + "y": -0.41766357421875 + }, + { + "x": 3.086669921875, + "y": 3.81170654296875 + }, + { + "x": 1.80322265625, + "y": 1.772003173828125 + }, + { + "x": 0.623779296875, + "y": 0.78350830078125 + }, + { + "x": 0.2705078125, + "y": -1.087188720703125 + }, + { + "x": -1.283935546875, + "y": -1.16607666015625 + }, + { + "x": -0.8887939453125, + "y": -0.2056884765625 + }, + { + "x": -0.66650390625, + "y": -1.601104736328125 + }, + { + "x": 5.89453125, + "y": 4.714202880859375 + }, + { + "x": 5.2076416015625, + "y": 3.08709716796875 + }, + { + "x": 3.19140625, + "y": 0.782989501953125 + }, + { + "x": 2.4669189453125, + "y": -1.171478271484375 + }, + { + "x": 3.3170166015625, + "y": -2.243408203125 + }, + { + "x": 1.4080810546875, + "y": -3.430938720703125 + }, + { + "x": 4.04931640625, + "y": -3.837066650390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.6739887821043815, + "y": -0.0888562990117186, + "z": 0.26001151255309995 + }, + "rotation": { + "quaternion": { + "W": 0.7199010588752393, + "X": 0.054848020197871536, + "Y": 0.07083806449027984, + "Z": 0.6882703892584324 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img34.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img34.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1195.857666015625, + "y": 323.4884033203125 + }, + { + "x": 1197.7200927734375, + "y": 352.259033203125 + }, + { + "x": 1198.2340087890625, + "y": 380.5309753417969 + }, + { + "x": 1199.6240234375, + "y": 409.5553894042969 + }, + { + "x": 1198.5189208984375, + "y": 437.52886962890625 + }, + { + "x": 1199.636962890625, + "y": 464.59844970703125 + }, + { + "x": 1200.7327880859375, + "y": 490.35992431640625 + }, + { + "x": 1172.116943359375, + "y": 325.78765869140625 + }, + { + "x": 1171.0023193359375, + "y": 353.21923828125 + }, + { + "x": 1173.55419921875, + "y": 381.68511962890625 + }, + { + "x": 1174.0545654296875, + "y": 411.2138366699219 + }, + { + "x": 1174.659423828125, + "y": 438.3257751464844 + }, + { + "x": 1173.5533447265625, + "y": 465.97027587890625 + }, + { + "x": 1175.3575439453125, + "y": 493.43060302734375 + }, + { + "x": 1145.558349609375, + "y": 323.96966552734375 + }, + { + "x": 1146.41943359375, + "y": 354.284912109375 + }, + { + "x": 1148.5194091796875, + "y": 381.0267333984375 + }, + { + "x": 1148.33251953125, + "y": 412.1407775878906 + }, + { + "x": 1148.2919921875, + "y": 439.9089050292969 + }, + { + "x": 1149.8089599609375, + "y": 467.36138916015625 + }, + { + "x": 1149.149658203125, + "y": 493.5052795410156 + }, + { + "x": 1118.7457275390625, + "y": 327.1889953613281 + }, + { + "x": 1118.7503662109375, + "y": 355.5439758300781 + }, + { + "x": 1119.4486083984375, + "y": 382.839599609375 + }, + { + "x": 1122.628173828125, + "y": 412.032470703125 + }, + { + "x": 1124.1802978515625, + "y": 441.5867614746094 + }, + { + "x": 1122.8433837890625, + "y": 469.4815979003906 + }, + { + "x": 1123.9661865234375, + "y": 496.3270263671875 + }, + { + "x": 1089.9813232421875, + "y": 328.5550842285156 + }, + { + "x": 1094.62890625, + "y": 356.99365234375 + }, + { + "x": 1093.4412841796875, + "y": 386.6866149902344 + }, + { + "x": 1095.7791748046875, + "y": 413.20074462890625 + }, + { + "x": 1096.4425048828125, + "y": 441.7489929199219 + }, + { + "x": 1096.336181640625, + "y": 468.40869140625 + }, + { + "x": 1097.41259765625, + "y": 497.3153381347656 + }, + { + "x": 1063.589111328125, + "y": 328.4649353027344 + }, + { + "x": 1065.6669921875, + "y": 357.6205139160156 + }, + { + "x": 1067.4632568359375, + "y": 386.0098571777344 + }, + { + "x": 1068.1873779296875, + "y": 415.8868408203125 + }, + { + "x": 1071.2021484375, + "y": 443.30755615234375 + }, + { + "x": 1071.38818359375, + "y": 469.7466125488281 + }, + { + "x": 1071.0086669921875, + "y": 497.7015686035156 + }, + { + "x": 1037.4981689453125, + "y": 329.29034423828125 + }, + { + "x": 1038.140380859375, + "y": 358.2838439941406 + }, + { + "x": 1041.1055908203125, + "y": 387.6041564941406 + }, + { + "x": 1042.438232421875, + "y": 416.80169677734375 + }, + { + "x": 1042.1697998046875, + "y": 445.16082763671875 + }, + { + "x": 1045.318603515625, + "y": 473.3055725097656 + }, + { + "x": 1042.8134765625, + "y": 500.7378845214844 + } + ], + "reprojectionErrors": [ + { + "x": 2.95556640625, + "y": -5.3726806640625 + }, + { + "x": 1.845458984375, + "y": -3.979827880859375 + }, + { + "x": 2.081298828125, + "y": -2.186065673828125 + }, + { + "x": 1.438720703125, + "y": -1.242034912109375 + }, + { + "x": 3.2886962890625, + "y": 0.656097412109375 + }, + { + "x": 2.9132080078125, + "y": 3.36175537109375 + }, + { + "x": 2.5574951171875, + "y": 7.279632568359375 + }, + { + "x": -1.7269287109375, + "y": -4.640716552734375 + }, + { + "x": 0.17138671875, + "y": -2.4674072265625 + }, + { + "x": -1.5992431640625, + "y": -1.422576904296875 + }, + { + "x": -1.32080078125, + "y": -1.534332275390625 + }, + { + "x": -1.1494140625, + "y": 0.6773681640625 + }, + { + "x": 0.7303466796875, + "y": 2.263671875 + }, + { + "x": -0.302490234375, + "y": 3.94171142578125 + }, + { + "x": -2.565185546875, + "y": 0.0989990234375 + }, + { + "x": -2.61376953125, + "y": -1.14959716796875 + }, + { + "x": -3.90380859375, + "y": 1.084381103515625 + }, + { + "x": -2.9095458984375, + "y": -1.144256591796875 + }, + { + "x": -2.064208984375, + "y": -0.116943359375 + }, + { + "x": -2.77880859375, + "y": 1.136474609375 + }, + { + "x": -1.3197021484375, + "y": 3.60931396484375 + }, + { + "x": -2.1776123046875, + "y": -0.302215576171875 + }, + { + "x": -1.3436279296875, + "y": -0.109619140625 + }, + { + "x": -1.2056884765625, + "y": 1.054718017578125 + }, + { + "x": -3.5517578125, + "y": 0.234588623046875 + }, + { + "x": -4.27294921875, + "y": -1.033782958984375 + }, + { + "x": -2.1075439453125, + "y": -0.7291259765625 + }, + { + "x": -2.404541015625, + "y": 0.538909912109375 + }, + { + "x": 1.0826416015625, + "y": 1.05157470703125 + }, + { + "x": -2.7022705078125, + "y": 0.659759521484375 + }, + { + "x": -0.6546630859375, + "y": -1.071044921875 + }, + { + "x": -2.1351318359375, + "y": 0.292755126953125 + }, + { + "x": -1.943603515625, + "y": -0.46136474609375 + }, + { + "x": -0.985107421875, + "y": 0.589599609375 + }, + { + "x": -1.2117919921875, + "y": -0.689453125 + }, + { + "x": 2.844482421875, + "y": 3.768463134765625 + }, + { + "x": 1.6510009765625, + "y": 2.176055908203125 + }, + { + "x": 0.736572265625, + "y": 1.268157958984375 + }, + { + "x": 0.8916015625, + "y": -1.208709716796875 + }, + { + "x": -1.24658203125, + "y": -1.310302734375 + }, + { + "x": -0.5587158203125, + "y": -0.5108642578125 + }, + { + "x": 0.692138671875, + "y": -1.3076171875 + }, + { + "x": 5.134521484375, + "y": 5.481292724609375 + }, + { + "x": 5.3966064453125, + "y": 3.58380126953125 + }, + { + "x": 3.3330078125, + "y": 1.280487060546875 + }, + { + "x": 2.8994140625, + "y": -0.978668212890625 + }, + { + "x": 4.064208984375, + "y": -2.477691650390625 + }, + { + "x": 1.8092041015625, + "y": -3.840301513671875 + }, + { + "x": 5.2054443359375, + "y": -4.568084716796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.6556467423573251, + "y": -0.03590946772708566, + "z": 0.2532653994770105 + }, + "rotation": { + "quaternion": { + "W": 0.7310821745755893, + "X": 0.07441325688950823, + "Y": 0.0576947205313725, + "Z": 0.6757609343841432 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img35.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img35.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1030.243896484375, + "y": 148.6001434326172 + }, + { + "x": 1056.7269287109375, + "y": 147.32614135742188 + }, + { + "x": 1083.7396240234375, + "y": 146.878662109375 + }, + { + "x": 1112.5999755859375, + "y": 144.7683868408203 + }, + { + "x": 1139.670166015625, + "y": 141.71005249023438 + }, + { + "x": 1165.9969482421875, + "y": 143.524658203125 + }, + { + "x": 1191.0628662109375, + "y": 141.34910583496094 + }, + { + "x": 1032.7554931640625, + "y": 177.7664337158203 + }, + { + "x": 1061.4278564453125, + "y": 176.53402709960938 + }, + { + "x": 1089.72900390625, + "y": 175.38343811035156 + }, + { + "x": 1115.4432373046875, + "y": 173.94149780273438 + }, + { + "x": 1143.1168212890625, + "y": 172.4173583984375 + }, + { + "x": 1168.41943359375, + "y": 171.3663787841797 + }, + { + "x": 1194.641357421875, + "y": 170.0623016357422 + }, + { + "x": 1036.7381591796875, + "y": 208.73585510253906 + }, + { + "x": 1064.852294921875, + "y": 205.6865997314453 + }, + { + "x": 1091.734619140625, + "y": 205.9807891845703 + }, + { + "x": 1118.9962158203125, + "y": 202.17396545410156 + }, + { + "x": 1147.5299072265625, + "y": 200.14752197265625 + }, + { + "x": 1173.1309814453125, + "y": 200.53709411621094 + }, + { + "x": 1198.1614990234375, + "y": 199.5553436279297 + }, + { + "x": 1041.7371826171875, + "y": 238.34872436523438 + }, + { + "x": 1068.2802734375, + "y": 236.50619506835938 + }, + { + "x": 1096.197509765625, + "y": 233.59483337402344 + }, + { + "x": 1123.734375, + "y": 232.2791290283203 + }, + { + "x": 1150.2215576171875, + "y": 231.83216857910156 + }, + { + "x": 1175.879638671875, + "y": 231.32904052734375 + }, + { + "x": 1202.71142578125, + "y": 229.34722900390625 + }, + { + "x": 1043.65283203125, + "y": 267.4969787597656 + }, + { + "x": 1072.9515380859375, + "y": 265.6614685058594 + }, + { + "x": 1099.3553466796875, + "y": 263.53826904296875 + }, + { + "x": 1127.3765869140625, + "y": 262.7530517578125 + }, + { + "x": 1152.53662109375, + "y": 260.9907531738281 + }, + { + "x": 1179.7454833984375, + "y": 259.6070556640625 + }, + { + "x": 1203.81982421875, + "y": 258.7745666503906 + }, + { + "x": 1047.85205078125, + "y": 297.43792724609375 + }, + { + "x": 1075.80224609375, + "y": 293.0016784667969 + }, + { + "x": 1100.9808349609375, + "y": 291.7463073730469 + }, + { + "x": 1128.44287109375, + "y": 292.73681640625 + }, + { + "x": 1155.54296875, + "y": 289.7391662597656 + }, + { + "x": 1181.4158935546875, + "y": 288.4435729980469 + }, + { + "x": 1207.32958984375, + "y": 286.7527770996094 + }, + { + "x": 1048.760009765625, + "y": 326.5487365722656 + }, + { + "x": 1077.4661865234375, + "y": 324.2069396972656 + }, + { + "x": 1104.433837890625, + "y": 323.2242431640625 + }, + { + "x": 1131.3115234375, + "y": 320.87091064453125 + }, + { + "x": 1158.2608642578125, + "y": 318.455810546875 + }, + { + "x": 1184.1104736328125, + "y": 317.70953369140625 + }, + { + "x": 1211.043212890625, + "y": 315.552978515625 + } + ], + "reprojectionErrors": [ + { + "x": 6.941162109375, + "y": 5.155853271484375 + }, + { + "x": 4.32275390625, + "y": 3.8267822265625 + }, + { + "x": 1.87548828125, + "y": 1.594757080078125 + }, + { + "x": -1.687255859375, + "y": 0.9456787109375 + }, + { + "x": -2.6943359375, + "y": 1.1611785888671875 + }, + { + "x": -2.1573486328125, + "y": -3.5836029052734375 + }, + { + "x": 0.4786376953125, + "y": -4.4296417236328125 + }, + { + "x": 6.7171630859375, + "y": 3.11773681640625 + }, + { + "x": 2.1358642578125, + "y": 2.121795654296875 + }, + { + "x": -1.36083984375, + "y": 0.978057861328125 + }, + { + "x": -1.5252685546875, + "y": 0.056732177734375 + }, + { + "x": -2.8695068359375, + "y": -0.8545074462890625 + }, + { + "x": -1.02685546875, + "y": -2.314361572265625 + }, + { + "x": 0.7508544921875, + "y": -3.600128173828125 + }, + { + "x": 5.0589599609375, + "y": -0.287384033203125 + }, + { + "x": 1.2666015625, + "y": 0.9207611083984375 + }, + { + "x": -0.56787109375, + "y": -1.269500732421875 + }, + { + "x": -2.0225830078125, + "y": 0.58380126953125 + }, + { + "x": -3.955078125, + "y": 0.5966033935546875 + }, + { + "x": -2.1236572265625, + "y": -1.8695526123046875 + }, + { + "x": 1.149169921875, + "y": -3.0302886962890625 + }, + { + "x": 2.422119140625, + "y": -1.88922119140625 + }, + { + "x": 0.435791015625, + "y": -1.4875640869140625 + }, + { + "x": -2.1854248046875, + "y": -0.060455322265625 + }, + { + "x": -3.6531982421875, + "y": -0.2743682861328125 + }, + { + "x": -3.2620849609375, + "y": -1.4044952392578125 + }, + { + "x": -1.194580078125, + "y": -2.528167724609375 + }, + { + "x": 0.58740234375, + "y": -2.225250244140625 + }, + { + "x": 2.9071044921875, + "y": -2.56878662109375 + }, + { + "x": -1.5953369140625, + "y": -1.76043701171875 + }, + { + "x": -2.4500732421875, + "y": -0.695587158203125 + }, + { + "x": -4.134765625, + "y": -1.0013427734375 + }, + { + "x": -2.1337890625, + "y": -0.364166259765625 + }, + { + "x": -1.317626953125, + "y": -0.141357421875 + }, + { + "x": 3.5386962890625, + "y": -0.507293701171875 + }, + { + "x": 1.148193359375, + "y": -3.572052001953125 + }, + { + "x": -1.7615966796875, + "y": 0.264739990234375 + }, + { + "x": -1.1331787109375, + "y": 0.90228271484375 + }, + { + "x": -1.9859619140625, + "y": -0.725250244140625 + }, + { + "x": -1.6363525390625, + "y": 1.615264892578125 + }, + { + "x": 0.8211669921875, + "y": 2.232635498046875 + }, + { + "x": 4.161865234375, + "y": 3.22308349609375 + }, + { + "x": 2.7210693359375, + "y": -3.2645263671875 + }, + { + "x": -0.6959228515625, + "y": -1.079986572265625 + }, + { + "x": -1.593505859375, + "y": -0.2593994140625 + }, + { + "x": -1.5836181640625, + "y": 1.9267578125 + }, + { + "x": -0.78857421875, + "y": 4.169342041015625 + }, + { + "x": 2.0042724609375, + "y": 4.737518310546875 + }, + { + "x": 4.65673828125, + "y": 6.71014404296875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.472967521988695, + "y": -0.18354894145613743, + "z": 0.2672494304567696 + }, + "rotation": { + "quaternion": { + "W": 0.996233302272826, + "X": -0.042527288450822195, + "Y": 0.07490369027487277, + "Z": 0.010003717449350748 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img36.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img36.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1070.5845947265625, + "y": 98.19599914550781 + }, + { + "x": 1096.9652099609375, + "y": 98.29579162597656 + }, + { + "x": 1123.2568359375, + "y": 99.80986022949219 + }, + { + "x": 1151.446533203125, + "y": 99.55408477783203 + }, + { + "x": 1177.3372802734375, + "y": 99.47373962402344 + }, + { + "x": 1203.365478515625, + "y": 102.26893615722656 + }, + { + "x": 1226.78955078125, + "y": 102.71998596191406 + }, + { + "x": 1072.8338623046875, + "y": 126.54429626464844 + }, + { + "x": 1100.463623046875, + "y": 127.21479034423828 + }, + { + "x": 1127.762939453125, + "y": 127.27146911621094 + }, + { + "x": 1153.2728271484375, + "y": 128.1846466064453 + }, + { + "x": 1180.2164306640625, + "y": 128.43893432617188 + }, + { + "x": 1204.9542236328125, + "y": 129.3709259033203 + }, + { + "x": 1230.6766357421875, + "y": 130.31163024902344 + }, + { + "x": 1075.8736572265625, + "y": 156.77769470214844 + }, + { + "x": 1103.4825439453125, + "y": 156.03555297851562 + }, + { + "x": 1129.399658203125, + "y": 157.6033172607422 + }, + { + "x": 1156.19189453125, + "y": 155.57177734375 + }, + { + "x": 1183.8414306640625, + "y": 155.75587463378906 + }, + { + "x": 1209.4541015625, + "y": 158.31356811523438 + }, + { + "x": 1233.1544189453125, + "y": 158.6620330810547 + }, + { + "x": 1079.61376953125, + "y": 185.9096221923828 + }, + { + "x": 1105.707275390625, + "y": 185.8319854736328 + }, + { + "x": 1132.927978515625, + "y": 184.83473205566406 + }, + { + "x": 1160.1982421875, + "y": 185.19517517089844 + }, + { + "x": 1185.78955078125, + "y": 186.75311279296875 + }, + { + "x": 1211.3387451171875, + "y": 187.74639892578125 + }, + { + "x": 1237.263671875, + "y": 188.15516662597656 + }, + { + "x": 1080.464111328125, + "y": 214.87744140625 + }, + { + "x": 1109.2607421875, + "y": 214.6761932373047 + }, + { + "x": 1135.3505859375, + "y": 214.450927734375 + }, + { + "x": 1162.7567138671875, + "y": 215.60809326171875 + }, + { + "x": 1187.6383056640625, + "y": 215.43495178222656 + }, + { + "x": 1215.0244140625, + "y": 216.63949584960938 + }, + { + "x": 1237.6572265625, + "y": 216.85227966308594 + }, + { + "x": 1083.7401123046875, + "y": 244.66043090820312 + }, + { + "x": 1111.3599853515625, + "y": 242.3440399169922 + }, + { + "x": 1136.3031005859375, + "y": 242.69674682617188 + }, + { + "x": 1163.5357666015625, + "y": 244.78245544433594 + }, + { + "x": 1189.7392578125, + "y": 244.26364135742188 + }, + { + "x": 1214.7054443359375, + "y": 244.7493133544922 + }, + { + "x": 1240.5335693359375, + "y": 245.28582763671875 + }, + { + "x": 1083.5762939453125, + "y": 273.73828125 + }, + { + "x": 1111.94189453125, + "y": 273.1119689941406 + }, + { + "x": 1138.7274169921875, + "y": 273.6766052246094 + }, + { + "x": 1165.028564453125, + "y": 273.493896484375 + }, + { + "x": 1191.2833251953125, + "y": 273.15264892578125 + }, + { + "x": 1217.42138671875, + "y": 274.35577392578125 + }, + { + "x": 1243.3123779296875, + "y": 273.471435546875 + } + ], + "reprojectionErrors": [ + { + "x": 6.1983642578125, + "y": 4.3720855712890625 + }, + { + "x": 3.532958984375, + "y": 3.5934219360351562 + }, + { + "x": 1.5386962890625, + "y": 1.3838348388671875 + }, + { + "x": -1.749755859375, + "y": 0.9268112182617188 + }, + { + "x": -2.112548828125, + "y": 0.27643585205078125 + }, + { + "x": -1.96240234375, + "y": -3.268096923828125 + }, + { + "x": 1.4677734375, + "y": -4.487815856933594 + }, + { + "x": 5.502685546875, + "y": 2.7995147705078125 + }, + { + "x": 1.8154296875, + "y": 1.7716903686523438 + }, + { + "x": -0.9483642578125, + "y": 1.348846435546875 + }, + { + "x": -1.3076171875, + "y": 0.060333251953125 + }, + { + "x": -2.4617919921875, + "y": -0.5788192749023438 + }, + { + "x": -0.7469482421875, + "y": -1.9055633544921875 + }, + { + "x": 0.672607421875, + "y": -3.2512969970703125 + }, + { + "x": 4.043701171875, + "y": -0.1894989013671875 + }, + { + "x": 0.6090087890625, + "y": 0.5283355712890625 + }, + { + "x": -0.5299072265625, + "y": -1.0643310546875 + }, + { + "x": -1.9169921875, + "y": 0.941680908203125 + }, + { + "x": -3.51025390625, + "y": 0.731414794921875 + }, + { + "x": -2.390380859375, + "y": -1.8531341552734375 + }, + { + "x": 1.3450927734375, + "y": -2.2291412353515625 + }, + { + "x": 1.912353515625, + "y": -1.5959625244140625 + }, + { + "x": 0.2291259765625, + "y": -1.1976776123046875 + }, + { + "x": -1.9659423828125, + "y": 0.128326416015625 + }, + { + "x": -3.5714111328125, + "y": 0.10504150390625 + }, + { + "x": -2.8341064453125, + "y": -1.107025146484375 + }, + { + "x": -1.36474609375, + "y": -1.745361328125 + }, + { + "x": 0.4461669921875, + "y": -1.7897491455078125 + }, + { + "x": 2.6993408203125, + "y": -2.3444061279296875 + }, + { + "x": -1.4462890625, + "y": -1.465118408203125 + }, + { + "x": -2.2579345703125, + "y": -0.5445404052734375 + }, + { + "x": -3.734375, + "y": -0.9884796142578125 + }, + { + "x": -2.00927734375, + "y": -0.0834808349609375 + }, + { + "x": -2.0849609375, + "y": -0.53680419921875 + }, + { + "x": 3.3248291015625, + "y": 0.02178955078125 + }, + { + "x": 1.0902099609375, + "y": -3.4007720947265625 + }, + { + "x": -1.6331787109375, + "y": -0.0360107421875 + }, + { + "x": -1.04052734375, + "y": 0.68658447265625 + }, + { + "x": -2.0732421875, + "y": -0.2958526611328125 + }, + { + "x": -1.38623046875, + "y": 1.355316162109375 + }, + { + "x": 1.25634765625, + "y": 2.032257080078125 + }, + { + "x": 3.7841796875, + "y": 2.6898193359375 + }, + { + "x": 2.9510498046875, + "y": -3.230987548828125 + }, + { + "x": -0.2677001953125, + "y": -1.1724853515625 + }, + { + "x": -1.254638671875, + "y": -0.267852783203125 + }, + { + "x": -1.079833984375, + "y": 1.4227294921875 + }, + { + "x": -0.154052734375, + "y": 3.311981201171875 + }, + { + "x": 1.6212158203125, + "y": 3.6986083984375 + }, + { + "x": 4.406494140625, + "y": 6.216156005859375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.5201744135100018, + "y": -0.22612231909245617, + "z": 0.26399252168817344 + }, + "rotation": { + "quaternion": { + "W": 0.9960338196112126, + "X": -0.047590083122143766, + "Y": 0.06036030926075115, + "Z": 0.04481570310808901 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img37.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img37.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1065.560791015625, + "y": 184.2789306640625 + }, + { + "x": 1092.0220947265625, + "y": 184.06124877929688 + }, + { + "x": 1118.0997314453125, + "y": 184.298828125 + }, + { + "x": 1146.35693359375, + "y": 183.24534606933594 + }, + { + "x": 1172.583251953125, + "y": 181.57086181640625 + }, + { + "x": 1197.8480224609375, + "y": 183.42892456054688 + }, + { + "x": 1222.2802734375, + "y": 182.7396697998047 + }, + { + "x": 1067.4407958984375, + "y": 213.4324951171875 + }, + { + "x": 1095.001953125, + "y": 213.06228637695312 + }, + { + "x": 1122.439697265625, + "y": 212.47976684570312 + }, + { + "x": 1147.70166015625, + "y": 212.47459411621094 + }, + { + "x": 1174.7540283203125, + "y": 211.80267333984375 + }, + { + "x": 1199.448486328125, + "y": 211.41737365722656 + }, + { + "x": 1225.18212890625, + "y": 211.35794067382812 + }, + { + "x": 1069.64111328125, + "y": 244.08822631835938 + }, + { + "x": 1097.56201171875, + "y": 242.01605224609375 + }, + { + "x": 1123.5572509765625, + "y": 242.92034912109375 + }, + { + "x": 1150.27392578125, + "y": 240.31629943847656 + }, + { + "x": 1177.843994140625, + "y": 239.4133758544922 + }, + { + "x": 1203.1456298828125, + "y": 240.45640563964844 + }, + { + "x": 1227.29833984375, + "y": 240.35748291015625 + }, + { + "x": 1073.4710693359375, + "y": 273.0666198730469 + }, + { + "x": 1099.57958984375, + "y": 272.5372009277344 + }, + { + "x": 1126.894287109375, + "y": 270.5439453125 + }, + { + "x": 1153.6923828125, + "y": 269.8368225097656 + }, + { + "x": 1179.345703125, + "y": 270.4129638671875 + }, + { + "x": 1204.7120361328125, + "y": 270.551513671875 + }, + { + "x": 1230.5997314453125, + "y": 269.72894287109375 + }, + { + "x": 1074.3779296875, + "y": 301.97625732421875 + }, + { + "x": 1103.1776123046875, + "y": 301.35321044921875 + }, + { + "x": 1128.73046875, + "y": 300.14727783203125 + }, + { + "x": 1155.9542236328125, + "y": 300.1699523925781 + }, + { + "x": 1180.5565185546875, + "y": 299.3311767578125 + }, + { + "x": 1207.432373046875, + "y": 298.7381591796875 + }, + { + "x": 1229.956298828125, + "y": 299.1146240234375 + }, + { + "x": 1077.3609619140625, + "y": 331.5556335449219 + }, + { + "x": 1104.53564453125, + "y": 328.575439453125 + }, + { + "x": 1129.5277099609375, + "y": 328.19921875 + }, + { + "x": 1156.1787109375, + "y": 329.3521728515625 + }, + { + "x": 1182.427001953125, + "y": 327.5727844238281 + }, + { + "x": 1207.008056640625, + "y": 327.2801208496094 + }, + { + "x": 1232.6090087890625, + "y": 326.4153137207031 + }, + { + "x": 1076.6529541015625, + "y": 360.4302978515625 + }, + { + "x": 1104.779541015625, + "y": 358.8077087402344 + }, + { + "x": 1131.2393798828125, + "y": 359.0380554199219 + }, + { + "x": 1157.644287109375, + "y": 357.6555480957031 + }, + { + "x": 1182.77734375, + "y": 356.5299072265625 + }, + { + "x": 1209.2598876953125, + "y": 356.28985595703125 + }, + { + "x": 1234.50341796875, + "y": 354.7316589355469 + } + ], + "reprojectionErrors": [ + { + "x": 5.967041015625, + "y": 4.82659912109375 + }, + { + "x": 3.1610107421875, + "y": 3.35443115234375 + }, + { + "x": 1.3939208984375, + "y": 1.38018798828125 + }, + { + "x": -1.869873046875, + "y": 0.64825439453125 + }, + { + "x": -2.3907470703125, + "y": 0.4864501953125 + }, + { + "x": -1.207275390625, + "y": -3.260955810546875 + }, + { + "x": 1.5843505859375, + "y": -4.516448974609375 + }, + { + "x": 5.4991455078125, + "y": 2.933929443359375 + }, + { + "x": 1.7371826171875, + "y": 1.9797515869140625 + }, + { + "x": -1.238525390625, + "y": 1.201019287109375 + }, + { + "x": -1.3477783203125, + "y": -0.193511962890625 + }, + { + "x": -2.52685546875, + "y": -0.9613800048828125 + }, + { + "x": -0.5960693359375, + "y": -2.057708740234375 + }, + { + "x": 1.08056640625, + "y": -3.5235748291015625 + }, + { + "x": 4.7255859375, + "y": -0.1762847900390625 + }, + { + "x": 0.7496337890625, + "y": 0.94476318359375 + }, + { + "x": -0.63037109375, + "y": -0.937286376953125 + }, + { + "x": -2.0328369140625, + "y": 0.6612548828125 + }, + { + "x": -3.5595703125, + "y": 0.52972412109375 + }, + { + "x": -2.056884765625, + "y": -1.5780029296875 + }, + { + "x": 1.3896484375, + "y": -2.5753326416015625 + }, + { + "x": 2.3375244140625, + "y": -1.320068359375 + }, + { + "x": 0.3212890625, + "y": -1.36053466796875 + }, + { + "x": -2.2230224609375, + "y": 0.046783447265625 + }, + { + "x": -3.54345703125, + "y": 0.151275634765625 + }, + { + "x": -2.9813232421875, + "y": -1.044952392578125 + }, + { + "x": -1.3616943359375, + "y": -1.821807861328125 + }, + { + "x": 0.5413818359375, + "y": -1.656585693359375 + }, + { + "x": 2.8876953125, + "y": -2.101470947265625 + }, + { + "x": -1.6705322265625, + "y": -1.65887451171875 + }, + { + "x": -2.2958984375, + "y": -0.638519287109375 + }, + { + "x": -3.8765869140625, + "y": -0.852081298828125 + }, + { + "x": -2.0888671875, + "y": -0.209747314453125 + }, + { + "x": -1.794921875, + "y": 0.1810302734375 + }, + { + "x": 3.666015625, + "y": -0.40374755859375 + }, + { + "x": 1.3770751953125, + "y": -3.254241943359375 + }, + { + "x": -1.405029296875, + "y": -0.05670166015625 + }, + { + "x": -1.310546875, + "y": 0.54302978515625 + }, + { + "x": -2.15087890625, + "y": -0.37994384765625 + }, + { + "x": -1.83251953125, + "y": 1.636138916015625 + }, + { + "x": 0.942626953125, + "y": 2.172576904296875 + }, + { + "x": 3.5233154296875, + "y": 3.288482666015625 + }, + { + "x": 3.5732421875, + "y": -3.399200439453125 + }, + { + "x": -0.0079345703125, + "y": -1.152923583984375 + }, + { + "x": -1.22021484375, + "y": -0.74169921875 + }, + { + "x": -1.6446533203125, + "y": 1.30096435546875 + }, + { + "x": -0.0321044921875, + "y": 3.106231689453125 + }, + { + "x": 1.030517578125, + "y": 4.04620361328125 + }, + { + "x": 4.1680908203125, + "y": 6.325592041015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.5305237125225145, + "y": -0.1554594551569344, + "z": 0.2729333972209682 + }, + "rotation": { + "quaternion": { + "W": 0.9968770435315898, + "X": -0.028833034672867946, + "Y": 0.07223615164185751, + "Z": 0.013665818206188864 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img38.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img38.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1095.8140869140625, + "y": 252.80238342285156 + }, + { + "x": 1121.833740234375, + "y": 253.11856079101562 + }, + { + "x": 1147.2249755859375, + "y": 253.922119140625 + }, + { + "x": 1174.629638671875, + "y": 253.4591522216797 + }, + { + "x": 1199.9002685546875, + "y": 252.49635314941406 + }, + { + "x": 1224.7012939453125, + "y": 254.6601104736328 + }, + { + "x": 1248.252685546875, + "y": 253.96539306640625 + }, + { + "x": 1096.574951171875, + "y": 281.58013916015625 + }, + { + "x": 1123.509521484375, + "y": 282.1281433105469 + }, + { + "x": 1150.404541015625, + "y": 282.0985412597656 + }, + { + "x": 1174.67236328125, + "y": 282.3472900390625 + }, + { + "x": 1201.0704345703125, + "y": 282.28179931640625 + }, + { + "x": 1224.639892578125, + "y": 282.2543029785156 + }, + { + "x": 1249.3380126953125, + "y": 282.2218017578125 + }, + { + "x": 1098.163818359375, + "y": 311.7503356933594 + }, + { + "x": 1125.1363525390625, + "y": 311.23089599609375 + }, + { + "x": 1149.7021484375, + "y": 312.2340087890625 + }, + { + "x": 1175.19189453125, + "y": 309.5438537597656 + }, + { + "x": 1202.620849609375, + "y": 309.072998046875 + }, + { + "x": 1226.831298828125, + "y": 310.8646545410156 + }, + { + "x": 1249.8638916015625, + "y": 310.7041015625 + }, + { + "x": 1099.6494140625, + "y": 340.6121826171875 + }, + { + "x": 1125.3778076171875, + "y": 340.3949279785156 + }, + { + "x": 1151.505615234375, + "y": 338.94891357421875 + }, + { + "x": 1177.6636962890625, + "y": 338.94366455078125 + }, + { + "x": 1202.4205322265625, + "y": 339.8564453125 + }, + { + "x": 1226.489990234375, + "y": 340.53155517578125 + }, + { + "x": 1251.5792236328125, + "y": 339.7678527832031 + }, + { + "x": 1099.120361328125, + "y": 369.37432861328125 + }, + { + "x": 1127.44580078125, + "y": 368.8386535644531 + }, + { + "x": 1152.3763427734375, + "y": 367.8824157714844 + }, + { + "x": 1178.5025634765625, + "y": 368.4269104003906 + }, + { + "x": 1202.26123046875, + "y": 367.6947326660156 + }, + { + "x": 1228.4495849609375, + "y": 368.0710144042969 + }, + { + "x": 1249.648681640625, + "y": 367.80169677734375 + }, + { + "x": 1101.3021240234375, + "y": 398.08343505859375 + }, + { + "x": 1127.4200439453125, + "y": 395.5182189941406 + }, + { + "x": 1151.4036865234375, + "y": 395.1343078613281 + }, + { + "x": 1176.5289306640625, + "y": 398.2679748535156 + }, + { + "x": 1203.212646484375, + "y": 395.7097473144531 + }, + { + "x": 1226.2274169921875, + "y": 395.2129821777344 + }, + { + "x": 1250.557861328125, + "y": 394.5571594238281 + }, + { + "x": 1099.360595703125, + "y": 425.7458190917969 + }, + { + "x": 1126.603759765625, + "y": 424.55694580078125 + }, + { + "x": 1151.9732666015625, + "y": 424.7979431152344 + }, + { + "x": 1177.6356201171875, + "y": 423.9996032714844 + }, + { + "x": 1202.451904296875, + "y": 422.56561279296875 + }, + { + "x": 1226.67041015625, + "y": 422.7327880859375 + }, + { + "x": 1251.27587890625, + "y": 421.5657958984375 + } + ], + "reprojectionErrors": [ + { + "x": 5.1192626953125, + "y": 4.8975372314453125 + }, + { + "x": 2.409423828125, + "y": 3.311767578125 + }, + { + "x": 0.9403076171875, + "y": 1.2052764892578125 + }, + { + "x": -1.905517578125, + "y": 0.33062744140625 + }, + { + "x": -1.954833984375, + "y": -0.08026123046875 + }, + { + "x": -0.844970703125, + "y": -3.6552734375 + }, + { + "x": 2.23291015625, + "y": -4.4109344482421875 + }, + { + "x": 4.77294921875, + "y": 3.387847900390625 + }, + { + "x": 1.1817626953125, + "y": 1.922637939453125 + }, + { + "x": -1.7559814453125, + "y": 1.01092529296875 + }, + { + "x": -1.4281005859375, + "y": -0.204254150390625 + }, + { + "x": -2.566162109375, + "y": -1.131256103515625 + }, + { + "x": -0.18408203125, + "y": -2.123443603515625 + }, + { + "x": 1.789794921875, + "y": -3.138946533203125 + }, + { + "x": 3.599609375, + "y": 0.55084228515625 + }, + { + "x": 0.0040283203125, + "y": 0.50714111328125 + }, + { + "x": -0.5692138671875, + "y": -1.07391357421875 + }, + { + "x": -1.42626953125, + "y": 1.022857666015625 + }, + { + "x": -3.556396484375, + "y": 0.884307861328125 + }, + { + "x": -1.7744140625, + "y": -1.533477783203125 + }, + { + "x": 1.9078369140625, + "y": -2.016448974609375 + }, + { + "x": 2.530517578125, + "y": -0.912506103515625 + }, + { + "x": 0.2127685546875, + "y": -0.902587890625 + }, + { + "x": -1.8870849609375, + "y": 0.33062744140625 + }, + { + "x": -3.3753662109375, + "y": 0.11737060546875 + }, + { + "x": -2.79443359375, + "y": -1.019805908203125 + }, + { + "x": -0.83056640625, + "y": -1.92547607421875 + }, + { + "x": 0.8380126953125, + "y": -1.398773193359375 + }, + { + "x": 3.47705078125, + "y": -2.2105712890625 + }, + { + "x": -1.40380859375, + "y": -1.524749755859375 + }, + { + "x": -2.27099609375, + "y": -0.41436767578125 + }, + { + "x": -3.690185546875, + "y": -0.800628662109375 + }, + { + "x": -2.072021484375, + "y": 0.0941162109375 + }, + { + "x": -2.18603515625, + "y": -0.11517333984375 + }, + { + "x": 3.415771484375, + "y": 0.3258056640625 + }, + { + "x": 1.7137451171875, + "y": -3.389801025390625 + }, + { + "x": -0.9256591796875, + "y": -0.315185546875 + }, + { + "x": -0.8104248046875, + "y": 0.591583251953125 + }, + { + "x": -1.1912841796875, + "y": -2.005218505859375 + }, + { + "x": -2.458984375, + "y": 1.10443115234375 + }, + { + "x": 0.6417236328125, + "y": 2.16778564453125 + }, + { + "x": 3.155517578125, + "y": 3.406036376953125 + }, + { + "x": 4.0748291015625, + "y": -3.456268310546875 + }, + { + "x": 0.3441162109375, + "y": -1.39703369140625 + }, + { + "x": -0.890869140625, + "y": -0.744659423828125 + }, + { + "x": -1.7713623046875, + "y": 0.971038818359375 + }, + { + "x": -1.13232421875, + "y": 3.3472900390625 + }, + { + "x": 0.805908203125, + "y": 4.14837646484375 + }, + { + "x": 3.0880126953125, + "y": 6.310638427734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.5858787565849339, + "y": -0.09577866488900451, + "z": 0.27995103109816905 + }, + "rotation": { + "quaternion": { + "W": 0.9974742353617001, + "X": -0.0066997288347520135, + "Y": 0.0706920362454955, + "Z": 0.0017027726207794682 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img39.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img39.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1100.27294921875, + "y": 488.6944274902344 + }, + { + "x": 1103.6143798828125, + "y": 461.60272216796875 + }, + { + "x": 1101.7027587890625, + "y": 434.0498046875 + }, + { + "x": 1103.1190185546875, + "y": 406.26141357421875 + }, + { + "x": 1103.25146484375, + "y": 377.36505126953125 + }, + { + "x": 1100.772705078125, + "y": 348.64971923828125 + }, + { + "x": 1100.818603515625, + "y": 320.5079345703125 + }, + { + "x": 1127.459228515625, + "y": 486.642333984375 + }, + { + "x": 1128.6322021484375, + "y": 458.6192626953125 + }, + { + "x": 1129.2117919921875, + "y": 432.480224609375 + }, + { + "x": 1127.6942138671875, + "y": 405.9886169433594 + }, + { + "x": 1127.3231201171875, + "y": 376.5086364746094 + }, + { + "x": 1127.4097900390625, + "y": 348.80438232421875 + }, + { + "x": 1126.5955810546875, + "y": 320.6916809082031 + }, + { + "x": 1151.781005859375, + "y": 486.6260681152344 + }, + { + "x": 1152.389892578125, + "y": 457.7274169921875 + }, + { + "x": 1153.504150390625, + "y": 431.84991455078125 + }, + { + "x": 1153.5770263671875, + "y": 404.03558349609375 + }, + { + "x": 1152.494384765625, + "y": 377.91314697265625 + }, + { + "x": 1154.412353515625, + "y": 348.8178405761719 + }, + { + "x": 1150.595703125, + "y": 321.5111999511719 + }, + { + "x": 1177.334716796875, + "y": 485.6657409667969 + }, + { + "x": 1177.2489013671875, + "y": 459.7038269042969 + }, + { + "x": 1178.6767578125, + "y": 431.994140625 + }, + { + "x": 1178.684326171875, + "y": 403.6370544433594 + }, + { + "x": 1176.8740234375, + "y": 375.1398620605469 + }, + { + "x": 1176.768310546875, + "y": 348.6109619140625 + }, + { + "x": 1177.560302734375, + "y": 320.75 + }, + { + "x": 1200.739501953125, + "y": 483.66986083984375 + }, + { + "x": 1202.1558837890625, + "y": 457.8534851074219 + }, + { + "x": 1201.44091796875, + "y": 432.0505065917969 + }, + { + "x": 1203.0989990234375, + "y": 404.5547180175781 + }, + { + "x": 1204.46484375, + "y": 373.88922119140625 + }, + { + "x": 1203.330322265625, + "y": 348.3389892578125 + }, + { + "x": 1202.755859375, + "y": 319.0226745605469 + }, + { + "x": 1225.2926025390625, + "y": 483.7437438964844 + }, + { + "x": 1224.568115234375, + "y": 457.2303466796875 + }, + { + "x": 1227.5008544921875, + "y": 431.3902587890625 + }, + { + "x": 1227.035400390625, + "y": 404.1408996582031 + }, + { + "x": 1227.3251953125, + "y": 375.5039978027344 + }, + { + "x": 1225.9757080078125, + "y": 347.6507873535156 + }, + { + "x": 1226.8629150390625, + "y": 321.244384765625 + }, + { + "x": 1249.42333984375, + "y": 481.6693115234375 + }, + { + "x": 1248.762451171875, + "y": 456.611083984375 + }, + { + "x": 1248.6455078125, + "y": 430.31329345703125 + }, + { + "x": 1250.5927734375, + "y": 403.4285888671875 + }, + { + "x": 1249.5888671875, + "y": 375.3589172363281 + }, + { + "x": 1250.2772216796875, + "y": 347.4653015136719 + }, + { + "x": 1249.30029296875, + "y": 320.6003723144531 + } + ], + "reprojectionErrors": [ + { + "x": 5.11181640625, + "y": -4.2412109375 + }, + { + "x": 1.7396240234375, + "y": -3.475250244140625 + }, + { + "x": 3.6202392578125, + "y": -2.33441162109375 + }, + { + "x": 2.1729736328125, + "y": -1.0447998046875 + }, + { + "x": 2.0093994140625, + "y": 1.265655517578125 + }, + { + "x": 4.456787109375, + "y": 3.3074951171875 + }, + { + "x": 4.3795166015625, + "y": 4.687774658203125 + }, + { + "x": 0.6563720703125, + "y": -1.623809814453125 + }, + { + "x": -0.5101318359375, + "y": -0.263824462890625 + }, + { + "x": -1.083251953125, + "y": -0.87640380859375 + }, + { + "x": 0.4407958984375, + "y": -1.225372314453125 + }, + { + "x": 0.818359375, + "y": 1.324615478515625 + }, + { + "x": 0.7381591796875, + "y": 2.009002685546875 + }, + { + "x": 1.5589599609375, + "y": 3.01153564453125 + }, + { + "x": -0.34375, + "y": -1.02752685546875 + }, + { + "x": -0.906982421875, + "y": 0.8619384765625 + }, + { + "x": -1.975341796875, + "y": -0.360595703125 + }, + { + "x": -2.0023193359375, + "y": 0.262420654296875 + }, + { + "x": -0.87353515625, + "y": -0.89825439453125 + }, + { + "x": -2.7452392578125, + "y": 0.821746826171875 + }, + { + "x": 1.1177978515625, + "y": 0.660369873046875 + }, + { + "x": -1.9617919921875, + "y": 0.528076171875 + }, + { + "x": -1.7889404296875, + "y": -0.8743896484375 + }, + { + "x": -3.1295166015625, + "y": -0.622314453125 + }, + { + "x": -3.049560546875, + "y": 0.18341064453125 + }, + { + "x": -1.1513671875, + "y": 1.035003662109375 + }, + { + "x": -0.95751953125, + "y": -0.176361083984375 + }, + { + "x": -1.6610107421875, + "y": -0.150848388671875 + }, + { + "x": -0.792236328125, + "y": 3.135101318359375 + }, + { + "x": -2.0780029296875, + "y": 1.22247314453125 + }, + { + "x": -1.2320556640625, + "y": -0.799346923828125 + }, + { + "x": -2.7587890625, + "y": -1.224639892578125 + }, + { + "x": -3.9927978515625, + "y": 1.423065185546875 + }, + { + "x": -2.7259521484375, + "y": -1.14178466796875 + }, + { + "x": -2.018798828125, + "y": -0.038330078125 + }, + { + "x": -0.1063232421875, + "y": 3.68890380859375 + }, + { + "x": 0.7945556640625, + "y": 2.098785400390625 + }, + { + "x": -1.961181640625, + "y": -0.2630615234375 + }, + { + "x": -1.318115234375, + "y": -1.31451416015625 + }, + { + "x": -1.4296875, + "y": -1.07781982421875 + }, + { + "x": 0.0986328125, + "y": -1.724761962890625 + }, + { + "x": -0.609130859375, + "y": -3.918975830078125 + }, + { + "x": 1.6937255859375, + "y": 6.408233642578125 + }, + { + "x": 2.579345703125, + "y": 2.978179931640625 + }, + { + "x": 2.921875, + "y": 0.686553955078125 + }, + { + "x": 1.200927734375, + "y": -1.1197509765625 + }, + { + "x": 2.431884765625, + "y": -1.843292236328125 + }, + { + "x": 1.971435546875, + "y": -2.845611572265625 + }, + { + "x": 3.1771240234375, + "y": -4.9798583984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.611168581249554, + "y": 0.11839819809093763, + "z": 0.2889212146236941 + }, + "rotation": { + "quaternion": { + "W": 0.6910724513141666, + "X": -0.04332994368315382, + "Y": 0.05853184712171548, + "Z": -0.7191073674268423 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img40.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img40.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1091.2412109375, + "y": 377.4881286621094 + }, + { + "x": 1115.8084716796875, + "y": 376.8500061035156 + }, + { + "x": 1140.1068115234375, + "y": 377.2396240234375 + }, + { + "x": 1166.0968017578125, + "y": 375.8109436035156 + }, + { + "x": 1190.744873046875, + "y": 373.55426025390625 + }, + { + "x": 1214.0968017578125, + "y": 375.3511657714844 + }, + { + "x": 1236.5584716796875, + "y": 373.6269836425781 + }, + { + "x": 1091.4649658203125, + "y": 404.6756286621094 + }, + { + "x": 1116.9451904296875, + "y": 403.9718017578125 + }, + { + "x": 1142.2330322265625, + "y": 403.53118896484375 + }, + { + "x": 1166.1995849609375, + "y": 402.60931396484375 + }, + { + "x": 1190.436279296875, + "y": 401.9723205566406 + }, + { + "x": 1213.6129150390625, + "y": 400.8888244628906 + }, + { + "x": 1237.053955078125, + "y": 400.5149841308594 + }, + { + "x": 1092.015869140625, + "y": 432.51788330078125 + }, + { + "x": 1117.5037841796875, + "y": 431.3584289550781 + }, + { + "x": 1141.4737548828125, + "y": 431.2768249511719 + }, + { + "x": 1165.1226806640625, + "y": 428.521240234375 + }, + { + "x": 1191.228515625, + "y": 427.309814453125 + }, + { + "x": 1214.50732421875, + "y": 428.1717224121094 + }, + { + "x": 1236.4228515625, + "y": 427.29974365234375 + }, + { + "x": 1092.7235107421875, + "y": 459.173095703125 + }, + { + "x": 1117.1978759765625, + "y": 458.51947021484375 + }, + { + "x": 1142.006103515625, + "y": 456.57989501953125 + }, + { + "x": 1166.6484375, + "y": 456.03778076171875 + }, + { + "x": 1190.2227783203125, + "y": 456.162109375 + }, + { + "x": 1212.81201171875, + "y": 455.6265563964844 + }, + { + "x": 1236.679931640625, + "y": 453.8160095214844 + }, + { + "x": 1091.85205078125, + "y": 485.6714172363281 + }, + { + "x": 1118.3758544921875, + "y": 484.6848449707031 + }, + { + "x": 1141.6829833984375, + "y": 483.2803039550781 + }, + { + "x": 1166.6741943359375, + "y": 483.1742858886719 + }, + { + "x": 1189.4632568359375, + "y": 481.5198974609375 + }, + { + "x": 1213.5086669921875, + "y": 480.7460632324219 + }, + { + "x": 1234.863525390625, + "y": 479.7607421875 + }, + { + "x": 1093.250244140625, + "y": 512.4616088867188 + }, + { + "x": 1117.5389404296875, + "y": 509.3492736816406 + }, + { + "x": 1140.4683837890625, + "y": 508.21942138671875 + }, + { + "x": 1165.15283203125, + "y": 508.6958312988281 + }, + { + "x": 1189.2406005859375, + "y": 507.268798828125 + }, + { + "x": 1211.431884765625, + "y": 506.2615661621094 + }, + { + "x": 1234.7498779296875, + "y": 504.8456726074219 + }, + { + "x": 1090.615234375, + "y": 537.3427124023438 + }, + { + "x": 1115.934814453125, + "y": 535.4833374023438 + }, + { + "x": 1140.305908203125, + "y": 535.4033203125 + }, + { + "x": 1164.284423828125, + "y": 533.9554443359375 + }, + { + "x": 1187.6544189453125, + "y": 532.276123046875 + }, + { + "x": 1211.346435546875, + "y": 531.6696166992188 + }, + { + "x": 1234.3076171875, + "y": 529.532470703125 + } + ], + "reprojectionErrors": [ + { + "x": 3.8438720703125, + "y": 4.111236572265625 + }, + { + "x": 1.7850341796875, + "y": 2.85614013671875 + }, + { + "x": 0.6007080078125, + "y": 0.522369384765625 + }, + { + "x": -1.64501953125, + "y": -0.04608154296875 + }, + { + "x": -1.8924560546875, + "y": 0.158233642578125 + }, + { + "x": -0.1597900390625, + "y": -3.748565673828125 + }, + { + "x": 3.1763916015625, + "y": -4.19427490234375 + }, + { + "x": 3.6226806640625, + "y": 2.8040771484375 + }, + { + "x": 0.5657958984375, + "y": 1.96405029296875 + }, + { + "x": -1.6976318359375, + "y": 0.819427490234375 + }, + { + "x": -2.0145263671875, + "y": 0.113006591796875 + }, + { + "x": -1.9503173828125, + "y": -0.923126220703125 + }, + { + "x": -0.1475830078125, + "y": -1.559478759765625 + }, + { + "x": 2.0980224609375, + "y": -2.954193115234375 + }, + { + "x": 3.0743408203125, + "y": 0.64971923828125 + }, + { + "x": -0.07470703125, + "y": 0.6094970703125 + }, + { + "x": -1.1092529296875, + "y": -0.54058837890625 + }, + { + "x": -1.202392578125, + "y": 0.949951171875 + }, + { + "x": -3.106201171875, + "y": 0.861663818359375 + }, + { + "x": -1.510009765625, + "y": -1.33612060546875 + }, + { + "x": 2.1510009765625, + "y": -1.83770751953125 + }, + { + "x": 2.369140625, + "y": -0.50787353515625 + }, + { + "x": 0.14990234375, + "y": -0.714813232421875 + }, + { + "x": -1.811279296875, + "y": 0.34130859375 + }, + { + "x": -2.99072265625, + "y": -0.02386474609375 + }, + { + "x": -2.4613037109375, + "y": -1.08026123046875 + }, + { + "x": -0.279052734375, + "y": -1.502593994140625 + }, + { + "x": 1.3203125, + "y": -0.676849365234375 + }, + { + "x": 3.2430419921875, + "y": -1.69677734375 + }, + { + "x": -1.1087646484375, + "y": -1.236663818359375 + }, + { + "x": -1.6563720703125, + "y": -0.37255859375 + }, + { + "x": -3.277099609375, + "y": -0.82147216796875 + }, + { + "x": -2.0596923828125, + "y": 0.262908935546875 + }, + { + "x": -1.436279296875, + "y": 0.450958251953125 + }, + { + "x": 2.5677490234375, + "y": 0.834136962890625 + }, + { + "x": 1.8472900390625, + "y": -3.363677978515625 + }, + { + "x": -0.3519287109375, + "y": -0.4486083984375 + }, + { + "x": -0.60888671875, + "y": 0.478759765625 + }, + { + "x": -2.014404296875, + "y": -0.205535888671875 + }, + { + "x": -2.1922607421875, + "y": 1.0079345703125 + }, + { + "x": 0.1834716796875, + "y": 1.7957763671875 + }, + { + "x": 2.116943359375, + "y": 2.986114501953125 + }, + { + "x": 4.4847412109375, + "y": -3.30560302734375 + }, + { + "x": 1.1727294921875, + "y": -1.319091796875 + }, + { + "x": -0.6121826171875, + "y": -1.108642578125 + }, + { + "x": -1.4027099609375, + "y": 0.47314453125 + }, + { + "x": -0.9586181640625, + "y": 2.28997802734375 + }, + { + "x": -0.1845703125, + "y": 3.0377197265625 + }, + { + "x": 1.999267578125, + "y": 5.320068359375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.6035551159346422, + "y": 0.020105575708898576, + "z": 0.29253982467481787 + }, + "rotation": { + "quaternion": { + "W": 0.9959754292542538, + "X": 0.02487289858027716, + "Y": 0.07466255403093748, + "Z": -0.04289272972891325 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img41.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img41.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1220.9381103515625, + "y": 417.63067626953125 + }, + { + "x": 1222.8504638671875, + "y": 443.5229187011719 + }, + { + "x": 1223.8521728515625, + "y": 468.92681884765625 + }, + { + "x": 1225.3734130859375, + "y": 494.8602294921875 + }, + { + "x": 1224.6663818359375, + "y": 520.1322631835938 + }, + { + "x": 1226.0517578125, + "y": 543.5413818359375 + }, + { + "x": 1227.2412109375, + "y": 567.5355224609375 + }, + { + "x": 1199.3673095703125, + "y": 422.2330627441406 + }, + { + "x": 1199.3292236328125, + "y": 446.6166687011719 + }, + { + "x": 1202.4183349609375, + "y": 472.65350341796875 + }, + { + "x": 1202.81591796875, + "y": 498.4521789550781 + }, + { + "x": 1203.58154296875, + "y": 522.6141357421875 + }, + { + "x": 1203.4615478515625, + "y": 547.3710327148438 + }, + { + "x": 1205.5169677734375, + "y": 571.4976196289062 + }, + { + "x": 1175.6708984375, + "y": 422.58050537109375 + }, + { + "x": 1177.41943359375, + "y": 450.0715026855469 + }, + { + "x": 1179.2978515625, + "y": 474.0628356933594 + }, + { + "x": 1180.079345703125, + "y": 501.72308349609375 + }, + { + "x": 1180.4326171875, + "y": 526.6005249023438 + }, + { + "x": 1182.38134765625, + "y": 550.6889038085938 + }, + { + "x": 1182.0338134765625, + "y": 574.1499633789062 + }, + { + "x": 1151.572509765625, + "y": 427.3428955078125 + }, + { + "x": 1152.5377197265625, + "y": 453.3206481933594 + }, + { + "x": 1153.400390625, + "y": 477.7975158691406 + }, + { + "x": 1156.79052734375, + "y": 503.8757019042969 + }, + { + "x": 1158.22021484375, + "y": 529.4564208984375 + }, + { + "x": 1159.2420654296875, + "y": 553.5736083984375 + }, + { + "x": 1159.6531982421875, + "y": 578.0999755859375 + }, + { + "x": 1125.7476806640625, + "y": 431.2967834472656 + }, + { + "x": 1130.5919189453125, + "y": 456.36627197265625 + }, + { + "x": 1130.3524169921875, + "y": 483.43084716796875 + }, + { + "x": 1132.465576171875, + "y": 506.6576843261719 + }, + { + "x": 1134.237060546875, + "y": 532.36962890625 + }, + { + "x": 1134.64794921875, + "y": 555.9711303710938 + }, + { + "x": 1135.9051513671875, + "y": 581.469482421875 + }, + { + "x": 1102.4927978515625, + "y": 432.8267822265625 + }, + { + "x": 1104.6773681640625, + "y": 459.4453125 + }, + { + "x": 1106.7344970703125, + "y": 484.7633056640625 + }, + { + "x": 1108.7596435546875, + "y": 510.8211975097656 + }, + { + "x": 1111.4613037109375, + "y": 535.5501708984375 + }, + { + "x": 1112.4014892578125, + "y": 559.1578369140625 + }, + { + "x": 1113.188720703125, + "y": 584.6060791015625 + }, + { + "x": 1078.5654296875, + "y": 435.6399230957031 + }, + { + "x": 1080.331787109375, + "y": 462.09014892578125 + }, + { + "x": 1083.2359619140625, + "y": 488.2809753417969 + }, + { + "x": 1084.77490234375, + "y": 514.1068115234375 + }, + { + "x": 1085.5009765625, + "y": 539.5669555664062 + }, + { + "x": 1088.54736328125, + "y": 564.2478637695312 + }, + { + "x": 1087.4346923828125, + "y": 588.9445190429688 + } + ], + "reprojectionErrors": [ + { + "x": 2.6932373046875, + "y": -3.910919189453125 + }, + { + "x": 1.8115234375, + "y": -2.755462646484375 + }, + { + "x": 1.8299560546875, + "y": -1.38720703125 + }, + { + "x": 1.3184814453125, + "y": -0.81982421875 + }, + { + "x": 3.025146484375, + "y": 0.14166259765625 + }, + { + "x": 2.62939453125, + "y": 2.70281982421875 + }, + { + "x": 2.4195556640625, + "y": 4.41961669921875 + }, + { + "x": -0.978515625, + "y": -3.85528564453125 + }, + { + "x": 0.202880859375, + "y": -1.60101318359375 + }, + { + "x": -1.75439453125, + "y": -1.26751708984375 + }, + { + "x": -1.0313720703125, + "y": -0.959381103515625 + }, + { + "x": -0.6876220703125, + "y": 0.72589111328125 + }, + { + "x": 0.53076171875, + "y": 1.56048583984375 + }, + { + "x": -0.4371337890625, + "y": 2.7734375 + }, + { + "x": -1.8101806640625, + "y": 0.32342529296875 + }, + { + "x": -2.309326171875, + "y": -0.927337646484375 + }, + { + "x": -2.9508056640625, + "y": 1.06170654296875 + }, + { + "x": -2.5076904296875, + "y": -0.8741455078125 + }, + { + "x": -1.648193359375, + "y": -0.27947998046875 + }, + { + "x": -2.3961181640625, + "y": 0.85577392578125 + }, + { + "x": -0.859375, + "y": 2.37335205078125 + }, + { + "x": -1.55517578125, + "y": -0.039093017578125 + }, + { + "x": -1.17138671875, + "y": -0.162628173828125 + }, + { + "x": -0.6983642578125, + "y": 0.9622802734375 + }, + { + "x": -2.7657470703125, + "y": 0.237030029296875 + }, + { + "x": -2.885498046875, + "y": -0.23590087890625 + }, + { + "x": -2.6099853515625, + "y": 0.51300048828125 + }, + { + "x": -1.7362060546875, + "y": 0.61456298828125 + }, + { + "x": 1.08251953125, + "y": 0.285736083984375 + }, + { + "x": -2.3189697265625, + "y": 0.695648193359375 + }, + { + "x": -0.6507568359375, + "y": -1.134918212890625 + }, + { + "x": -1.3487548828125, + "y": 0.63031005859375 + }, + { + "x": -1.71875, + "y": -0.3280029296875 + }, + { + "x": -0.741455078125, + "y": 0.589111328125 + }, + { + "x": -0.62353515625, + "y": -0.62237548828125 + }, + { + "x": 1.7799072265625, + "y": 2.91827392578125 + }, + { + "x": 1.126220703125, + "y": 1.4150390625 + }, + { + "x": 0.58544921875, + "y": 0.9736328125 + }, + { + "x": 0.062255859375, + "y": -0.44293212890625 + }, + { + "x": -1.151611328125, + "y": -0.76251220703125 + }, + { + "x": -0.617919921875, + "y": -0.1895751953125 + }, + { + "x": 0.054931640625, + "y": -1.68267822265625 + }, + { + "x": 3.754150390625, + "y": 4.15618896484375 + }, + { + "x": 3.6015625, + "y": 2.467315673828125 + }, + { + "x": 2.296142578125, + "y": 0.805694580078125 + }, + { + "x": 2.341064453125, + "y": -0.71990966796875 + }, + { + "x": 3.18408203125, + "y": -2.10552978515625 + }, + { + "x": 1.6922607421875, + "y": -2.9345703125 + }, + { + "x": 4.3450927734375, + "y": -3.9989013671875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.7397745381561521, + "y": 0.04775701239480678, + "z": 0.2725237090612447 + }, + "rotation": { + "quaternion": { + "W": 0.7726423695996211, + "X": 0.0782891290698412, + "Y": 0.02803928304587332, + "Z": 0.6293714162362647 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img42.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img42.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1219.144775390625, + "y": 504.59033203125 + }, + { + "x": 1219.5943603515625, + "y": 529.6661987304688 + }, + { + "x": 1219.5679931640625, + "y": 554.6967163085938 + }, + { + "x": 1220.510498046875, + "y": 579.5855102539062 + }, + { + "x": 1218.6591796875, + "y": 604.1455078125 + }, + { + "x": 1219.3917236328125, + "y": 626.5720825195312 + }, + { + "x": 1220.1649169921875, + "y": 649.2760620117188 + }, + { + "x": 1197.6676025390625, + "y": 508.50579833984375 + }, + { + "x": 1196.873291015625, + "y": 532.5286254882812 + }, + { + "x": 1198.60205078125, + "y": 557.2869873046875 + }, + { + "x": 1197.944580078125, + "y": 583.1987915039062 + }, + { + "x": 1198.35107421875, + "y": 605.7833862304688 + }, + { + "x": 1197.5673828125, + "y": 629.4462280273438 + }, + { + "x": 1198.4107666015625, + "y": 653.0931396484375 + }, + { + "x": 1175.3519287109375, + "y": 508.416259765625 + }, + { + "x": 1175.9486083984375, + "y": 535.258544921875 + }, + { + "x": 1176.6964111328125, + "y": 558.276611328125 + }, + { + "x": 1176.04638671875, + "y": 584.6539916992188 + }, + { + "x": 1175.6470947265625, + "y": 608.7525634765625 + }, + { + "x": 1176.3280029296875, + "y": 632.2348022460938 + }, + { + "x": 1175.82666015625, + "y": 654.6072998046875 + }, + { + "x": 1151.7222900390625, + "y": 512.3255004882812 + }, + { + "x": 1151.8751220703125, + "y": 537.4805297851562 + }, + { + "x": 1151.361083984375, + "y": 561.19921875 + }, + { + "x": 1154.2974853515625, + "y": 586.08251953125 + }, + { + "x": 1154.456787109375, + "y": 611.4728393554688 + }, + { + "x": 1153.4873046875, + "y": 635.4561767578125 + }, + { + "x": 1153.5115966796875, + "y": 657.9366455078125 + }, + { + "x": 1127.170654296875, + "y": 515.4815063476562 + }, + { + "x": 1130.1317138671875, + "y": 539.599609375 + }, + { + "x": 1129.2059326171875, + "y": 565.6561889648438 + }, + { + "x": 1130.1871337890625, + "y": 588.3980712890625 + }, + { + "x": 1131.00732421875, + "y": 613.1498413085938 + }, + { + "x": 1130.3551025390625, + "y": 636.248779296875 + }, + { + "x": 1130.533935546875, + "y": 661.2230224609375 + }, + { + "x": 1104.2110595703125, + "y": 516.6259765625 + }, + { + "x": 1105.4984130859375, + "y": 542.2859497070312 + }, + { + "x": 1105.358642578125, + "y": 565.9923095703125 + }, + { + "x": 1106.9508056640625, + "y": 592.2965087890625 + }, + { + "x": 1108.6220703125, + "y": 615.65380859375 + }, + { + "x": 1109.217529296875, + "y": 638.3276977539062 + }, + { + "x": 1107.248291015625, + "y": 662.45849609375 + }, + { + "x": 1081.8216552734375, + "y": 518.5551147460938 + }, + { + "x": 1081.7271728515625, + "y": 543.7599487304688 + }, + { + "x": 1083.21337890625, + "y": 569.5499267578125 + }, + { + "x": 1083.8555908203125, + "y": 593.841064453125 + }, + { + "x": 1083.95263671875, + "y": 618.5521240234375 + }, + { + "x": 1085.765625, + "y": 642.849609375 + }, + { + "x": 1083.8076171875, + "y": 665.8721313476562 + } + ], + "reprojectionErrors": [ + { + "x": 2.9779052734375, + "y": -3.206573486328125 + }, + { + "x": 2.32763671875, + "y": -1.9793701171875 + }, + { + "x": 2.1563720703125, + "y": -1.09796142578125 + }, + { + "x": 1.0191650390625, + "y": -0.4571533203125 + }, + { + "x": 2.678466796875, + "y": 0.13836669921875 + }, + { + "x": 1.7568359375, + "y": 2.50146484375 + }, + { + "x": 0.797119140625, + "y": 4.229248046875 + }, + { + "x": -0.0982666015625, + "y": -3.48040771484375 + }, + { + "x": 0.6795654296875, + "y": -1.56036376953125 + }, + { + "x": -1.0655517578125, + "y": -0.75677490234375 + }, + { + "x": -0.424072265625, + "y": -1.4791259765625 + }, + { + "x": -0.846435546875, + "y": 0.76129150390625 + }, + { + "x": -0.0784912109375, + "y": 1.56683349609375 + }, + { + "x": -0.937255859375, + "y": 2.039306640625 + }, + { + "x": -1.7169189453125, + "y": 0.158966064453125 + }, + { + "x": -2.1551513671875, + "y": -1.0909423828125 + }, + { + "x": -2.746826171875, + "y": 1.11224365234375 + }, + { + "x": -1.9429931640625, + "y": -0.4068603515625 + }, + { + "x": -1.3919677734375, + "y": -0.00244140625 + }, + { + "x": -1.9234619140625, + "y": 0.67059326171875 + }, + { + "x": -1.274658203125, + "y": 2.113037109375 + }, + { + "x": -1.4259033203125, + "y": -0.288818359375 + }, + { + "x": -1.25390625, + "y": -0.19268798828125 + }, + { + "x": -0.419677734375, + "y": 0.9781494140625 + }, + { + "x": -3.04052734375, + "y": 0.6304931640625 + }, + { + "x": -2.8887939453125, + "y": -0.57061767578125 + }, + { + "x": -1.612548828125, + "y": -0.70391845703125 + }, + { + "x": -1.33447265625, + "y": 0.33367919921875 + }, + { + "x": 0.3609619140625, + "y": -0.0684814453125 + }, + { + "x": -2.1170654296875, + "y": 0.7322998046875 + }, + { + "x": -0.715087890625, + "y": -0.7579345703125 + }, + { + "x": -1.226806640625, + "y": 0.721435546875 + }, + { + "x": -1.5841064453125, + "y": -0.14703369140625 + }, + { + "x": -0.4754638671875, + "y": 0.3065185546875 + }, + { + "x": -0.2041015625, + "y": -1.43927001953125 + }, + { + "x": 1.1087646484375, + "y": 2.0814208984375 + }, + { + "x": 0.4549560546875, + "y": 1.0166015625 + }, + { + "x": 1.2193603515625, + "y": 1.5616455078125 + }, + { + "x": 0.2431640625, + "y": -0.8277587890625 + }, + { + "x": -0.8206787109375, + "y": -0.5999755859375 + }, + { + "x": -0.8170166015625, + "y": -0.01165771484375 + }, + { + "x": 1.7431640625, + "y": -1.196533203125 + }, + { + "x": 1.8193359375, + "y": 3.3675537109375 + }, + { + "x": 2.6905517578125, + "y": 2.4425048828125 + }, + { + "x": 1.9703369140625, + "y": 0.596923828125 + }, + { + "x": 2.0836181640625, + "y": -0.0782470703125 + }, + { + "x": 2.731689453125, + "y": -1.4951171875 + }, + { + "x": 1.65380859375, + "y": -2.81365966796875 + }, + { + "x": 4.3369140625, + "y": -3.16607666015625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.733490734239715, + "y": 0.1262556475074996, + "z": 0.27097192264391645 + }, + "rotation": { + "quaternion": { + "W": 0.772804420786939, + "X": 0.07914720462477358, + "Y": 0.012392528595330706, + "Z": 0.6295676869465759 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img43.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img43.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1203.116455078125, + "y": 552.5403442382812 + }, + { + "x": 1203.4244384765625, + "y": 577.3958740234375 + }, + { + "x": 1203.6468505859375, + "y": 601.7788696289062 + }, + { + "x": 1205.2218017578125, + "y": 626.2069702148438 + }, + { + "x": 1203.5262451171875, + "y": 650.0114135742188 + }, + { + "x": 1204.371826171875, + "y": 671.3455200195312 + }, + { + "x": 1206.1595458984375, + "y": 693.4472045898438 + }, + { + "x": 1181.2591552734375, + "y": 557.4866943359375 + }, + { + "x": 1180.7811279296875, + "y": 580.719482421875 + }, + { + "x": 1182.943115234375, + "y": 605.1782836914062 + }, + { + "x": 1182.793701171875, + "y": 629.4442749023438 + }, + { + "x": 1183.2156982421875, + "y": 652.2008666992188 + }, + { + "x": 1182.2933349609375, + "y": 675.4921264648438 + }, + { + "x": 1183.9757080078125, + "y": 698.2515869140625 + }, + { + "x": 1158.4036865234375, + "y": 558.4178466796875 + }, + { + "x": 1159.0062255859375, + "y": 583.8082275390625 + }, + { + "x": 1160.4375, + "y": 606.6593627929688 + }, + { + "x": 1160.4796142578125, + "y": 632.4133911132812 + }, + { + "x": 1160.530517578125, + "y": 655.7101440429688 + }, + { + "x": 1161.4169921875, + "y": 678.2159423828125 + }, + { + "x": 1161.661865234375, + "y": 700.0204467773438 + }, + { + "x": 1135.1766357421875, + "y": 562.7400512695312 + }, + { + "x": 1135.2305908203125, + "y": 587.3362426757812 + }, + { + "x": 1135.6763916015625, + "y": 610.2782592773438 + }, + { + "x": 1138.4119873046875, + "y": 634.311767578125 + }, + { + "x": 1139.2288818359375, + "y": 658.5777587890625 + }, + { + "x": 1139.3358154296875, + "y": 681.2080078125 + }, + { + "x": 1138.8363037109375, + "y": 703.510009765625 + }, + { + "x": 1110.636474609375, + "y": 566.3653564453125 + }, + { + "x": 1114.7027587890625, + "y": 590.1502685546875 + }, + { + "x": 1113.1671142578125, + "y": 615.5379028320312 + }, + { + "x": 1114.5472412109375, + "y": 636.6094970703125 + }, + { + "x": 1115.84326171875, + "y": 661.07470703125 + }, + { + "x": 1115.5379638671875, + "y": 682.8731079101562 + }, + { + "x": 1116.393798828125, + "y": 707.4599609375 + }, + { + "x": 1087.824462890625, + "y": 567.7706298828125 + }, + { + "x": 1089.7510986328125, + "y": 592.619140625 + }, + { + "x": 1090.5743408203125, + "y": 616.1940307617188 + }, + { + "x": 1091.8743896484375, + "y": 641.1793212890625 + }, + { + "x": 1094.376708984375, + "y": 664.0224609375 + }, + { + "x": 1094.5103759765625, + "y": 685.9783935546875 + }, + { + "x": 1094.318359375, + "y": 709.3933715820312 + }, + { + "x": 1065.532470703125, + "y": 570.5599365234375 + }, + { + "x": 1065.777099609375, + "y": 594.6593627929688 + }, + { + "x": 1068.2415771484375, + "y": 619.6561279296875 + }, + { + "x": 1069.4736328125, + "y": 643.546142578125 + }, + { + "x": 1069.6959228515625, + "y": 667.0941772460938 + }, + { + "x": 1071.7685546875, + "y": 690.454345703125 + }, + { + "x": 1069.66748046875, + "y": 713.7239379882812 + } + ], + "reprojectionErrors": [ + { + "x": 2.4703369140625, + "y": -2.69122314453125 + }, + { + "x": 2.2921142578125, + "y": -1.84808349609375 + }, + { + "x": 2.1971435546875, + "y": -0.9788818359375 + }, + { + "x": 0.7474365234375, + "y": -0.58966064453125 + }, + { + "x": 2.5660400390625, + "y": -5.4931640625E-4 + }, + { + "x": 1.8414306640625, + "y": 2.6458740234375 + }, + { + "x": 0.1727294921875, + "y": 4.1220703125 + }, + { + "x": -0.2305908203125, + "y": -3.40850830078125 + }, + { + "x": 0.5877685546875, + "y": -1.31256103515625 + }, + { + "x": -1.2396240234375, + "y": -0.87701416015625 + }, + { + "x": -0.7613525390625, + "y": -0.671875 + }, + { + "x": -0.8599853515625, + "y": 0.6300048828125 + }, + { + "x": 0.3802490234375, + "y": 0.9949951171875 + }, + { + "x": -0.989501953125, + "y": 1.49957275390625 + }, + { + "x": -1.299072265625, + "y": -0.2198486328125 + }, + { + "x": -1.3612060546875, + "y": -0.6409912109375 + }, + { + "x": -2.2613525390625, + "y": 1.05426025390625 + }, + { + "x": -1.78125, + "y": -0.5654296875 + }, + { + "x": -1.318603515625, + "y": -0.12969970703125 + }, + { + "x": -1.7000732421875, + "y": 0.70513916015625 + }, + { + "x": -1.4482421875, + "y": 1.8590087890625 + }, + { + "x": -1.3857421875, + "y": -0.52728271484375 + }, + { + "x": -0.709716796875, + "y": -0.50384521484375 + }, + { + "x": -0.4376220703125, + "y": 0.76214599609375 + }, + { + "x": -2.4674072265625, + "y": 0.5352783203125 + }, + { + "x": -2.5899658203125, + "y": -0.3155517578125 + }, + { + "x": -2.013916015625, + "y": 0.08746337890625 + }, + { + "x": -0.842529296875, + "y": 0.44610595703125 + }, + { + "x": 0.427734375, + "y": -0.23895263671875 + }, + { + "x": -2.7283935546875, + "y": 0.25579833984375 + }, + { + "x": -0.2977294921875, + "y": -1.25311279296875 + }, + { + "x": -0.7974853515625, + "y": 1.16302490234375 + }, + { + "x": -1.2274169921875, + "y": -0.196044921875 + }, + { + "x": -0.0699462890625, + "y": 0.7393798828125 + }, + { + "x": -0.0872802734375, + "y": -1.47698974609375 + }, + { + "x": 1.078369140625, + "y": 2.172119140625 + }, + { + "x": 0.2327880859375, + "y": 1.2724609375 + }, + { + "x": 0.4730224609375, + "y": 1.25579833984375 + }, + { + "x": 0.2191162109375, + "y": -0.5523681640625 + }, + { + "x": -1.2537841796875, + "y": -0.59039306640625 + }, + { + "x": -0.3743896484375, + "y": -0.10418701171875 + }, + { + "x": 0.814697265625, + "y": -1.43157958984375 + }, + { + "x": 1.753173828125, + "y": 3.10540771484375 + }, + { + "x": 2.7520751953125, + "y": 2.6328125 + }, + { + "x": 1.510986328125, + "y": 0.8822021484375 + }, + { + "x": 1.48291015625, + "y": -0.1331787109375 + }, + { + "x": 2.4453125, + "y": -1.16937255859375 + }, + { + "x": 1.538818359375, + "y": -2.37188720703125 + }, + { + "x": 4.787841796875, + "y": -3.82965087890625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.7014850877405725, + "y": 0.1675823768996506, + "z": 0.2674263331991659 + }, + "rotation": { + "quaternion": { + "W": 0.7864511764737253, + "X": 0.08396271506198649, + "Y": 0.0061553698958793516, + "Z": 0.6118879970419079 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img44.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img44.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1222.2733154296875, + "y": 609.3286743164062 + }, + { + "x": 1221.0567626953125, + "y": 632.3995361328125 + }, + { + "x": 1219.57861328125, + "y": 655.67626953125 + }, + { + "x": 1218.2642822265625, + "y": 678.5824584960938 + }, + { + "x": 1215.7320556640625, + "y": 700.910400390625 + }, + { + "x": 1214.05517578125, + "y": 721.7991943359375 + }, + { + "x": 1213.3173828125, + "y": 742.6300048828125 + }, + { + "x": 1201.522705078125, + "y": 611.854736328125 + }, + { + "x": 1199.7205810546875, + "y": 634.2191162109375 + }, + { + "x": 1198.6092529296875, + "y": 657.5237426757812 + }, + { + "x": 1197.0185546875, + "y": 681.1399536132812 + }, + { + "x": 1195.3475341796875, + "y": 702.5438232421875 + }, + { + "x": 1192.6483154296875, + "y": 724.6400756835938 + }, + { + "x": 1191.7674560546875, + "y": 745.6130981445312 + }, + { + "x": 1179.6934814453125, + "y": 611.79638671875 + }, + { + "x": 1178.3245849609375, + "y": 636.6543579101562 + }, + { + "x": 1177.5457763671875, + "y": 658.3598022460938 + }, + { + "x": 1175.4788818359375, + "y": 683.1116943359375 + }, + { + "x": 1173.7376708984375, + "y": 704.5882568359375 + }, + { + "x": 1171.886962890625, + "y": 725.861083984375 + }, + { + "x": 1170.8944091796875, + "y": 746.7506103515625 + }, + { + "x": 1157.1513671875, + "y": 615.1962890625 + }, + { + "x": 1156.0086669921875, + "y": 638.1370239257812 + }, + { + "x": 1153.30078125, + "y": 660.3259887695312 + }, + { + "x": 1154.14892578125, + "y": 683.6727294921875 + }, + { + "x": 1153.1097412109375, + "y": 707.1693725585938 + }, + { + "x": 1150.674072265625, + "y": 728.2511596679688 + }, + { + "x": 1148.6219482421875, + "y": 748.8937377929688 + }, + { + "x": 1133.06640625, + "y": 617.420654296875 + }, + { + "x": 1134.1435546875, + "y": 639.8598022460938 + }, + { + "x": 1131.846435546875, + "y": 664.09326171875 + }, + { + "x": 1131.1109619140625, + "y": 685.0950317382812 + }, + { + "x": 1130.19873046875, + "y": 708.2109985351562 + }, + { + "x": 1127.7197265625, + "y": 728.5375366210938 + }, + { + "x": 1126.71484375, + "y": 752.1640625 + }, + { + "x": 1110.603515625, + "y": 617.503662109375 + }, + { + "x": 1110.7255859375, + "y": 641.3883056640625 + }, + { + "x": 1109.88134765625, + "y": 664.568603515625 + }, + { + "x": 1108.78271484375, + "y": 688.2197875976562 + }, + { + "x": 1108.5877685546875, + "y": 709.8110961914062 + }, + { + "x": 1107.4044189453125, + "y": 730.7146606445312 + }, + { + "x": 1104.4080810546875, + "y": 752.3648071289062 + }, + { + "x": 1088.4798583984375, + "y": 619.1897583007812 + }, + { + "x": 1087.7945556640625, + "y": 642.7160034179688 + }, + { + "x": 1086.8770751953125, + "y": 666.6157836914062 + }, + { + "x": 1086.5875244140625, + "y": 689.505615234375 + }, + { + "x": 1085.0697021484375, + "y": 711.7108764648438 + }, + { + "x": 1084.9539794921875, + "y": 733.5740356445312 + }, + { + "x": 1082.25, + "y": 754.9019165039062 + } + ], + "reprojectionErrors": [ + { + "x": 3.5750732421875, + "y": -2.96038818359375 + }, + { + "x": 2.5750732421875, + "y": -1.45269775390625 + }, + { + "x": 1.885986328125, + "y": -0.697021484375 + }, + { + "x": 1.080810546875, + "y": -0.0989990234375 + }, + { + "x": 1.5394287109375, + "y": 0.56640625 + }, + { + "x": 1.1873779296875, + "y": 2.176513671875 + }, + { + "x": -0.0606689453125, + "y": 3.36590576171875 + }, + { + "x": 0.431884765625, + "y": -2.74395751953125 + }, + { + "x": 0.3072509765625, + "y": -0.82879638671875 + }, + { + "x": -0.4658203125, + "y": -0.3875732421875 + }, + { + "x": -0.718505859375, + "y": -0.77423095703125 + }, + { + "x": -0.851318359375, + "y": 0.5518798828125 + }, + { + "x": 0.08251953125, + "y": 0.701904296875 + }, + { + "x": -0.7650146484375, + "y": 1.50677490234375 + }, + { + "x": -1.1103515625, + "y": -0.00299072265625 + }, + { + "x": -1.3905029296875, + "y": -0.8734130859375 + }, + { + "x": -2.224853515625, + "y": 0.88714599609375 + }, + { + "x": -1.7364501953125, + "y": -0.90350341796875 + }, + { + "x": -1.5401611328125, + "y": 0.0924072265625 + }, + { + "x": -1.2017822265625, + "y": 0.81890869140625 + }, + { + "x": -1.690185546875, + "y": 1.47021484375 + }, + { + "x": -1.4344482421875, + "y": -0.77838134765625 + }, + { + "x": -1.6744384765625, + "y": -0.01654052734375 + }, + { + "x": -0.319580078125, + "y": 0.98712158203125 + }, + { + "x": -2.491943359375, + "y": 0.33929443359375 + }, + { + "x": -2.7490234375, + "y": -0.9365234375 + }, + { + "x": -1.582763671875, + "y": -0.2606201171875 + }, + { + "x": -0.7738037109375, + "y": 0.40570068359375 + }, + { + "x": 0.2733154296875, + "y": -0.434326171875 + }, + { + "x": -1.93115234375, + "y": 0.55072021484375 + }, + { + "x": -0.7373046875, + "y": -0.75726318359375 + }, + { + "x": -1.08203125, + "y": 0.68353271484375 + }, + { + "x": -1.227294921875, + "y": -0.457763671875 + }, + { + "x": 0.2158203125, + "y": 0.73699951171875 + }, + { + "x": 0.2060546875, + "y": -1.80767822265625 + }, + { + "x": 0.8326416015625, + "y": 1.99676513671875 + }, + { + "x": -0.1717529296875, + "y": 1.2642822265625 + }, + { + "x": -0.1912841796875, + "y": 0.74835205078125 + }, + { + "x": 0.0616455078125, + "y": -0.7109375 + }, + { + "x": -0.5716552734375, + "y": -0.568359375 + }, + { + "x": -0.1998291015625, + "y": -0.18194580078125 + }, + { + "x": 2.0015869140625, + "y": -0.9725341796875 + }, + { + "x": 1.511474609375, + "y": 2.77203369140625 + }, + { + "x": 1.549560546875, + "y": 2.1322021484375 + }, + { + "x": 1.833251953125, + "y": 0.64154052734375 + }, + { + "x": 1.5020751953125, + "y": -0.3016357421875 + }, + { + "x": 2.4119873046875, + "y": -1.008544921875 + }, + { + "x": 1.931884765625, + "y": -1.80810546875 + }, + { + "x": 4.0521240234375, + "y": -2.49407958984375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.7331107365850689, + "y": 0.21894828198420535, + "z": 0.2689557467167963 + }, + "rotation": { + "quaternion": { + "W": 0.7724979348387457, + "X": 0.08415800554025436, + "Y": -0.009311574516987019, + "Z": 0.6293470150508175 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img45.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img45.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1088.418212890625, + "y": 561.4769287109375 + }, + { + "x": 1088.338134765625, + "y": 587.5110473632812 + }, + { + "x": 1087.6343994140625, + "y": 612.3652954101562 + }, + { + "x": 1087.37548828125, + "y": 636.8877563476562 + }, + { + "x": 1086.608642578125, + "y": 660.7453002929688 + }, + { + "x": 1086.4378662109375, + "y": 684.2019653320312 + }, + { + "x": 1086.4010009765625, + "y": 705.6860961914062 + }, + { + "x": 1064.962890625, + "y": 567.2315063476562 + }, + { + "x": 1064.2698974609375, + "y": 591.5234375 + }, + { + "x": 1064.6396484375, + "y": 616.5565185546875 + }, + { + "x": 1063.9674072265625, + "y": 642.2506713867188 + }, + { + "x": 1063.4412841796875, + "y": 665.22265625 + }, + { + "x": 1063.205322265625, + "y": 688.6826782226562 + }, + { + "x": 1063.332275390625, + "y": 711.8883056640625 + }, + { + "x": 1040.5489501953125, + "y": 569.3021240234375 + }, + { + "x": 1040.214599609375, + "y": 596.0374755859375 + }, + { + "x": 1040.96240234375, + "y": 620.2022094726562 + }, + { + "x": 1040.2177734375, + "y": 646.4580078125 + }, + { + "x": 1040.39306640625, + "y": 669.9536743164062 + }, + { + "x": 1040.3309326171875, + "y": 693.6802368164062 + }, + { + "x": 1039.7635498046875, + "y": 715.8186645507812 + }, + { + "x": 1015.5285034179688, + "y": 575.1961059570312 + }, + { + "x": 1015.7825317382812, + "y": 600.295654296875 + }, + { + "x": 1014.550048828125, + "y": 625.161376953125 + }, + { + "x": 1016.871337890625, + "y": 650.1176147460938 + }, + { + "x": 1016.5733032226562, + "y": 675.1038818359375 + }, + { + "x": 1015.70654296875, + "y": 698.9149780273438 + }, + { + "x": 1015.4369506835938, + "y": 721.4530029296875 + }, + { + "x": 988.5904541015625, + "y": 579.944580078125 + }, + { + "x": 990.6455688476562, + "y": 604.8800048828125 + }, + { + "x": 990.540283203125, + "y": 631.0469970703125 + }, + { + "x": 991.5933227539062, + "y": 655.1394653320312 + }, + { + "x": 991.5550537109375, + "y": 679.6165161132812 + }, + { + "x": 990.6923217773438, + "y": 702.4928588867188 + }, + { + "x": 991.4566650390625, + "y": 726.5587768554688 + }, + { + "x": 963.2598266601562, + "y": 582.9244384765625 + }, + { + "x": 964.6334838867188, + "y": 609.2427368164062 + }, + { + "x": 965.2791748046875, + "y": 634.5501098632812 + }, + { + "x": 965.6743774414062, + "y": 660.4944458007812 + }, + { + "x": 967.5841674804688, + "y": 684.4681396484375 + }, + { + "x": 967.25634765625, + "y": 707.3414306640625 + }, + { + "x": 966.6495971679688, + "y": 731.3196411132812 + }, + { + "x": 937.8565063476562, + "y": 586.7893676757812 + }, + { + "x": 938.4093017578125, + "y": 613.4267578125 + }, + { + "x": 939.5374145507812, + "y": 639.356201171875 + }, + { + "x": 940.4072265625, + "y": 664.7828369140625 + }, + { + "x": 939.9873657226562, + "y": 689.5661010742188 + }, + { + "x": 942.31591796875, + "y": 713.5234375 + }, + { + "x": 940.7099609375, + "y": 736.4451904296875 + } + ], + "reprojectionErrors": [ + { + "x": 4.9013671875, + "y": -6.40802001953125 + }, + { + "x": 3.5684814453125, + "y": -3.98095703125 + }, + { + "x": 2.913330078125, + "y": -1.46533203125 + }, + { + "x": 1.864501953125, + "y": 0.3524169921875 + }, + { + "x": 1.371826171875, + "y": 1.86236572265625 + }, + { + "x": 0.3287353515625, + "y": 2.85345458984375 + }, + { + "x": -0.804931640625, + "y": 4.9464111328125 + }, + { + "x": 0.8128662109375, + "y": -5.7567138671875 + }, + { + "x": 0.6439208984375, + "y": -2.127685546875 + }, + { + "x": -0.5550537109375, + "y": -0.29498291015625 + }, + { + "x": -0.681396484375, + "y": -0.11981201171875 + }, + { + "x": -0.9248046875, + "y": 1.83544921875 + }, + { + "x": -1.4307861328125, + "y": 2.4111328125 + }, + { + "x": -2.273681640625, + "y": 2.39666748046875 + }, + { + "x": -1.506591796875, + "y": -1.60992431640625 + }, + { + "x": -1.5142822265625, + "y": -0.94537353515625 + }, + { + "x": -2.59130859375, + "y": 1.26904296875 + }, + { + "x": -2.163818359375, + "y": 0.427490234375 + }, + { + "x": -2.64501953125, + "y": 1.43328857421875 + }, + { + "x": -2.8779296875, + "y": 1.3436279296875 + }, + { + "x": -2.5953369140625, + "y": 2.02252197265625 + }, + { + "x": -2.4443359375, + "y": -1.46685791015625 + }, + { + "x": -2.54974365234375, + "y": 0.3306884765625 + }, + { + "x": -1.174072265625, + "y": 1.3740234375 + }, + { + "x": -3.357421875, + "y": 1.39215087890625 + }, + { + "x": -2.92633056640625, + "y": 0.49530029296875 + }, + { + "x": -1.93115234375, + "y": -0.06512451171875 + }, + { + "x": -1.53753662109375, + "y": -0.148193359375 + }, + { + "x": -0.72235107421875, + "y": -0.350830078125 + }, + { + "x": -2.16571044921875, + "y": 1.12530517578125 + }, + { + "x": -1.47088623046875, + "y": 0.41302490234375 + }, + { + "x": -1.955322265625, + "y": 0.869384765625 + }, + { + "x": -1.36834716796875, + "y": 0.0828857421875 + }, + { + "x": 0.024169921875, + "y": 0.08294677734375 + }, + { + "x": -0.22821044921875, + "y": -1.87933349609375 + }, + { + "x": 0.102783203125, + "y": 2.3685302734375 + }, + { + "x": -0.22174072265625, + "y": 1.99273681640625 + }, + { + "x": 0.14422607421875, + "y": 1.70068359375 + }, + { + "x": 0.72509765625, + "y": -0.10662841796875 + }, + { + "x": -0.24224853515625, + "y": -0.776123046875 + }, + { + "x": 0.9959716796875, + "y": -1.13568115234375 + }, + { + "x": 2.4827880859375, + "y": -3.35113525390625 + }, + { + "x": 1.68170166015625, + "y": 4.04443359375 + }, + { + "x": 2.59124755859375, + "y": 2.89605712890625 + }, + { + "x": 2.87396240234375, + "y": 1.55694580078125 + }, + { + "x": 3.36602783203125, + "y": -0.13140869140625 + }, + { + "x": 5.10137939453125, + "y": -1.98486328125 + }, + { + "x": 4.0443115234375, + "y": -3.7802734375 + }, + { + "x": 6.87982177734375, + "y": -5.27001953125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.4502046891593117, + "y": 0.1411311112383741, + "z": 0.21916203647106575 + }, + "rotation": { + "quaternion": { + "W": 0.7963988188599461, + "X": 0.10448729690761704, + "Y": -0.029940891721153447, + "Z": 0.5949242549319741 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img46.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img46.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 945.285888671875, + "y": 614.277587890625 + }, + { + "x": 947.960205078125, + "y": 588.7788696289062 + }, + { + "x": 947.3270263671875, + "y": 561.1710205078125 + }, + { + "x": 948.8639526367188, + "y": 533.7293701171875 + }, + { + "x": 949.2453002929688, + "y": 505.3587951660156 + }, + { + "x": 949.2916870117188, + "y": 476.11322021484375 + }, + { + "x": 949.7847290039062, + "y": 447.4996032714844 + }, + { + "x": 973.2485961914062, + "y": 611.13330078125 + }, + { + "x": 974.5326538085938, + "y": 583.7667846679688 + }, + { + "x": 975.75146484375, + "y": 558.2080078125 + }, + { + "x": 975.5831909179688, + "y": 531.1969604492188 + }, + { + "x": 976.5092163085938, + "y": 502.6301574707031 + }, + { + "x": 977.3006591796875, + "y": 474.2300720214844 + }, + { + "x": 977.0556640625, + "y": 445.5083923339844 + }, + { + "x": 998.3751220703125, + "y": 608.376953125 + }, + { + "x": 999.2371215820312, + "y": 580.8167114257812 + }, + { + "x": 1000.95263671875, + "y": 555.5304565429688 + }, + { + "x": 1001.7020874023438, + "y": 527.0475463867188 + }, + { + "x": 1002.5003051757812, + "y": 501.6261901855469 + }, + { + "x": 1004.07275390625, + "y": 471.82989501953125 + }, + { + "x": 1003.234619140625, + "y": 444.6924133300781 + }, + { + "x": 1024.3782958984375, + "y": 605.3289794921875 + }, + { + "x": 1024.7769775390625, + "y": 580.2518920898438 + }, + { + "x": 1027.8643798828125, + "y": 553.7373046875 + }, + { + "x": 1028.6912841796875, + "y": 525.5055541992188 + }, + { + "x": 1027.662353515625, + "y": 497.13934326171875 + }, + { + "x": 1030.1934814453125, + "y": 470.1914367675781 + }, + { + "x": 1031.305908203125, + "y": 442.0037841796875 + }, + { + "x": 1048.9256591796875, + "y": 601.328125 + }, + { + "x": 1051.191162109375, + "y": 576.6099243164062 + }, + { + "x": 1052.201904296875, + "y": 550.0142822265625 + }, + { + "x": 1053.807373046875, + "y": 524.4434204101562 + }, + { + "x": 1056.260986328125, + "y": 494.0452880859375 + }, + { + "x": 1056.3424072265625, + "y": 468.3427429199219 + }, + { + "x": 1057.3470458984375, + "y": 438.6006164550781 + }, + { + "x": 1073.5125732421875, + "y": 598.9749755859375 + }, + { + "x": 1074.515380859375, + "y": 573.3643188476562 + }, + { + "x": 1076.8880615234375, + "y": 547.7421875 + }, + { + "x": 1078.038330078125, + "y": 521.64404296875 + }, + { + "x": 1080.1920166015625, + "y": 493.6831970214844 + }, + { + "x": 1079.79833984375, + "y": 466.48388671875 + }, + { + "x": 1082.36376953125, + "y": 439.392578125 + }, + { + "x": 1097.81103515625, + "y": 594.6578369140625 + }, + { + "x": 1098.9759521484375, + "y": 571.0973510742188 + }, + { + "x": 1099.5478515625, + "y": 545.3573608398438 + }, + { + "x": 1102.391845703125, + "y": 518.80908203125 + }, + { + "x": 1103.4273681640625, + "y": 491.4401550292969 + }, + { + "x": 1105.3714599609375, + "y": 464.4361877441406 + }, + { + "x": 1106.576416015625, + "y": 435.8741149902344 + } + ], + "reprojectionErrors": [ + { + "x": 7.83251953125, + "y": -6.13677978515625 + }, + { + "x": 5.188232421875, + "y": -4.8668212890625 + }, + { + "x": 5.85223388671875, + "y": -2.15509033203125 + }, + { + "x": 4.34698486328125, + "y": -0.304931640625 + }, + { + "x": 3.9981689453125, + "y": 1.749267578125 + }, + { + "x": 3.98529052734375, + "y": 3.922393798828125 + }, + { + "x": 3.52667236328125, + "y": 4.67437744140625 + }, + { + "x": 2.0758056640625, + "y": -3.96136474609375 + }, + { + "x": 1.12860107421875, + "y": -1.2161865234375 + }, + { + "x": 0.25604248046875, + "y": -0.9676513671875 + }, + { + "x": 0.78045654296875, + "y": 0.014892578125 + }, + { + "x": 0.22076416015625, + "y": 1.803863525390625 + }, + { + "x": -0.19366455078125, + "y": 2.644012451171875 + }, + { + "x": 0.43951416015625, + "y": 2.9888916015625 + }, + { + "x": -0.1484375, + "y": -2.204345703125 + }, + { + "x": -0.34722900390625, + "y": 0.32916259765625 + }, + { + "x": -1.380615234375, + "y": -0.1229248046875 + }, + { + "x": -1.4283447265625, + "y": 1.8792724609375 + }, + { + "x": -1.5042724609375, + "y": 0.04498291015625 + }, + { + "x": -2.3330078125, + "y": 1.776153564453125 + }, + { + "x": -0.728759765625, + "y": 0.002410888671875 + }, + { + "x": -2.519775390625, + "y": -0.1875 + }, + { + "x": -1.90789794921875, + "y": -0.55615234375 + }, + { + "x": -3.95556640625, + "y": -0.22265625 + }, + { + "x": -3.7122802734375, + "y": 1.060302734375 + }, + { + "x": -1.581298828125, + "y": 1.675750732421875 + }, + { + "x": -2.97705078125, + "y": 0.03460693359375 + }, + { + "x": -2.9193115234375, + "y": -1.243682861328125 + }, + { + "x": -2.6702880859375, + "y": 2.74884033203125 + }, + { + "x": -3.555419921875, + "y": 1.58807373046875 + }, + { + "x": -3.145263671875, + "y": 1.54437255859375 + }, + { + "x": -3.2874755859375, + "y": -0.31842041015625 + }, + { + "x": -4.2335205078125, + "y": 1.815673828125 + }, + { + "x": -2.7611083984375, + "y": -1.614532470703125 + }, + { + "x": -2.1634521484375, + "y": -1.914520263671875 + }, + { + "x": -2.0574951171875, + "y": 4.00244140625 + }, + { + "x": -1.2860107421875, + "y": 3.285888671875 + }, + { + "x": -1.8314208984375, + "y": 1.79425048828125 + }, + { + "x": -1.0989990234375, + "y": -0.0438232421875 + }, + { + "x": -1.31201171875, + "y": -0.87957763671875 + }, + { + "x": 1.0831298828125, + "y": -3.37762451171875 + }, + { + "x": 0.5826416015625, + "y": -6.927337646484375 + }, + { + "x": -0.3133544921875, + "y": 7.18328857421875 + }, + { + "x": 0.716064453125, + "y": 3.95257568359375 + }, + { + "x": 2.405029296875, + "y": 2.08709716796875 + }, + { + "x": 1.8917236328125, + "y": 0.17791748046875 + }, + { + "x": 3.260009765625, + "y": -1.802581787109375 + }, + { + "x": 3.796142578125, + "y": -5.082672119140625 + }, + { + "x": 5.1517333984375, + "y": -7.78466796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.36709745627347024, + "y": 0.22399616726648147, + "z": 0.27318411440423696 + }, + "rotation": { + "quaternion": { + "W": 0.6355641815162442, + "X": 0.0031631636548634964, + "Y": 0.10960152285599457, + "Z": -0.7642222659389912 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img47.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img47.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 1062.637451171875, + "y": 583.0868530273438 + }, + { + "x": 1061.561279296875, + "y": 609.1502075195312 + }, + { + "x": 1059.3037109375, + "y": 633.09033203125 + }, + { + "x": 1057.6905517578125, + "y": 657.5302124023438 + }, + { + "x": 1055.55615234375, + "y": 680.8214111328125 + }, + { + "x": 1053.8370361328125, + "y": 703.7479858398438 + }, + { + "x": 1053.6082763671875, + "y": 724.5308837890625 + }, + { + "x": 1039.4415283203125, + "y": 587.4293823242188 + }, + { + "x": 1037.0721435546875, + "y": 611.4989624023438 + }, + { + "x": 1036.6295166015625, + "y": 636.2930908203125 + }, + { + "x": 1034.436767578125, + "y": 661.376220703125 + }, + { + "x": 1032.88037109375, + "y": 684.0992431640625 + }, + { + "x": 1031.3614501953125, + "y": 706.7453002929688 + }, + { + "x": 1028.6573486328125, + "y": 729.253662109375 + }, + { + "x": 1015.3536987304688, + "y": 588.1069946289062 + }, + { + "x": 1014.0977783203125, + "y": 614.679443359375 + }, + { + "x": 1013.2794799804688, + "y": 637.9805297851562 + }, + { + "x": 1010.9310302734375, + "y": 664.2763671875 + }, + { + "x": 1009.552490234375, + "y": 687.37744140625 + }, + { + "x": 1007.4641723632812, + "y": 710.3497314453125 + }, + { + "x": 1006.4251098632812, + "y": 732.5699462890625 + }, + { + "x": 990.3327026367188, + "y": 592.282958984375 + }, + { + "x": 989.29248046875, + "y": 617.413818359375 + }, + { + "x": 986.390625, + "y": 641.5687866210938 + }, + { + "x": 987.416015625, + "y": 666.4926147460938 + }, + { + "x": 985.620849609375, + "y": 690.7140502929688 + }, + { + "x": 983.9544067382812, + "y": 714.18505859375 + }, + { + "x": 981.923095703125, + "y": 736.4802856445312 + }, + { + "x": 964.1395263671875, + "y": 595.6588134765625 + }, + { + "x": 965.1690673828125, + "y": 620.4476318359375 + }, + { + "x": 962.7771606445312, + "y": 646.3078002929688 + }, + { + "x": 961.69970703125, + "y": 669.1740112304688 + }, + { + "x": 960.957275390625, + "y": 693.9201049804688 + }, + { + "x": 959.0542602539062, + "y": 716.4684448242188 + }, + { + "x": 958.2686157226562, + "y": 740.5208740234375 + }, + { + "x": 938.8549194335938, + "y": 597.126220703125 + }, + { + "x": 938.6773681640625, + "y": 622.9198608398438 + }, + { + "x": 938.1776733398438, + "y": 648.4586791992188 + }, + { + "x": 936.800537109375, + "y": 673.5104370117188 + }, + { + "x": 937.2977905273438, + "y": 697.3093872070312 + }, + { + "x": 936.2588500976562, + "y": 719.6153564453125 + }, + { + "x": 934.1410522460938, + "y": 743.4780883789062 + }, + { + "x": 913.5907592773438, + "y": 599.5980224609375 + }, + { + "x": 912.32177734375, + "y": 625.4888305664062 + }, + { + "x": 912.5263061523438, + "y": 651.3479614257812 + }, + { + "x": 911.6384887695312, + "y": 676.4519653320312 + }, + { + "x": 910.1624755859375, + "y": 700.970947265625 + }, + { + "x": 910.8342895507812, + "y": 724.7366333007812 + }, + { + "x": 908.1209106445312, + "y": 747.4282836914062 + } + ], + "reprojectionErrors": [ + { + "x": 5.77001953125, + "y": -6.012939453125 + }, + { + "x": 3.616943359375, + "y": -3.8388671875 + }, + { + "x": 2.78759765625, + "y": -0.78521728515625 + }, + { + "x": 1.44677734375, + "y": 0.6053466796875 + }, + { + "x": 0.7518310546875, + "y": 2.05499267578125 + }, + { + "x": -0.2415771484375, + "y": 2.84710693359375 + }, + { + "x": -2.615478515625, + "y": 4.82275390625 + }, + { + "x": 1.5516357421875, + "y": -5.738037109375 + }, + { + "x": 1.3436279296875, + "y": -2.046630859375 + }, + { + "x": -0.678955078125, + "y": -0.28662109375 + }, + { + "x": -0.8466796875, + "y": 0.0545654296875 + }, + { + "x": -1.5523681640625, + "y": 1.6966552734375 + }, + { + "x": -2.203125, + "y": 2.42132568359375 + }, + { + "x": -1.58203125, + "y": 2.34893798828125 + }, + { + "x": -1.0423583984375, + "y": -1.92156982421875 + }, + { + "x": -1.7449951171875, + "y": -1.1943359375 + }, + { + "x": -2.80120849609375, + "y": 1.6326904296875 + }, + { + "x": -2.24847412109375, + "y": 0.36712646484375 + }, + { + "x": -2.591796875, + "y": 1.266357421875 + }, + { + "x": -2.15594482421875, + "y": 1.32659912109375 + }, + { + "x": -2.70404052734375, + "y": 1.22857666015625 + }, + { + "x": -1.99969482421875, + "y": -1.72198486328125 + }, + { + "x": -2.3304443359375, + "y": 6.103515625E-5 + }, + { + "x": -0.741455078125, + "y": 1.56005859375 + }, + { + "x": -3.02520751953125, + "y": 1.2841796875 + }, + { + "x": -2.43731689453125, + "y": 0.70867919921875 + }, + { + "x": -1.9300537109375, + "y": -0.05859375 + }, + { + "x": -1.01263427734375, + "y": -0.53692626953125 + }, + { + "x": -1.1087646484375, + "y": -0.83612060546875 + }, + { + "x": -2.95111083984375, + "y": 0.794921875 + }, + { + "x": -1.33795166015625, + "y": 0.24908447265625 + }, + { + "x": -1.00738525390625, + "y": 1.6595458984375 + }, + { + "x": -0.9818115234375, + "y": 0.2149658203125 + }, + { + "x": 0.2325439453125, + "y": 0.05072021484375 + }, + { + "x": 0.3560791015625, + "y": -2.4820556640625 + }, + { + "x": -0.47650146484375, + "y": 1.84869384765625 + }, + { + "x": -0.581298828125, + "y": 2.05511474609375 + }, + { + "x": -0.352294921875, + "y": 1.4417724609375 + }, + { + "x": 0.76513671875, + "y": 0.30609130859375 + }, + { + "x": 0.0184326171875, + "y": -0.52606201171875 + }, + { + "x": 0.817626953125, + "y": -0.759033203125 + }, + { + "x": 2.704833984375, + "y": -3.39141845703125 + }, + { + "x": 0.76068115234375, + "y": 3.423828125 + }, + { + "x": 2.25152587890625, + "y": 3.1258544921875 + }, + { + "x": 2.259765625, + "y": 1.814697265625 + }, + { + "x": 3.35186767578125, + "y": 0.27642822265625 + }, + { + "x": 5.024169921875, + "y": -1.60125732421875 + }, + { + "x": 4.541015625, + "y": -3.5966796875 + }, + { + "x": 7.43597412109375, + "y": -5.33990478515625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.4152197276560949, + "y": 0.15440167264195007, + "z": 0.2153659821287985 + }, + "rotation": { + "quaternion": { + "W": 0.7783782340870412, + "X": 0.10698003254801244, + "Y": -0.04062877463767079, + "Z": 0.6172778142838172 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img48.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img48.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 976.7964477539062, + "y": 604.6272583007812 + }, + { + "x": 975.7412109375, + "y": 631.4476928710938 + }, + { + "x": 974.2849731445312, + "y": 656.1620483398438 + }, + { + "x": 973.3682250976562, + "y": 681.0914306640625 + }, + { + "x": 971.4094848632812, + "y": 705.11279296875 + }, + { + "x": 970.5426025390625, + "y": 728.3134155273438 + }, + { + "x": 970.5513305664062, + "y": 749.5043334960938 + }, + { + "x": 952.3594360351562, + "y": 610.2256469726562 + }, + { + "x": 950.45166015625, + "y": 634.4234619140625 + }, + { + "x": 949.9508056640625, + "y": 659.9088745117188 + }, + { + "x": 948.3580322265625, + "y": 685.4325561523438 + }, + { + "x": 948.2095336914062, + "y": 709.24609375 + }, + { + "x": 946.5253295898438, + "y": 731.8380737304688 + }, + { + "x": 945.3052978515625, + "y": 755.1478271484375 + }, + { + "x": 926.3673706054688, + "y": 611.3406982421875 + }, + { + "x": 925.3991088867188, + "y": 638.5831298828125 + }, + { + "x": 925.5665893554688, + "y": 662.2900390625 + }, + { + "x": 923.6536865234375, + "y": 689.4442749023438 + }, + { + "x": 923.41015625, + "y": 712.492919921875 + }, + { + "x": 923.251220703125, + "y": 737.2695922851562 + }, + { + "x": 920.4261474609375, + "y": 759.3555297851562 + }, + { + "x": 899.7943115234375, + "y": 616.2086181640625 + }, + { + "x": 899.5282592773438, + "y": 641.6129760742188 + }, + { + "x": 896.9993286132812, + "y": 666.5059814453125 + }, + { + "x": 898.6962890625, + "y": 692.2410278320312 + }, + { + "x": 898.379638671875, + "y": 717.4150390625 + }, + { + "x": 896.8751220703125, + "y": 740.5062866210938 + }, + { + "x": 895.8938598632812, + "y": 763.8706665039062 + }, + { + "x": 871.794921875, + "y": 620.3001708984375 + }, + { + "x": 872.9609375, + "y": 645.3978881835938 + }, + { + "x": 871.84619140625, + "y": 672.1826782226562 + }, + { + "x": 871.61279296875, + "y": 695.0421752929688 + }, + { + "x": 871.3709716796875, + "y": 721.2166137695312 + }, + { + "x": 870.3556518554688, + "y": 743.667724609375 + }, + { + "x": 870.3538208007812, + "y": 767.9124145507812 + }, + { + "x": 845.0355224609375, + "y": 622.2622680664062 + }, + { + "x": 845.734130859375, + "y": 649.1160888671875 + }, + { + "x": 845.3624877929688, + "y": 674.4523315429688 + }, + { + "x": 845.5419311523438, + "y": 700.3453979492188 + }, + { + "x": 846.6731567382812, + "y": 724.5895385742188 + }, + { + "x": 845.933837890625, + "y": 747.5211181640625 + }, + { + "x": 844.4862060546875, + "y": 771.4235229492188 + }, + { + "x": 818.74853515625, + "y": 625.285888671875 + }, + { + "x": 818.3731689453125, + "y": 652.1735229492188 + }, + { + "x": 818.5668334960938, + "y": 678.485595703125 + }, + { + "x": 818.7877197265625, + "y": 703.9180908203125 + }, + { + "x": 818.4642944335938, + "y": 728.5501098632812 + }, + { + "x": 819.5635375976562, + "y": 753.2431640625 + }, + { + "x": 817.8754272460938, + "y": 775.7107543945312 + } + ], + "reprojectionErrors": [ + { + "x": 6.8189697265625, + "y": -6.98284912109375 + }, + { + "x": 4.57611083984375, + "y": -3.745361328125 + }, + { + "x": 2.93133544921875, + "y": -0.1978759765625 + }, + { + "x": 0.927001953125, + "y": 1.4947509765625 + }, + { + "x": 0.12933349609375, + "y": 2.5943603515625 + }, + { + "x": -1.60906982421875, + "y": 3.13702392578125 + }, + { + "x": -4.083984375, + "y": 4.4219970703125 + }, + { + "x": 1.88201904296875, + "y": -7.2138671875 + }, + { + "x": 1.42572021484375, + "y": -1.885498046875 + }, + { + "x": -0.2979736328125, + "y": 0.41192626953125 + }, + { + "x": -0.8021240234375, + "y": 1.07769775390625 + }, + { + "x": -2.63372802734375, + "y": 1.9935302734375 + }, + { + "x": -2.82220458984375, + "y": 2.78948974609375 + }, + { + "x": -3.37591552734375, + "y": 1.63262939453125 + }, + { + "x": -0.766357421875, + "y": -3.0955810546875 + }, + { + "x": -1.27288818359375, + "y": -1.32666015625 + }, + { + "x": -2.8291015625, + "y": 2.28497314453125 + }, + { + "x": -2.2261962890625, + "y": 0.900390625 + }, + { + "x": -3.220458984375, + "y": 2.20068359375 + }, + { + "x": -4.23291015625, + "y": 0.46649169921875 + }, + { + "x": -2.51806640625, + "y": 0.218994140625 + }, + { + "x": -2.12738037109375, + "y": -2.8592529296875 + }, + { + "x": -2.48907470703125, + "y": 0.2490234375 + }, + { + "x": -0.5516357421875, + "y": 2.22430419921875 + }, + { + "x": -2.8070068359375, + "y": 1.8514404296875 + }, + { + "x": -3.018310546875, + "y": 0.6566162109375 + }, + { + "x": -2.013671875, + "y": 0.271728515625 + }, + { + "x": -1.50653076171875, + "y": -1.56036376953125 + }, + { + "x": -1.38153076171875, + "y": -1.970947265625 + }, + { + "x": -2.36822509765625, + "y": 0.96075439453125 + }, + { + "x": -1.0843505859375, + "y": 0.607421875 + }, + { + "x": -0.69122314453125, + "y": 2.71429443359375 + }, + { + "x": -0.29827880859375, + "y": 0.15966796875 + }, + { + "x": 0.86016845703125, + "y": 0.087890625 + }, + { + "x": 0.99786376953125, + "y": -2.9227294921875 + }, + { + "x": -1.2197265625, + "y": 0.927001953125 + }, + { + "x": -0.96978759765625, + "y": 1.63409423828125 + }, + { + "x": 0.29693603515625, + "y": 2.305419921875 + }, + { + "x": 0.96343994140625, + "y": 0.99420166015625 + }, + { + "x": 0.633056640625, + "y": 0.02032470703125 + }, + { + "x": 2.131591796875, + "y": -0.85028076171875 + }, + { + "x": 4.29998779296875, + "y": -3.80914306640625 + }, + { + "x": -0.897705078125, + "y": 2.64776611328125 + }, + { + "x": 1.15948486328125, + "y": 2.86676025390625 + }, + { + "x": 2.55389404296875, + "y": 2.150634765625 + }, + { + "x": 3.8349609375, + "y": 0.92633056640625 + }, + { + "x": 5.5810546875, + "y": -0.77545166015625 + }, + { + "x": 5.831298828125, + "y": -3.717529296875 + }, + { + "x": 8.80126953125, + "y": -5.5247802734375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.28161938301904493, + "y": 0.14757329845593303, + "z": 0.18795809329105725 + }, + "rotation": { + "quaternion": { + "W": 0.7745702897494162, + "X": 0.11134567520248803, + "Y": -0.06274285890641625, + "Z": 0.6194403445913552 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img49.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img49.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 878.5213012695312, + "y": 596.7548217773438 + }, + { + "x": 877.399169921875, + "y": 624.3831787109375 + }, + { + "x": 876.2788696289062, + "y": 649.862548828125 + }, + { + "x": 875.4769897460938, + "y": 675.3156127929688 + }, + { + "x": 873.7727661132812, + "y": 700.2945556640625 + }, + { + "x": 873.545654296875, + "y": 724.1131591796875 + }, + { + "x": 873.4302368164062, + "y": 746.5223388671875 + }, + { + "x": 851.8168334960938, + "y": 601.073486328125 + }, + { + "x": 850.3805541992188, + "y": 626.0299682617188 + }, + { + "x": 850.2229614257812, + "y": 652.1917114257812 + }, + { + "x": 849.0086669921875, + "y": 678.2781372070312 + }, + { + "x": 848.8355102539062, + "y": 703.2219848632812 + }, + { + "x": 847.4451904296875, + "y": 726.5902099609375 + }, + { + "x": 846.58837890625, + "y": 750.5033569335938 + }, + { + "x": 824.6292724609375, + "y": 600.6201782226562 + }, + { + "x": 823.4970703125, + "y": 628.5987548828125 + }, + { + "x": 823.9109497070312, + "y": 653.3352661132812 + }, + { + "x": 822.5103759765625, + "y": 680.737060546875 + }, + { + "x": 822.4649658203125, + "y": 704.6742553710938 + }, + { + "x": 821.2340087890625, + "y": 729.262939453125 + }, + { + "x": 820.7771606445312, + "y": 752.4830322265625 + }, + { + "x": 796.5028076171875, + "y": 604.2032470703125 + }, + { + "x": 795.824951171875, + "y": 630.8729858398438 + }, + { + "x": 794.9688110351562, + "y": 656.14794921875 + }, + { + "x": 796.050537109375, + "y": 682.19287109375 + }, + { + "x": 796.1236572265625, + "y": 708.1909790039062 + }, + { + "x": 794.6139526367188, + "y": 732.0980224609375 + }, + { + "x": 794.2866821289062, + "y": 755.6151123046875 + }, + { + "x": 766.7949829101562, + "y": 607.1371459960938 + }, + { + "x": 768.7469482421875, + "y": 632.728759765625 + }, + { + "x": 767.6341552734375, + "y": 659.7138061523438 + }, + { + "x": 768.2722778320312, + "y": 684.1713256835938 + }, + { + "x": 768.0050048828125, + "y": 709.81201171875 + }, + { + "x": 766.4877319335938, + "y": 733.068359375 + }, + { + "x": 767.7034301757812, + "y": 758.2387084960938 + }, + { + "x": 739.24462890625, + "y": 607.5676879882812 + }, + { + "x": 740.2507934570312, + "y": 634.5137939453125 + }, + { + "x": 740.293701171875, + "y": 660.884033203125 + }, + { + "x": 740.2113647460938, + "y": 687.3427124023438 + }, + { + "x": 742.1790771484375, + "y": 712.24462890625 + }, + { + "x": 741.6124877929688, + "y": 735.564697265625 + }, + { + "x": 740.5680541992188, + "y": 759.7633056640625 + }, + { + "x": 711.7820434570312, + "y": 609.072509765625 + }, + { + "x": 711.1430053710938, + "y": 635.757080078125 + }, + { + "x": 712.476806640625, + "y": 662.7870483398438 + }, + { + "x": 712.8818969726562, + "y": 689.2550659179688 + }, + { + "x": 712.6954956054688, + "y": 714.2205200195312 + }, + { + "x": 714.365966796875, + "y": 739.4921264648438 + }, + { + "x": 713.17236328125, + "y": 762.4099731445312 + } + ], + "reprojectionErrors": [ + { + "x": 7.85198974609375, + "y": -7.17254638671875 + }, + { + "x": 4.88934326171875, + "y": -2.82122802734375 + }, + { + "x": 2.24700927734375, + "y": 1.15655517578125 + }, + { + "x": -0.42816162109375, + "y": 2.92529296875 + }, + { + "x": -1.94683837890625, + "y": 3.17791748046875 + }, + { + "x": -4.71527099609375, + "y": 2.8111572265625 + }, + { + "x": -7.391357421875, + "y": 2.25604248046875 + }, + { + "x": 3.38568115234375, + "y": -8.038330078125 + }, + { + "x": 2.0443115234375, + "y": -1.466552734375 + }, + { + "x": -0.3587646484375, + "y": 1.436279296875 + }, + { + "x": -1.5125732421875, + "y": 2.2286376953125 + }, + { + "x": -3.535888671875, + "y": 2.21551513671875 + }, + { + "x": -4.1883544921875, + "y": 2.03424072265625 + }, + { + "x": -5.236328125, + "y": -0.25897216796875 + }, + { + "x": 0.02825927734375, + "y": -4.201416015625 + }, + { + "x": -0.36053466796875, + "y": -1.09173583984375 + }, + { + "x": -2.1776123046875, + "y": 2.853271484375 + }, + { + "x": -2.07568359375, + "y": 1.9952392578125 + }, + { + "x": -3.235595703125, + "y": 2.6944580078125 + }, + { + "x": -3.12640380859375, + "y": 1.03338623046875 + }, + { + "x": -3.716064453125, + "y": -0.796142578125 + }, + { + "x": -1.783203125, + "y": -4.4681396484375 + }, + { + "x": -1.41778564453125, + "y": -0.478515625 + }, + { + "x": -0.85009765625, + "y": 2.5540771484375 + }, + { + "x": -2.19903564453125, + "y": 2.72552490234375 + }, + { + "x": -2.520263671875, + "y": 1.07611083984375 + }, + { + "x": -1.24163818359375, + "y": -0.1573486328125 + }, + { + "x": -1.13006591796875, + "y": -2.50872802734375 + }, + { + "x": -1.42413330078125, + "y": -4.1510009765625 + }, + { + "x": -2.526123046875, + "y": 0.49859619140625 + }, + { + "x": -0.6279296875, + "y": 1.4560546875 + }, + { + "x": -0.5382080078125, + "y": 2.89495849609375 + }, + { + "x": 0.40545654296875, + "y": 1.3212890625 + }, + { + "x": 2.55303955078125, + "y": 0.4898681640625 + }, + { + "x": 1.926025390625, + "y": -3.73516845703125 + }, + { + "x": -2.65057373046875, + "y": -1.393798828125 + }, + { + "x": -1.6884765625, + "y": 1.49334716796875 + }, + { + "x": 0.08856201171875, + "y": 2.709228515625 + }, + { + "x": 1.8587646484375, + "y": 1.8341064453125 + }, + { + "x": 1.460693359375, + "y": 0.7236328125 + }, + { + "x": 3.49066162109375, + "y": -0.4151611328125 + }, + { + "x": 5.9027099609375, + "y": -3.88458251953125 + }, + { + "x": -3.40936279296875, + "y": 0.2275390625 + }, + { + "x": 0.27386474609375, + "y": 2.97833251953125 + }, + { + "x": 1.75701904296875, + "y": 3.18621826171875 + }, + { + "x": 3.9661865234375, + "y": 1.99591064453125 + }, + { + "x": 6.585205078125, + "y": 0.55218505859375 + }, + { + "x": 7.18402099609375, + "y": -2.77685546875 + }, + { + "x": 10.49951171875, + "y": -5.1773681640625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.1692998106580428, + "y": 0.1276881575432809, + "z": 0.1683640675552476 + }, + "rotation": { + "quaternion": { + "W": 0.7461484080760292, + "X": 0.12007227286789846, + "Y": -0.08570694713563051, + "Z": 0.6492299451093076 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img50.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img50.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 496.49072265625, + "y": 589.4401245117188 + }, + { + "x": 499.7015686035156, + "y": 618.4137573242188 + }, + { + "x": 503.5804138183594, + "y": 645.886474609375 + }, + { + "x": 509.1601257324219, + "y": 673.5910034179688 + }, + { + "x": 511.3753662109375, + "y": 699.1158447265625 + }, + { + "x": 515.6599731445312, + "y": 724.4912719726562 + }, + { + "x": 521.6229858398438, + "y": 747.6292114257812 + }, + { + "x": 467.4363708496094, + "y": 592.6260986328125 + }, + { + "x": 470.34674072265625, + "y": 619.454345703125 + }, + { + "x": 475.396728515625, + "y": 646.990966796875 + }, + { + "x": 478.8100280761719, + "y": 675.3369750976562 + }, + { + "x": 484.2929992675781, + "y": 700.3343505859375 + }, + { + "x": 486.92681884765625, + "y": 725.4085693359375 + }, + { + "x": 492.49395751953125, + "y": 750.2549438476562 + }, + { + "x": 438.40679931640625, + "y": 591.772705078125 + }, + { + "x": 442.3887634277344, + "y": 620.8007202148438 + }, + { + "x": 447.5892333984375, + "y": 645.98583984375 + }, + { + "x": 451.55059814453125, + "y": 675.452392578125 + }, + { + "x": 455.38916015625, + "y": 700.702392578125 + }, + { + "x": 460.0905456542969, + "y": 725.7945556640625 + }, + { + "x": 465.20672607421875, + "y": 748.6688842773438 + }, + { + "x": 410.40936279296875, + "y": 594.6631469726562 + }, + { + "x": 413.4776611328125, + "y": 621.9102172851562 + }, + { + "x": 417.67791748046875, + "y": 647.9000244140625 + }, + { + "x": 423.8209228515625, + "y": 674.8887329101562 + }, + { + "x": 429.5205383300781, + "y": 702.1056518554688 + }, + { + "x": 433.1550598144531, + "y": 726.572998046875 + }, + { + "x": 437.75665283203125, + "y": 750.77001953125 + }, + { + "x": 380.8356628417969, + "y": 596.18017578125 + }, + { + "x": 386.70794677734375, + "y": 622.6336059570312 + }, + { + "x": 390.6541442871094, + "y": 650.7404174804688 + }, + { + "x": 395.8493957519531, + "y": 675.0907592773438 + }, + { + "x": 401.42962646484375, + "y": 700.9364013671875 + }, + { + "x": 405.01898193359375, + "y": 725.52880859375 + }, + { + "x": 411.31121826171875, + "y": 750.343994140625 + }, + { + "x": 354.10736083984375, + "y": 596.1176147460938 + }, + { + "x": 359.3289794921875, + "y": 623.46533203125 + }, + { + "x": 365.15179443359375, + "y": 650.659423828125 + }, + { + "x": 369.4660339355469, + "y": 676.75 + }, + { + "x": 375.9375, + "y": 702.1395263671875 + }, + { + "x": 380.9000549316406, + "y": 725.36181640625 + }, + { + "x": 384.21429443359375, + "y": 749.6567993164062 + }, + { + "x": 327.8174133300781, + "y": 596.560302734375 + }, + { + "x": 332.845458984375, + "y": 623.791259765625 + }, + { + "x": 338.72808837890625, + "y": 650.6304321289062 + }, + { + "x": 344.3233642578125, + "y": 677.425537109375 + }, + { + "x": 348.80889892578125, + "y": 701.7211303710938 + }, + { + "x": 355.0721130371094, + "y": 727.6243896484375 + }, + { + "x": 359.4093017578125, + "y": 749.6580810546875 + } + ], + "reprojectionErrors": [ + { + "x": -0.221527099609375, + "y": 2.95599365234375 + }, + { + "x": -0.74591064453125, + "y": 2.89892578125 + }, + { + "x": -2.08709716796875, + "y": 2.7412109375 + }, + { + "x": -5.265899658203125, + "y": 0.879638671875 + }, + { + "x": -5.206207275390625, + "y": -0.15850830078125 + }, + { + "x": -7.33221435546875, + "y": -2.29937744140625 + }, + { + "x": -11.2442626953125, + "y": -3.36126708984375 + }, + { + "x": 1.35101318359375, + "y": -0.59722900390625 + }, + { + "x": 1.955902099609375, + "y": 1.8858642578125 + }, + { + "x": 0.22393798828125, + "y": 2.01617431640625 + }, + { + "x": -0.0523681640625, + "y": -0.17266845703125 + }, + { + "x": -2.564971923828125, + "y": -0.40240478515625 + }, + { + "x": -2.382110595703125, + "y": -1.99053955078125 + }, + { + "x": -5.274658203125, + "y": -4.5355224609375 + }, + { + "x": 2.136505126953125, + "y": -0.1212158203125 + }, + { + "x": 2.543182373046875, + "y": 0.5677490234375 + }, + { + "x": 1.48193359375, + "y": 3.41064453125 + }, + { + "x": 1.43109130859375, + "y": 0.42315673828125 + }, + { + "x": 1.292724609375, + "y": 0.228271484375 + }, + { + "x": 0.0977783203125, + "y": -1.12091064453125 + }, + { + "x": -1.690887451171875, + "y": -1.46392822265625 + }, + { + "x": 1.09539794921875, + "y": -3.399658203125 + }, + { + "x": 3.3365478515625, + "y": -0.51275634765625 + }, + { + "x": 4.139984130859375, + "y": 1.8961181640625 + }, + { + "x": 2.720611572265625, + "y": 1.71649169921875 + }, + { + "x": 1.4874267578125, + "y": -0.15118408203125 + }, + { + "x": 2.08258056640625, + "y": -0.613037109375 + }, + { + "x": 1.492279052734375, + "y": -2.044189453125 + }, + { + "x": 0.802154541015625, + "y": -5.3157958984375 + }, + { + "x": 1.210479736328125, + "y": -1.206298828125 + }, + { + "x": 3.178375244140625, + "y": -0.53387451171875 + }, + { + "x": 3.561859130859375, + "y": 2.26312255859375 + }, + { + "x": 3.25274658203125, + "y": 2.0677490234375 + }, + { + "x": 4.65167236328125, + "y": 1.74920654296875 + }, + { + "x": 3.0870361328125, + "y": -0.06072998046875 + }, + { + "x": -3.200927734375, + "y": -5.66387939453125 + }, + { + "x": -1.117156982421875, + "y": -2.00738525390625 + }, + { + "x": -0.06671142578125, + "y": -0.03131103515625 + }, + { + "x": 2.097412109375, + "y": 1.372314453125 + }, + { + "x": 1.74249267578125, + "y": 1.94134521484375 + }, + { + "x": 2.564178466796875, + "y": 3.2672119140625 + }, + { + "x": 4.728179931640625, + "y": 2.2218017578125 + }, + { + "x": -8.5447998046875, + "y": -6.529296875 + }, + { + "x": -5.18560791015625, + "y": -2.3017578125 + }, + { + "x": -3.18402099609375, + "y": 0.430908203125 + }, + { + "x": -1.354095458984375, + "y": 1.48577880859375 + }, + { + "x": 1.16546630859375, + "y": 3.4644775390625 + }, + { + "x": 1.521942138671875, + "y": 2.38983154296875 + }, + { + "x": 3.449981689453125, + "y": 3.855224609375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.19650491423262945, + "y": 0.15533728451949663, + "z": 0.20233167667604807 + }, + "rotation": { + "quaternion": { + "W": 0.6631574383463043, + "X": 0.051292888527224516, + "Y": -0.11905363766233411, + "Z": 0.7371685580054722 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img51.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img51.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 328.4246826171875, + "y": 595.9208374023438 + }, + { + "x": 353.7737731933594, + "y": 595.3963012695312 + }, + { + "x": 379.9740905761719, + "y": 596.057861328125 + }, + { + "x": 409.1878662109375, + "y": 594.5355224609375 + }, + { + "x": 436.7674255371094, + "y": 591.7343139648438 + }, + { + "x": 465.3230285644531, + "y": 592.7965087890625 + }, + { + "x": 493.53948974609375, + "y": 589.8583984375 + }, + { + "x": 332.44293212890625, + "y": 622.2257080078125 + }, + { + "x": 359.0369567871094, + "y": 622.5189208984375 + }, + { + "x": 386.2611999511719, + "y": 621.9857177734375 + }, + { + "x": 412.5487365722656, + "y": 620.8986206054688 + }, + { + "x": 440.5162658691406, + "y": 620.5062866210938 + }, + { + "x": 468.075439453125, + "y": 619.0073852539062 + }, + { + "x": 496.77276611328125, + "y": 618.1492309570312 + }, + { + "x": 338.61431884765625, + "y": 649.42822265625 + }, + { + "x": 364.2337646484375, + "y": 648.937744140625 + }, + { + "x": 389.5662536621094, + "y": 649.7100830078125 + }, + { + "x": 416.2942810058594, + "y": 646.8284912109375 + }, + { + "x": 445.5871887207031, + "y": 645.1984252929688 + }, + { + "x": 473.1849060058594, + "y": 646.4542236328125 + }, + { + "x": 500.4383850097656, + "y": 645.18359375 + }, + { + "x": 343.9591369628906, + "y": 675.6323852539062 + }, + { + "x": 368.5146789550781, + "y": 675.4332275390625 + }, + { + "x": 394.742919921875, + "y": 673.4536743164062 + }, + { + "x": 421.9557189941406, + "y": 673.583984375 + }, + { + "x": 448.97601318359375, + "y": 673.8767700195312 + }, + { + "x": 476.76995849609375, + "y": 673.2825927734375 + }, + { + "x": 505.4859313964844, + "y": 672.3585205078125 + }, + { + "x": 348.5323791503906, + "y": 699.5901489257812 + }, + { + "x": 374.6312255859375, + "y": 699.7815551757812 + }, + { + "x": 400.1015625, + "y": 698.76806640625 + }, + { + "x": 427.538330078125, + "y": 700.2991333007812 + }, + { + "x": 453.0901794433594, + "y": 699.3834228515625 + }, + { + "x": 481.5548095703125, + "y": 699.0249633789062 + }, + { + "x": 507.8690490722656, + "y": 697.4979858398438 + }, + { + "x": 354.2966003417969, + "y": 724.6920166015625 + }, + { + "x": 379.5071716308594, + "y": 723.3075561523438 + }, + { + "x": 402.92303466796875, + "y": 722.6725463867188 + }, + { + "x": 431.1316833496094, + "y": 724.14111328125 + }, + { + "x": 457.6249694824219, + "y": 723.7262573242188 + }, + { + "x": 483.6040344238281, + "y": 723.7430419921875 + }, + { + "x": 512.3900146484375, + "y": 722.6922607421875 + }, + { + "x": 357.4038391113281, + "y": 748.3988647460938 + }, + { + "x": 383.5980529785156, + "y": 747.6143188476562 + }, + { + "x": 409.24346923828125, + "y": 748.0724487304688 + }, + { + "x": 435.55242919921875, + "y": 748.5010375976562 + }, + { + "x": 462.3225402832031, + "y": 746.34765625 + }, + { + "x": 488.7081298828125, + "y": 747.6415405273438 + }, + { + "x": 517.9898681640625, + "y": 745.5288696289062 + } + ], + "reprojectionErrors": [ + { + "x": -8.506103515625, + "y": -6.307373046875 + }, + { + "x": -2.82574462890625, + "y": -5.2603759765625 + }, + { + "x": 1.120941162109375, + "y": -5.41436767578125 + }, + { + "x": 1.208770751953125, + "y": -3.398681640625 + }, + { + "x": 2.120513916015625, + "y": -0.1177978515625 + }, + { + "x": 1.279052734375, + "y": -0.71343994140625 + }, + { + "x": 0.030914306640625, + "y": 2.67864990234375 + }, + { + "x": -4.556365966796875, + "y": -1.7086181640625 + }, + { + "x": -1.1490478515625, + "y": -1.92742919921875 + }, + { + "x": 0.7996826171875, + "y": -1.3218994140625 + }, + { + "x": 2.890533447265625, + "y": -0.16448974609375 + }, + { + "x": 2.538848876953125, + "y": 0.2962646484375 + }, + { + "x": 1.86334228515625, + "y": 1.86175537109375 + }, + { + "x": -0.65380859375, + "y": 2.78472900390625 + }, + { + "x": -3.2232666015625, + "y": 0.1947021484375 + }, + { + "x": 0.19580078125, + "y": 0.36163330078125 + }, + { + "x": 3.122711181640625, + "y": -0.72552490234375 + }, + { + "x": 3.905914306640625, + "y": 1.8494873046875 + }, + { + "x": 1.4053955078125, + "y": 3.1810302734375 + }, + { + "x": -0.09100341796875, + "y": 1.6343994140625 + }, + { + "x": -1.907806396484375, + "y": 2.62152099609375 + }, + { + "x": -1.487823486328125, + "y": 1.4510498046875 + }, + { + "x": 2.091644287109375, + "y": 0.97271728515625 + }, + { + "x": 3.264312744140625, + "y": 2.29241943359375 + }, + { + "x": 2.746673583984375, + "y": 1.519287109375 + }, + { + "x": 1.74273681640625, + "y": 0.5999755859375 + }, + { + "x": -0.688079833984375, + "y": 0.58331298828125 + }, + { + "x": -4.669921875, + "y": 0.9117431640625 + }, + { + "x": 0.62994384765625, + "y": 3.444091796875 + }, + { + "x": 1.816619873046875, + "y": 2.25982666015625 + }, + { + "x": 2.93896484375, + "y": 2.3056640625 + }, + { + "x": 1.428070068359375, + "y": -0.16876220703125 + }, + { + "x": 1.160064697265625, + "y": -0.173095703125 + }, + { + "x": -2.639190673828125, + "y": -0.712158203125 + }, + { + "x": -4.884124755859375, + "y": -0.06109619140625 + }, + { + "x": 1.198760986328125, + "y": 2.90447998046875 + }, + { + "x": 2.473602294921875, + "y": 3.01483154296875 + }, + { + "x": 4.888153076171875, + "y": 2.4072265625 + }, + { + "x": 1.878936767578125, + "y": -0.27362060546875 + }, + { + "x": -0.0230712890625, + "y": -1.04180908203125 + }, + { + "x": -1.99725341796875, + "y": -2.2135009765625 + }, + { + "x": -7.344024658203125, + "y": -2.29034423828125 + }, + { + "x": 4.094512939453125, + "y": 2.47998046875 + }, + { + "x": 3.63079833984375, + "y": 1.73919677734375 + }, + { + "x": 3.09576416015625, + "y": -0.20751953125 + }, + { + "x": 1.2991943359375, + "y": -2.0892333984375 + }, + { + "x": -1.535430908203125, + "y": -1.3548583984375 + }, + { + "x": -4.542266845703125, + "y": -4.03466796875 + }, + { + "x": -10.982818603515625, + "y": -3.276123046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.35435626105590223, + "y": 0.14413331938457552, + "z": 0.19002201648421913 + }, + "rotation": { + "quaternion": { + "W": 0.9901591404630489, + "X": 0.11935169497382966, + "Y": -0.04873057851108878, + "Z": 0.054455304446168196 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img52.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img52.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 421.7937927246094, + "y": 418.9620361328125 + }, + { + "x": 451.7310485839844, + "y": 418.5003662109375 + }, + { + "x": 482.3719177246094, + "y": 418.8839111328125 + }, + { + "x": 516.4017944335938, + "y": 416.7294006347656 + }, + { + "x": 548.8423461914062, + "y": 413.7327575683594 + }, + { + "x": 581.4913940429688, + "y": 415.7369689941406 + }, + { + "x": 613.5682983398438, + "y": 412.6282043457031 + }, + { + "x": 422.9773254394531, + "y": 450.142822265625 + }, + { + "x": 454.2787780761719, + "y": 449.8056335449219 + }, + { + "x": 486.3077392578125, + "y": 448.642578125 + }, + { + "x": 518.7326049804688, + "y": 446.6095886230469 + }, + { + "x": 550.1026611328125, + "y": 447.3240966796875 + }, + { + "x": 581.6524047851562, + "y": 445.6431579589844 + }, + { + "x": 614.4943237304688, + "y": 445.21337890625 + }, + { + "x": 426.9635925292969, + "y": 481.5086669921875 + }, + { + "x": 456.7200927734375, + "y": 480.3591003417969 + }, + { + "x": 487.06298828125, + "y": 481.6062316894531 + }, + { + "x": 519.1524047851562, + "y": 478.2774658203125 + }, + { + "x": 553.1038208007812, + "y": 475.612548828125 + }, + { + "x": 583.670654296875, + "y": 476.92315673828125 + }, + { + "x": 615.2225952148438, + "y": 476.32305908203125 + }, + { + "x": 429.3439636230469, + "y": 512.399658203125 + }, + { + "x": 458.8067321777344, + "y": 512.4315185546875 + }, + { + "x": 490.7087097167969, + "y": 509.9720458984375 + }, + { + "x": 522.468017578125, + "y": 509.26483154296875 + }, + { + "x": 554.1378173828125, + "y": 510.25042724609375 + }, + { + "x": 584.2318725585938, + "y": 509.6710510253906 + }, + { + "x": 617.3272705078125, + "y": 507.2184753417969 + }, + { + "x": 431.4079284667969, + "y": 541.6348266601562 + }, + { + "x": 463.49560546875, + "y": 541.2833862304688 + }, + { + "x": 492.3349609375, + "y": 540.2826538085938 + }, + { + "x": 525.8865966796875, + "y": 541.0778198242188 + }, + { + "x": 555.3936157226562, + "y": 538.442626953125 + }, + { + "x": 587.4619750976562, + "y": 538.627197265625 + }, + { + "x": 617.2857666015625, + "y": 537.158447265625 + }, + { + "x": 436.1140441894531, + "y": 571.667724609375 + }, + { + "x": 465.6701965332031, + "y": 568.5462036132812 + }, + { + "x": 494.23779296875, + "y": 568.1934814453125 + }, + { + "x": 525.2437744140625, + "y": 570.0424194335938 + }, + { + "x": 557.3422241210938, + "y": 568.3486938476562 + }, + { + "x": 587.5161743164062, + "y": 566.962890625 + }, + { + "x": 620.1903686523438, + "y": 566.9953002929688 + }, + { + "x": 435.60357666015625, + "y": 599.8082275390625 + }, + { + "x": 467.4881286621094, + "y": 597.8901977539062 + }, + { + "x": 497.79852294921875, + "y": 597.8146362304688 + }, + { + "x": 528.3905029296875, + "y": 597.6968994140625 + }, + { + "x": 559.480712890625, + "y": 594.8025512695312 + }, + { + "x": 589.6483154296875, + "y": 595.7698364257812 + }, + { + "x": 622.8795166015625, + "y": 592.797607421875 + } + ], + "reprojectionErrors": [ + { + "x": -13.284759521484375, + "y": -16.846343994140625 + }, + { + "x": -3.226715087890625, + "y": -13.4901123046875 + }, + { + "x": 3.21832275390625, + "y": -11.189666748046875 + }, + { + "x": 3.67120361328125, + "y": -6.539581298828125 + }, + { + "x": 3.3751220703125, + "y": -1.216583251953125 + }, + { + "x": 0.76220703125, + "y": -1.04705810546875 + }, + { + "x": -3.18597412109375, + "y": 4.097412109375 + }, + { + "x": -6.84490966796875, + "y": -6.4161376953125 + }, + { + "x": -0.179595947265625, + "y": -4.81304931640625 + }, + { + "x": 3.11322021484375, + "y": -2.4722900390625 + }, + { + "x": 3.6322021484375, + "y": 0.65911865234375 + }, + { + "x": 3.0604248046875, + "y": 0.971466064453125 + }, + { + "x": 0.3663330078125, + "y": 3.614501953125 + }, + { + "x": -5.38433837890625, + "y": 4.947509765625 + }, + { + "x": -3.87109375, + "y": 0.208587646484375 + }, + { + "x": 2.50396728515625, + "y": 1.25738525390625 + }, + { + "x": 5.877685546875, + "y": -0.083770751953125 + }, + { + "x": 5.32415771484375, + "y": 3.157012939453125 + }, + { + "x": 0.93292236328125, + "y": 5.73944091796875 + }, + { + "x": -1.86944580078125, + "y": 4.35137939453125 + }, + { + "x": -7.2938232421875, + "y": 4.878570556640625 + }, + { + "x": 0.128326416015625, + "y": 4.14056396484375 + }, + { + "x": 5.12908935546875, + "y": 2.85650634765625 + }, + { + "x": 5.47705078125, + "y": 4.14422607421875 + }, + { + "x": 3.960693359375, + "y": 3.75262451171875 + }, + { + "x": 0.70855712890625, + "y": 1.7344970703125 + }, + { + "x": -2.6326904296875, + "y": 1.341827392578125 + }, + { + "x": -10.498046875, + "y": 2.877655029296875 + }, + { + "x": 3.9334716796875, + "y": 6.9410400390625 + }, + { + "x": 4.786865234375, + "y": 5.0670166015625 + }, + { + "x": 6.852203369140625, + "y": 3.9798583984375 + }, + { + "x": 2.35205078125, + "y": 1.2220458984375 + }, + { + "x": 0.20513916015625, + "y": 2.0087890625 + }, + { + "x": -6.05096435546875, + "y": 0.080322265625 + }, + { + "x": -11.48260498046875, + "y": -0.098876953125 + }, + { + "x": 4.644805908203125, + "y": 6.478271484375 + }, + { + "x": 6.634674072265625, + "y": 6.54937744140625 + }, + { + "x": 7.733551025390625, + "y": 4.03338623046875 + }, + { + "x": 4.6776123046875, + "y": -0.51824951171875 + }, + { + "x": -1.04248046875, + "y": -1.375244140625 + }, + { + "x": -6.28082275390625, + "y": -2.40069580078125 + }, + { + "x": -15.346923828125, + "y": -4.71600341796875 + }, + { + "x": 10.17120361328125, + "y": 5.71636962890625 + }, + { + "x": 8.54986572265625, + "y": 3.88323974609375 + }, + { + "x": 6.762542724609375, + "y": 0.42333984375 + }, + { + "x": 3.099365234375, + "y": -2.79681396484375 + }, + { + "x": -2.52630615234375, + "y": -3.05889892578125 + }, + { + "x": -8.57733154296875, + "y": -7.0155029296875 + }, + { + "x": -18.9356689453125, + "y": -6.87847900390625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.22380360556042808, + "y": 0.021616891259277793, + "z": 0.1580639194076619 + }, + "rotation": { + "quaternion": { + "W": 0.978325020788188, + "X": 0.15937438565593465, + "Y": -0.11378771208383176, + "Z": 0.0673224737759396 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img53.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img53.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 509.1390686035156, + "y": 361.4249572753906 + }, + { + "x": 539.4442138671875, + "y": 361.54022216796875 + }, + { + "x": 570.5812377929688, + "y": 362.9488220214844 + }, + { + "x": 605.541259765625, + "y": 362.4207763671875 + }, + { + "x": 638.460693359375, + "y": 359.8550109863281 + }, + { + "x": 671.4837646484375, + "y": 363.36590576171875 + }, + { + "x": 704.276123046875, + "y": 360.01483154296875 + }, + { + "x": 508.6030578613281, + "y": 393.471923828125 + }, + { + "x": 541.0652465820312, + "y": 393.6369323730469 + }, + { + "x": 575.066650390625, + "y": 394.6409606933594 + }, + { + "x": 605.693359375, + "y": 392.7397155761719 + }, + { + "x": 637.7301635742188, + "y": 393.5705261230469 + }, + { + "x": 669.4158325195312, + "y": 393.6959533691406 + }, + { + "x": 703.273193359375, + "y": 394.455810546875 + }, + { + "x": 510.8394775390625, + "y": 425.88043212890625 + }, + { + "x": 542.235595703125, + "y": 425.8251953125 + }, + { + "x": 572.1912231445312, + "y": 427.518798828125 + }, + { + "x": 604.0648193359375, + "y": 424.2349548339844 + }, + { + "x": 639.9715576171875, + "y": 423.0718688964844 + }, + { + "x": 670.8831176757812, + "y": 425.6755676269531 + }, + { + "x": 702.2979736328125, + "y": 425.55914306640625 + }, + { + "x": 511.6246337890625, + "y": 457.4005432128906 + }, + { + "x": 541.986083984375, + "y": 458.0575256347656 + }, + { + "x": 574.065185546875, + "y": 455.4525146484375 + }, + { + "x": 607.205810546875, + "y": 456.5068054199219 + }, + { + "x": 638.6321411132812, + "y": 458.28753662109375 + }, + { + "x": 669.6192016601562, + "y": 458.8657531738281 + }, + { + "x": 703.2329711914062, + "y": 457.7218322753906 + }, + { + "x": 511.92498779296875, + "y": 488.1077575683594 + }, + { + "x": 545.0432739257812, + "y": 487.8994140625 + }, + { + "x": 575.644775390625, + "y": 486.5213928222656 + }, + { + "x": 608.5679321289062, + "y": 489.16131591796875 + }, + { + "x": 638.5448608398438, + "y": 488.2577209472656 + }, + { + "x": 671.9915161132812, + "y": 489.3350830078125 + }, + { + "x": 700.9392700195312, + "y": 488.6137390136719 + }, + { + "x": 515.0386962890625, + "y": 518.824462890625 + }, + { + "x": 545.4682006835938, + "y": 517.1316528320312 + }, + { + "x": 575.02099609375, + "y": 516.5816040039062 + }, + { + "x": 606.77587890625, + "y": 519.4039306640625 + }, + { + "x": 640.7343139648438, + "y": 519.5808715820312 + }, + { + "x": 670.3402709960938, + "y": 517.7724609375 + }, + { + "x": 702.513916015625, + "y": 518.6038208007812 + }, + { + "x": 513.1574096679688, + "y": 548.424072265625 + }, + { + "x": 546.3734130859375, + "y": 547.55517578125 + }, + { + "x": 576.6378784179688, + "y": 548.0833740234375 + }, + { + "x": 609.0690307617188, + "y": 549.1343383789062 + }, + { + "x": 639.8062744140625, + "y": 546.3470458984375 + }, + { + "x": 670.47509765625, + "y": 547.666259765625 + }, + { + "x": 705.2830200195312, + "y": 545.4349365234375 + } + ], + "reprojectionErrors": [ + { + "x": -15.162933349609375, + "y": -22.3519287109375 + }, + { + "x": -4.747314453125, + "y": -18.35723876953125 + }, + { + "x": 2.08233642578125, + "y": -15.933868408203125 + }, + { + "x": 2.6051025390625, + "y": -11.82452392578125 + }, + { + "x": 2.920654296875, + "y": -5.904388427734375 + }, + { + "x": 1.091796875, + "y": -6.266876220703125 + }, + { + "x": -2.36480712890625, + "y": 0.0450439453125 + }, + { + "x": -5.864776611328125, + "y": -6.839569091796875 + }, + { + "x": -0.63482666015625, + "y": -4.72393798828125 + }, + { + "x": 0.6729736328125, + "y": -3.591522216796875 + }, + { + "x": 3.19146728515625, + "y": 0.31524658203125 + }, + { + "x": 2.3289794921875, + "y": 1.37066650390625 + }, + { + "x": 0.017333984375, + "y": 3.022552490234375 + }, + { + "x": -6.1146240234375, + "y": 3.94024658203125 + }, + { + "x": -0.479766845703125, + "y": 2.11981201171875 + }, + { + "x": 3.20477294921875, + "y": 3.046630859375 + }, + { + "x": 6.24774169921875, + "y": 2.172821044921875 + }, + { + "x": 5.47064208984375, + "y": 6.229248046875 + }, + { + "x": -1.08184814453125, + "y": 8.12158203125 + }, + { + "x": -4.23895263671875, + "y": 6.2073974609375 + }, + { + "x": -9.37188720703125, + "y": 6.97674560546875 + }, + { + "x": 5.42498779296875, + "y": 6.911346435546875 + }, + { + "x": 7.8695068359375, + "y": 6.029571533203125 + }, + { + "x": 6.76165771484375, + "y": 8.422332763671875 + }, + { + "x": 2.90728759765625, + "y": 7.1673583984375 + }, + { + "x": -0.78399658203125, + "y": 5.196563720703125 + }, + { + "x": -5.46710205078125, + "y": 4.43804931640625 + }, + { + "x": -14.10009765625, + "y": 5.4107666015625 + }, + { + "x": 11.0439453125, + "y": 8.333099365234375 + }, + { + "x": 8.7327880859375, + "y": 7.456756591796875 + }, + { + "x": 7.3094482421875, + "y": 7.807403564453125 + }, + { + "x": 2.06134033203125, + "y": 4.193023681640625 + }, + { + "x": -1.63043212890625, + "y": 4.171112060546875 + }, + { + "x": -10.07965087890625, + "y": 2.21356201171875 + }, + { + "x": -15.225341796875, + "y": 2.0968017578125 + }, + { + "x": 13.204833984375, + "y": 6.24609375 + }, + { + "x": 11.81231689453125, + "y": 6.17547607421875 + }, + { + "x": 9.84051513671875, + "y": 5.05059814453125 + }, + { + "x": 4.3175048828125, + "y": 0.63519287109375 + }, + { + "x": -4.66156005859375, + "y": -1.05877685546875 + }, + { + "x": -10.45306396484375, + "y": -0.69659423828125 + }, + { + "x": -19.8974609375, + "y": -2.9083251953125 + }, + { + "x": 19.81591796875, + "y": 2.3189697265625 + }, + { + "x": 14.05841064453125, + "y": 0.88641357421875 + }, + { + "x": 9.94329833984375, + "y": -1.83355712890625 + }, + { + "x": 2.44390869140625, + "y": -4.97418212890625 + }, + { + "x": -4.49615478515625, + "y": -4.1815185546875 + }, + { + "x": -12.4266357421875, + "y": -7.4066162109375 + }, + { + "x": -25.4859619140625, + "y": -6.99822998046875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.13701450002775054, + "y": -0.010078023485184877, + "z": 0.13940935645192298 + }, + "rotation": { + "quaternion": { + "W": 0.9706161274784019, + "X": 0.2165160704262998, + "Y": -0.09077846631923663, + "Z": 0.05276736092236955 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img54.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img54.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 545.3644409179688, + "y": 328.2143859863281 + }, + { + "x": 546.3026123046875, + "y": 363.3502197265625 + }, + { + "x": 547.4879760742188, + "y": 395.8318786621094 + }, + { + "x": 550.0663452148438, + "y": 429.479248046875 + }, + { + "x": 549.7742309570312, + "y": 462.1031188964844 + }, + { + "x": 553.7235107421875, + "y": 493.8363952636719 + }, + { + "x": 557.4594116210938, + "y": 522.344482421875 + }, + { + "x": 511.8135986328125, + "y": 332.6513366699219 + }, + { + "x": 511.8388366699219, + "y": 364.2948913574219 + }, + { + "x": 515.0140380859375, + "y": 397.6023864746094 + }, + { + "x": 515.5843505859375, + "y": 432.387451171875 + }, + { + "x": 519.720458984375, + "y": 463.94989013671875 + }, + { + "x": 519.6884765625, + "y": 494.4893798828125 + }, + { + "x": 523.1130981445312, + "y": 526.3843994140625 + }, + { + "x": 478.580078125, + "y": 330.9996032714844 + }, + { + "x": 479.3898620605469, + "y": 366.191650390625 + }, + { + "x": 482.68359375, + "y": 396.516357421875 + }, + { + "x": 483.9542541503906, + "y": 433.2564392089844 + }, + { + "x": 485.53857421875, + "y": 464.1498718261719 + }, + { + "x": 489.70965576171875, + "y": 497.2616271972656 + }, + { + "x": 491.147705078125, + "y": 525.1990356445312 + }, + { + "x": 445.1584777832031, + "y": 335.4239807128906 + }, + { + "x": 446.07525634765625, + "y": 367.5349426269531 + }, + { + "x": 447.4090576171875, + "y": 399.42413330078125 + }, + { + "x": 451.36053466796875, + "y": 432.5096130371094 + }, + { + "x": 454.8634948730469, + "y": 466.7300720214844 + }, + { + "x": 455.42864990234375, + "y": 498.31591796875 + }, + { + "x": 458.5534973144531, + "y": 528.5267333984375 + }, + { + "x": 410.23712158203125, + "y": 337.36175537109375 + }, + { + "x": 415.24432373046875, + "y": 369.5468444824219 + }, + { + "x": 414.4473876953125, + "y": 404.2523193359375 + }, + { + "x": 418.4622497558594, + "y": 433.7732238769531 + }, + { + "x": 421.55322265625, + "y": 466.2464599609375 + }, + { + "x": 422.57952880859375, + "y": 496.7618103027344 + }, + { + "x": 426.29058837890625, + "y": 529.7247924804688 + }, + { + "x": 378.7283935546875, + "y": 337.5935363769531 + }, + { + "x": 381.6112060546875, + "y": 370.75 + }, + { + "x": 384.4864807128906, + "y": 403.9425048828125 + }, + { + "x": 386.1568298339844, + "y": 437.3309326171875 + }, + { + "x": 391.0617370605469, + "y": 468.39215087890625 + }, + { + "x": 393.1908874511719, + "y": 498.2420654296875 + }, + { + "x": 395.31109619140625, + "y": 529.7236328125 + }, + { + "x": 348.4861755371094, + "y": 339.3501281738281 + }, + { + "x": 349.6579895019531, + "y": 372.2776794433594 + }, + { + "x": 353.308837890625, + "y": 405.4518127441406 + }, + { + "x": 356.0216369628906, + "y": 438.27685546875 + }, + { + "x": 358.0565490722656, + "y": 469.7358093261719 + }, + { + "x": 363.07318115234375, + "y": 501.7614440917969 + }, + { + "x": 363.09954833984375, + "y": 532.5845947265625 + } + ], + "reprojectionErrors": [ + { + "x": -9.3773193359375, + "y": 8.79083251953125 + }, + { + "x": -9.57763671875, + "y": 6.07568359375 + }, + { + "x": -10.051025390625, + "y": 4.876251220703125 + }, + { + "x": -11.9420166015625, + "y": 1.431610107421875 + }, + { + "x": -10.98583984375, + "y": -2.014129638671875 + }, + { + "x": -14.29315185546875, + "y": -5.5426025390625 + }, + { + "x": -17.408203125, + "y": -6.77130126953125 + }, + { + "x": -2.670166015625, + "y": 2.259368896484375 + }, + { + "x": -1.43426513671875, + "y": 4.234466552734375 + }, + { + "x": -3.394195556640625, + "y": 3.323638916015625 + }, + { + "x": -2.7926025390625, + "y": -0.22125244140625 + }, + { + "x": -5.79791259765625, + "y": -1.639190673828125 + }, + { + "x": -4.674072265625, + "y": -3.073211669921875 + }, + { + "x": -7.0438232421875, + "y": -6.8489990234375 + }, + { + "x": 1.689971923828125, + "y": 1.658233642578125 + }, + { + "x": 2.742340087890625, + "y": 1.374664306640625 + }, + { + "x": 1.240631103515625, + "y": 4.6434326171875 + }, + { + "x": 1.695709228515625, + "y": 0.254791259765625 + }, + { + "x": 1.774505615234375, + "y": 0.538330078125 + }, + { + "x": -0.792755126953125, + "y": -2.508056640625 + }, + { + "x": -0.68316650390625, + "y": -1.433349609375 + }, + { + "x": 3.969207763671875, + "y": -5.196044921875 + }, + { + "x": 5.607147216796875, + "y": -1.005828857421875 + }, + { + "x": 6.728179931640625, + "y": 1.987091064453125 + }, + { + "x": 5.137420654296875, + "y": 2.44622802734375 + }, + { + "x": 3.9063720703125, + "y": 0.508392333984375 + }, + { + "x": 5.52923583984375, + "y": 0.013092041015625 + }, + { + "x": 4.513092041015625, + "y": -0.2344970703125 + }, + { + "x": 5.20086669921875, + "y": -9.76251220703125 + }, + { + "x": 3.5491943359375, + "y": -4.138031005859375 + }, + { + "x": 7.56536865234375, + "y": -2.569976806640625 + }, + { + "x": 6.641571044921875, + "y": 2.73834228515625 + }, + { + "x": 6.520965576171875, + "y": 3.734588623046875 + }, + { + "x": 8.351318359375, + "y": 5.4071044921875 + }, + { + "x": 7.38958740234375, + "y": 3.42254638671875 + }, + { + "x": 0.146636962890625, + "y": -12.847137451171875 + }, + { + "x": 1.549102783203125, + "y": -6.554931640625 + }, + { + "x": 2.77789306640625, + "y": -1.96685791015625 + }, + { + "x": 5.04168701171875, + "y": 0.860809326171875 + }, + { + "x": 3.91131591796875, + "y": 4.546417236328125 + }, + { + "x": 5.4066162109375, + "y": 8.06170654296875 + }, + { + "x": 6.769561767578125, + "y": 8.64447021484375 + }, + { + "x": -9.431243896484375, + "y": -17.71075439453125 + }, + { + "x": -5.23370361328125, + "y": -9.402069091796875 + }, + { + "x": -3.75189208984375, + "y": -3.15789794921875 + }, + { + "x": -1.55340576171875, + "y": 1.73504638671875 + }, + { + "x": 1.1156005859375, + "y": 6.4014892578125 + }, + { + "x": 0.6083984375, + "y": 9.007415771484375 + }, + { + "x": 4.90875244140625, + "y": 11.41278076171875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.1777541581360764, + "y": -0.018272639901923973, + "z": 0.23086730674421357 + }, + "rotation": { + "quaternion": { + "W": 0.6716931930438195, + "X": -0.04958863142082792, + "Y": -0.17611375792753317, + "Z": 0.717881025185267 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img55.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img55.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 454.60528564453125, + "y": 404.2229309082031 + }, + { + "x": 458.4590148925781, + "y": 438.4256286621094 + }, + { + "x": 461.7239074707031, + "y": 470.2166748046875 + }, + { + "x": 467.7245178222656, + "y": 502.6400146484375 + }, + { + "x": 469.8162841796875, + "y": 533.5366821289062 + }, + { + "x": 476.53564453125, + "y": 564.2249755859375 + }, + { + "x": 482.04119873046875, + "y": 590.5650634765625 + }, + { + "x": 422.24713134765625, + "y": 409.8798522949219 + }, + { + "x": 425.3468933105469, + "y": 440.44122314453125 + }, + { + "x": 431.10882568359375, + "y": 473.79425048828125 + }, + { + "x": 434.58856201171875, + "y": 505.55584716796875 + }, + { + "x": 440.2353820800781, + "y": 536.5186157226562 + }, + { + "x": 442.8076171875, + "y": 566.0765991210938 + }, + { + "x": 448.7554626464844, + "y": 595.7780151367188 + }, + { + "x": 390.09881591796875, + "y": 409.5806579589844 + }, + { + "x": 393.0217590332031, + "y": 444.2204895019531 + }, + { + "x": 399.981201171875, + "y": 473.2658386230469 + }, + { + "x": 404.1683044433594, + "y": 509.55242919921875 + }, + { + "x": 407.7830810546875, + "y": 538.4242553710938 + }, + { + "x": 413.2464294433594, + "y": 569.3297729492188 + }, + { + "x": 417.396240234375, + "y": 597.03564453125 + }, + { + "x": 357.1783752441406, + "y": 415.6980285644531 + }, + { + "x": 360.8453369140625, + "y": 447.7111511230469 + }, + { + "x": 365.1306457519531, + "y": 478.16033935546875 + }, + { + "x": 371.35711669921875, + "y": 510.4721984863281 + }, + { + "x": 378.2689514160156, + "y": 542.5440063476562 + }, + { + "x": 381.4104919433594, + "y": 571.9944458007812 + }, + { + "x": 387.05084228515625, + "y": 600.5083618164062 + }, + { + "x": 323.75885009765625, + "y": 419.890380859375 + }, + { + "x": 330.4446716308594, + "y": 450.5561218261719 + }, + { + "x": 334.5931701660156, + "y": 483.5653991699219 + }, + { + "x": 340.3320617675781, + "y": 512.6802368164062 + }, + { + "x": 345.83489990234375, + "y": 543.5884399414062 + }, + { + "x": 350.20220947265625, + "y": 572.4462280273438 + }, + { + "x": 356.7057800292969, + "y": 602.6613159179688 + }, + { + "x": 293.9012756347656, + "y": 421.5535888671875 + }, + { + "x": 299.4365539550781, + "y": 453.52813720703125 + }, + { + "x": 305.2969970703125, + "y": 485.3222351074219 + }, + { + "x": 309.91412353515625, + "y": 516.5139770507812 + }, + { + "x": 317.4717712402344, + "y": 546.5287475585938 + }, + { + "x": 322.067626953125, + "y": 574.4960327148438 + }, + { + "x": 327.4693908691406, + "y": 604.49267578125 + }, + { + "x": 265.27984619140625, + "y": 424.24859619140625 + }, + { + "x": 269.2424011230469, + "y": 456.2587585449219 + }, + { + "x": 275.3445129394531, + "y": 488.1270751953125 + }, + { + "x": 281.5149841308594, + "y": 519.4464111328125 + }, + { + "x": 285.672119140625, + "y": 549.3771362304688 + }, + { + "x": 293.6357421875, + "y": 579.1188354492188 + }, + { + "x": 296.46990966796875, + "y": 608.1627197265625 + } + ], + "reprojectionErrors": [ + { + "x": -4.097412109375, + "y": 6.575408935546875 + }, + { + "x": -4.690460205078125, + "y": 4.418182373046875 + }, + { + "x": -4.81976318359375, + "y": 3.44268798828125 + }, + { + "x": -7.802886962890625, + "y": 0.674407958984375 + }, + { + "x": -6.988677978515625, + "y": -1.663330078125 + }, + { + "x": -10.90753173828125, + "y": -4.82916259765625 + }, + { + "x": -13.71240234375, + "y": -4.62786865234375 + }, + { + "x": -0.195343017578125, + "y": 1.3477783203125 + }, + { + "x": 0.617034912109375, + "y": 3.618072509765625 + }, + { + "x": -1.386505126953125, + "y": 1.805938720703125 + }, + { + "x": -1.252777099609375, + "y": 0.369110107421875 + }, + { + "x": -3.422821044921875, + "y": -1.416015625 + }, + { + "x": -2.6473388671875, + "y": -2.8795166015625 + }, + { + "x": -5.369476318359375, + "y": -5.51055908203125 + }, + { + "x": 2.019073486328125, + "y": 2.09857177734375 + }, + { + "x": 3.7232666015625, + "y": 1.116119384765625 + }, + { + "x": 1.20452880859375, + "y": 4.371917724609375 + }, + { + "x": 1.282745361328125, + "y": -0.889373779296875 + }, + { + "x": 1.768096923828125, + "y": 0.0623779296875 + }, + { + "x": 0.249053955078125, + "y": -2.15277099609375 + }, + { + "x": -0.103485107421875, + "y": -2.2381591796875 + }, + { + "x": 3.40966796875, + "y": -3.543121337890625 + }, + { + "x": 5.155792236328125, + "y": -1.030609130859375 + }, + { + "x": 6.059906005859375, + "y": 1.619110107421875 + }, + { + "x": 4.812774658203125, + "y": 1.066070556640625 + }, + { + "x": 2.68267822265625, + "y": -0.50726318359375 + }, + { + "x": 4.136810302734375, + "y": -0.64599609375 + }, + { + "x": 2.916748046875, + "y": -0.967041015625 + }, + { + "x": 3.57220458984375, + "y": -7.233734130859375 + }, + { + "x": 3.165008544921875, + "y": -2.4595947265625 + }, + { + "x": 5.028839111328125, + "y": -1.531890869140625 + }, + { + "x": 5.052642822265625, + "y": 1.88092041015625 + }, + { + "x": 5.07806396484375, + "y": 2.17706298828125 + }, + { + "x": 6.01861572265625, + "y": 3.2794189453125 + }, + { + "x": 4.61541748046875, + "y": 1.853271484375 + }, + { + "x": -1.700225830078125, + "y": -8.366973876953125 + }, + { + "x": -0.002044677734375, + "y": -3.937652587890625 + }, + { + "x": 1.05596923828125, + "y": -0.91326904296875 + }, + { + "x": 3.06243896484375, + "y": 1.22943115234375 + }, + { + "x": 1.851959228515625, + "y": 3.157958984375 + }, + { + "x": 3.343841552734375, + "y": 5.828125 + }, + { + "x": 3.785919189453125, + "y": 5.2415771484375 + }, + { + "x": -10.244613647460938, + "y": -10.50128173828125 + }, + { + "x": -5.918182373046875, + "y": -5.0897216796875 + }, + { + "x": -4.102294921875, + "y": -1.211151123046875 + }, + { + "x": -2.70135498046875, + "y": 1.65155029296875 + }, + { + "x": 0.388580322265625, + "y": 4.4385986328125 + }, + { + "x": -0.631866455078125, + "y": 6.04241943359375 + }, + { + "x": 3.19189453125, + "y": 7.056396484375 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.26880432723900033, + "y": 0.036989176388712776, + "z": 0.22342889923946654 + }, + "rotation": { + "quaternion": { + "W": 0.6843863105062101, + "X": -0.011746245334428933, + "Y": -0.14052921616236685, + "Z": 0.7153523209699061 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img56.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img56.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 405.56097412109375, + "y": 319.4487609863281 + }, + { + "x": 408.1133117675781, + "y": 355.4822998046875 + }, + { + "x": 410.5806579589844, + "y": 389.4533996582031 + }, + { + "x": 415.5587463378906, + "y": 424.25048828125 + }, + { + "x": 417.26812744140625, + "y": 457.8103332519531 + }, + { + "x": 423.1476745605469, + "y": 490.56085205078125 + }, + { + "x": 428.6346130371094, + "y": 520.5064086914062 + }, + { + "x": 372.6341857910156, + "y": 325.1430969238281 + }, + { + "x": 373.8424072265625, + "y": 357.9991149902344 + }, + { + "x": 378.7199401855469, + "y": 391.8218688964844 + }, + { + "x": 381.60491943359375, + "y": 427.7768249511719 + }, + { + "x": 387.0708312988281, + "y": 459.7870178222656 + }, + { + "x": 388.9458923339844, + "y": 491.9451599121094 + }, + { + "x": 394.4847106933594, + "y": 524.4484252929688 + }, + { + "x": 340.45257568359375, + "y": 324.5428161621094 + }, + { + "x": 342.6504211425781, + "y": 360.5491943359375 + }, + { + "x": 347.6122131347656, + "y": 391.9564514160156 + }, + { + "x": 350.6186218261719, + "y": 429.2400207519531 + }, + { + "x": 354.38897705078125, + "y": 460.9365539550781 + }, + { + "x": 358.62554931640625, + "y": 493.8701477050781 + }, + { + "x": 363.3177490234375, + "y": 523.5811157226562 + }, + { + "x": 308.47113037109375, + "y": 330.3106689453125 + }, + { + "x": 310.5217590332031, + "y": 363.32977294921875 + }, + { + "x": 313.45172119140625, + "y": 395.5461730957031 + }, + { + "x": 319.1940002441406, + "y": 429.47906494140625 + }, + { + "x": 324.5931396484375, + "y": 464.1477355957031 + }, + { + "x": 327.2140808105469, + "y": 496.1141357421875 + }, + { + "x": 332.1049499511719, + "y": 527.2294311523438 + }, + { + "x": 275.6006164550781, + "y": 333.6533508300781 + }, + { + "x": 282.33697509765625, + "y": 366.5280456542969 + }, + { + "x": 283.3120422363281, + "y": 400.8917541503906 + }, + { + "x": 288.36968994140625, + "y": 431.5517578125 + }, + { + "x": 293.1136169433594, + "y": 463.9809265136719 + }, + { + "x": 296.3323059082031, + "y": 495.5281066894531 + }, + { + "x": 301.5259704589844, + "y": 528.4367065429688 + }, + { + "x": 246.62124633789062, + "y": 335.4618225097656 + }, + { + "x": 250.42611694335938, + "y": 368.548828125 + }, + { + "x": 254.67103576660156, + "y": 401.60919189453125 + }, + { + "x": 258.0238952636719, + "y": 435.2947082519531 + }, + { + "x": 264.59954833984375, + "y": 466.616455078125 + }, + { + "x": 268.4196472167969, + "y": 496.5097961425781 + }, + { + "x": 273.489013671875, + "y": 529.6654663085938 + }, + { + "x": 218.7548370361328, + "y": 337.6615905761719 + }, + { + "x": 220.30909729003906, + "y": 370.4620361328125 + }, + { + "x": 225.88677978515625, + "y": 404.2159118652344 + }, + { + "x": 230.22427368164062, + "y": 436.6446838378906 + }, + { + "x": 233.4001922607422, + "y": 468.8978271484375 + }, + { + "x": 240.5796356201172, + "y": 500.6011657714844 + }, + { + "x": 241.77981567382812, + "y": 532.11328125 + } + ], + "reprojectionErrors": [ + { + "x": -6.33135986328125, + "y": 8.26409912109375 + }, + { + "x": -5.881317138671875, + "y": 5.042877197265625 + }, + { + "x": -5.4073486328125, + "y": 3.216583251953125 + }, + { + "x": -7.50335693359375, + "y": -0.083038330078125 + }, + { + "x": -6.388092041015625, + "y": -2.773406982421875 + }, + { + "x": -9.498779296875, + "y": -5.26385498046875 + }, + { + "x": -12.27093505859375, + "y": -5.5408935546875 + }, + { + "x": -1.358123779296875, + "y": 2.52886962890625 + }, + { + "x": 0.794830322265625, + "y": 3.199462890625 + }, + { + "x": -0.79132080078125, + "y": 2.206573486328125 + }, + { + "x": -0.45263671875, + "y": -1.593719482421875 + }, + { + "x": -2.760498046875, + "y": -2.103851318359375 + }, + { + "x": -1.541107177734375, + "y": -3.39678955078125 + }, + { + "x": -4.0472412109375, + "y": -5.65069580078125 + }, + { + "x": 1.613037109375, + "y": 3.086395263671875 + }, + { + "x": 3.1646728515625, + "y": 1.35272216796875 + }, + { + "x": 1.872711181640625, + "y": 3.490264892578125 + }, + { + "x": 2.45904541015625, + "y": -0.953460693359375 + }, + { + "x": 2.20672607421875, + "y": -0.493133544921875 + }, + { + "x": 1.415802001953125, + "y": -1.931732177734375 + }, + { + "x": 0.09906005859375, + "y": -0.78936767578125 + }, + { + "x": 3.04046630859375, + "y": -2.7261962890625 + }, + { + "x": 5.160003662109375, + "y": -0.692535400390625 + }, + { + "x": 6.30963134765625, + "y": 1.382598876953125 + }, + { + "x": 4.559356689453125, + "y": 1.00457763671875 + }, + { + "x": 3.067352294921875, + "y": -0.822479248046875 + }, + { + "x": 4.271392822265625, + "y": -0.637939453125 + }, + { + "x": 3.12591552734375, + "y": -0.27142333984375 + }, + { + "x": 3.91851806640625, + "y": -6.115692138671875 + }, + { + "x": 1.808746337890625, + "y": -3.121246337890625 + }, + { + "x": 5.35748291015625, + "y": -2.412689208984375 + }, + { + "x": 4.724273681640625, + "y": 1.228973388671875 + }, + { + "x": 4.308624267578125, + "y": 2.35595703125 + }, + { + "x": 5.3251953125, + "y": 3.64349365234375 + }, + { + "x": 4.276702880859375, + "y": 2.87115478515625 + }, + { + "x": -0.6370849609375, + "y": -7.973236083984375 + }, + { + "x": 0.6805419921875, + "y": -4.335784912109375 + }, + { + "x": 1.4416656494140625, + "y": -1.50677490234375 + }, + { + "x": 2.9822998046875, + "y": -0.10986328125 + }, + { + "x": 1.19134521484375, + "y": 2.87078857421875 + }, + { + "x": 2.05078125, + "y": 6.525543212890625 + }, + { + "x": 1.55914306640625, + "y": 6.18829345703125 + }, + { + "x": -7.962432861328125, + "y": -10.224517822265625 + }, + { + "x": -3.8545379638671875, + "y": -5.40338134765625 + }, + { + "x": -3.90191650390625, + "y": -2.411834716796875 + }, + { + "x": -2.836395263671875, + "y": 1.058929443359375 + }, + { + "x": -0.73223876953125, + "y": 3.888336181640625 + }, + { + "x": -2.750396728515625, + "y": 6.47808837890625 + }, + { + "x": 1.0958709716796875, + "y": 8.4959716796875 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.3400005889318727, + "y": -0.025556281520024232, + "z": 0.23241118877174335 + }, + "rotation": { + "quaternion": { + "W": 0.706739185429754, + "X": -0.03680910464935195, + "Y": -0.10361241176155701, + "Z": 0.6988771578195659 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img57.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img57.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 817.5701904296875, + "y": 320.6790466308594 + }, + { + "x": 819.3463134765625, + "y": 356.1042785644531 + }, + { + "x": 820.6481323242188, + "y": 389.5868225097656 + }, + { + "x": 823.820068359375, + "y": 423.6715087890625 + }, + { + "x": 823.4647216796875, + "y": 456.7657775878906 + }, + { + "x": 827.17822265625, + "y": 489.0282287597656 + }, + { + "x": 830.5442504882812, + "y": 517.844482421875 + }, + { + "x": 783.7329711914062, + "y": 324.9136657714844 + }, + { + "x": 784.609375, + "y": 357.54931640625 + }, + { + "x": 788.2174072265625, + "y": 391.66937255859375 + }, + { + "x": 788.7870483398438, + "y": 427.3591003417969 + }, + { + "x": 792.7681274414062, + "y": 459.264892578125 + }, + { + "x": 793.3343505859375, + "y": 489.8702087402344 + }, + { + "x": 795.3977661132812, + "y": 522.7505493164062 + }, + { + "x": 749.5505981445312, + "y": 324.3213806152344 + }, + { + "x": 751.2933349609375, + "y": 359.8321838378906 + }, + { + "x": 754.97265625, + "y": 391.267333984375 + }, + { + "x": 756.5053100585938, + "y": 428.2565612792969 + }, + { + "x": 758.28173828125, + "y": 459.8477478027344 + }, + { + "x": 760.8065795898438, + "y": 493.1529846191406 + }, + { + "x": 762.60400390625, + "y": 523.1461181640625 + }, + { + "x": 715.449462890625, + "y": 328.7826843261719 + }, + { + "x": 717.3587036132812, + "y": 361.7075500488281 + }, + { + "x": 718.795654296875, + "y": 394.5709533691406 + }, + { + "x": 722.8338623046875, + "y": 428.6091003417969 + }, + { + "x": 726.3335571289062, + "y": 463.4172058105469 + }, + { + "x": 726.389404296875, + "y": 495.73309326171875 + }, + { + "x": 728.298583984375, + "y": 525.4175415039062 + }, + { + "x": 679.2095336914062, + "y": 331.4853820800781 + }, + { + "x": 684.21044921875, + "y": 364.3526611328125 + }, + { + "x": 684.7581176757812, + "y": 399.5296325683594 + }, + { + "x": 688.6443481445312, + "y": 430.3992614746094 + }, + { + "x": 691.3256225585938, + "y": 463.7204895019531 + }, + { + "x": 692.2991943359375, + "y": 494.7042236328125 + }, + { + "x": 695.90283203125, + "y": 528.6973876953125 + }, + { + "x": 646.0552978515625, + "y": 332.3212890625 + }, + { + "x": 649.2923583984375, + "y": 366.2181701660156 + }, + { + "x": 652.9673461914062, + "y": 400.5274658203125 + }, + { + "x": 654.5900268554688, + "y": 434.34246826171875 + }, + { + "x": 659.8418579101562, + "y": 466.50537109375 + }, + { + "x": 661.8002319335938, + "y": 496.6363525390625 + }, + { + "x": 663.7645263671875, + "y": 529.86962890625 + }, + { + "x": 613.603515625, + "y": 334.3809814453125 + }, + { + "x": 615.1777954101562, + "y": 367.8177795410156 + }, + { + "x": 618.6172485351562, + "y": 402.7918701171875 + }, + { + "x": 622.3834838867188, + "y": 436.0163269042969 + }, + { + "x": 623.5541381835938, + "y": 469.0308532714844 + }, + { + "x": 629.2959594726562, + "y": 501.4772644042969 + }, + { + "x": 628.6409301757812, + "y": 533.2042236328125 + } + ], + "reprojectionErrors": [ + { + "x": 13.06121826171875, + "y": -26.23101806640625 + }, + { + "x": 4.46044921875, + "y": -8.2939453125 + }, + { + "x": -2.6219482421875, + "y": 3.422454833984375 + }, + { + "x": -10.7530517578125, + "y": 8.113494873046875 + }, + { + "x": -14.6988525390625, + "y": 8.650115966796875 + }, + { + "x": -22.1783447265625, + "y": 5.83392333984375 + }, + { + "x": -28.86920166015625, + "y": 3.01458740234375 + }, + { + "x": 5.68829345703125, + "y": -23.8436279296875 + }, + { + "x": 1.48577880859375, + "y": -4.986114501953125 + }, + { + "x": -4.9512939453125, + "y": 4.69183349609375 + }, + { + "x": -7.95660400390625, + "y": 6.709991455078125 + }, + { + "x": -14.05670166015625, + "y": 7.609588623046875 + }, + { + "x": -16.4832763671875, + "y": 5.804962158203125 + }, + { + "x": -20.1929931640625, + "y": -1.58831787109375 + }, + { + "x": 0.84320068359375, + "y": -16.98004150390625 + }, + { + "x": -1.06976318359375, + "y": -2.748016357421875 + }, + { + "x": -4.8944091796875, + "y": 8.294189453125 + }, + { + "x": -6.55267333984375, + "y": 8.00030517578125 + }, + { + "x": -8.43865966796875, + "y": 8.42779541015625 + }, + { + "x": -11.0599365234375, + "y": 3.305023193359375 + }, + { + "x": -12.94293212890625, + "y": -1.69140625 + }, + { + "x": -2.06927490234375, + "y": -15.49365234375 + }, + { + "x": -1.298095703125, + "y": -0.317779541015625 + }, + { + "x": -0.43743896484375, + "y": 8.04931640625 + }, + { + "x": -2.48431396484375, + "y": 9.7452392578125 + }, + { + "x": -4.2415771484375, + "y": 6.20513916015625 + }, + { + "x": -2.75994873046875, + "y": 1.479248046875 + }, + { + "x": -3.30242919921875, + "y": -3.68035888671875 + }, + { + "x": -0.981201171875, + "y": -12.5478515625 + }, + { + "x": -0.72344970703125, + "y": 1.142425537109375 + }, + { + "x": 3.252685546875, + "y": 6.017059326171875 + }, + { + "x": 3.2994384765625, + "y": 9.96771240234375 + }, + { + "x": 4.06890869140625, + "y": 7.197540283203125 + }, + { + "x": 6.14739990234375, + "y": 3.235443115234375 + }, + { + "x": 5.26251220703125, + "y": -6.68731689453125 + }, + { + "x": -1.25396728515625, + "y": -8.012420654296875 + }, + { + "x": 3.10198974609375, + "y": 3.195556640625 + }, + { + "x": 5.9814453125, + "y": 7.8216552734375 + }, + { + "x": 10.0740966796875, + "y": 7.95733642578125 + }, + { + "x": 9.84991455078125, + "y": 5.660064697265625 + }, + { + "x": 12.3485107421875, + "y": 2.005096435546875 + }, + { + "x": 14.36260986328125, + "y": -7.595703125 + }, + { + "x": -0.6282958984375, + "y": -4.9580078125 + }, + { + "x": 7.50616455078125, + "y": 5.340423583984375 + }, + { + "x": 12.4749755859375, + "y": 8.24346923828125 + }, + { + "x": 16.06146240234375, + "y": 8.14117431640625 + }, + { + "x": 21.375, + "y": 4.336334228515625 + }, + { + "x": 21.39422607421875, + "y": -2.158294677734375 + }, + { + "x": 27.20159912109375, + "y": -10.67510986328125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.09317223879175673, + "y": -0.02838189646358115, + "z": 0.12885125655950153 + }, + "rotation": { + "quaternion": { + "W": 0.7246980835320821, + "X": 0.21166760695915318, + "Y": -0.12823413699606678, + "Z": 0.6430905985924431 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img58.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img58.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 714.3302612304688, + "y": 262.80938720703125 + }, + { + "x": 746.4718017578125, + "y": 261.4790954589844 + }, + { + "x": 779.1141357421875, + "y": 261.5284729003906 + }, + { + "x": 814.6714477539062, + "y": 260.03594970703125 + }, + { + "x": 847.816162109375, + "y": 256.4613342285156 + }, + { + "x": 881.3814697265625, + "y": 259.00579833984375 + }, + { + "x": 913.3375854492188, + "y": 255.20574951171875 + }, + { + "x": 715.2908325195312, + "y": 296.1155090332031 + }, + { + "x": 749.0185546875, + "y": 295.01812744140625 + }, + { + "x": 783.1836547851562, + "y": 293.8997802734375 + }, + { + "x": 815.46630859375, + "y": 292.5720520019531 + }, + { + "x": 848.81396484375, + "y": 291.4316101074219 + }, + { + "x": 880.7532348632812, + "y": 290.38763427734375 + }, + { + "x": 914.1829223632812, + "y": 289.69525146484375 + }, + { + "x": 718.499267578125, + "y": 329.9648742675781 + }, + { + "x": 751.6383666992188, + "y": 329.1678771972656 + }, + { + "x": 782.5510864257812, + "y": 329.42730712890625 + }, + { + "x": 816.2337036132812, + "y": 324.7048645019531 + }, + { + "x": 851.7570190429688, + "y": 322.47882080078125 + }, + { + "x": 883.7376708984375, + "y": 323.78021240234375 + }, + { + "x": 915.2158813476562, + "y": 322.6505432128906 + }, + { + "x": 720.1286010742188, + "y": 363.77197265625 + }, + { + "x": 752.4197387695312, + "y": 362.67303466796875 + }, + { + "x": 786.011962890625, + "y": 359.81134033203125 + }, + { + "x": 819.3153076171875, + "y": 359.0853271484375 + }, + { + "x": 852.3516235351562, + "y": 359.3808288574219 + }, + { + "x": 883.7877197265625, + "y": 358.7248229980469 + }, + { + "x": 917.541748046875, + "y": 356.4700927734375 + }, + { + "x": 720.3698120117188, + "y": 397.2370910644531 + }, + { + "x": 756.1419677734375, + "y": 395.24188232421875 + }, + { + "x": 787.5505981445312, + "y": 393.2403869628906 + }, + { + "x": 821.8704833984375, + "y": 393.55902099609375 + }, + { + "x": 852.73388671875, + "y": 391.31268310546875 + }, + { + "x": 887.4356079101562, + "y": 391.23712158203125 + }, + { + "x": 916.4133911132812, + "y": 389.56280517578125 + }, + { + "x": 724.7156372070312, + "y": 430.36358642578125 + }, + { + "x": 757.2168579101562, + "y": 426.11981201171875 + }, + { + "x": 788.2933349609375, + "y": 425.0771484375 + }, + { + "x": 821.5473022460938, + "y": 425.5417785644531 + }, + { + "x": 854.8958129882812, + "y": 424.30853271484375 + }, + { + "x": 886.10986328125, + "y": 422.322021484375 + }, + { + "x": 919.1615600585938, + "y": 421.72412109375 + }, + { + "x": 723.2747192382812, + "y": 462.16082763671875 + }, + { + "x": 758.6505126953125, + "y": 460.48974609375 + }, + { + "x": 790.17822265625, + "y": 458.7736511230469 + }, + { + "x": 822.7269897460938, + "y": 457.6427917480469 + }, + { + "x": 854.951171875, + "y": 455.3883056640625 + }, + { + "x": 887.3391723632812, + "y": 454.64898681640625 + }, + { + "x": 921.31689453125, + "y": 451.6357116699219 + } + ], + "reprojectionErrors": [ + { + "x": 24.0946044921875, + "y": 3.8026123046875 + }, + { + "x": 14.78057861328125, + "y": 0.14093017578125 + }, + { + "x": 6.703369140625, + "y": -5.2803955078125 + }, + { + "x": -2.34503173828125, + "y": -9.584869384765625 + }, + { + "x": -6.796875, + "y": -12.284866333007812 + }, + { + "x": -9.20379638671875, + "y": -21.643096923828125 + }, + { + "x": -7.20391845703125, + "y": -25.268585205078125 + }, + { + "x": 24.21917724609375, + "y": 3.387451171875 + }, + { + "x": 13.271728515625, + "y": 0.713165283203125 + }, + { + "x": 3.614013671875, + "y": -2.226104736328125 + }, + { + "x": -2.22998046875, + "y": -5.2757568359375 + }, + { + "x": -6.9700927734375, + "y": -8.871795654296875 + }, + { + "x": -7.8546142578125, + "y": -12.969482421875 + }, + { + "x": -7.45428466796875, + "y": -17.87823486328125 + }, + { + "x": 22.08795166015625, + "y": 2.1883544921875 + }, + { + "x": 11.681884765625, + "y": 0.41595458984375 + }, + { + "x": 5.218994140625, + "y": -2.606903076171875 + }, + { + "x": -2.09490966796875, + "y": -0.86474609375 + }, + { + "x": -9.09564208984375, + "y": -1.862457275390625 + }, + { + "x": -10.12451171875, + "y": -6.662139892578125 + }, + { + "x": -7.89776611328125, + "y": -9.341949462890625 + }, + { + "x": 21.5279541015625, + "y": 0.793426513671875 + }, + { + "x": 11.9227294921875, + "y": 0.507537841796875 + }, + { + "x": 2.72296142578125, + "y": 1.8802490234375 + }, + { + "x": -4.28143310546875, + "y": 1.00091552734375 + }, + { + "x": -8.879638671875, + "y": -1.030548095703125 + }, + { + "x": -9.46636962890625, + "y": -2.2576904296875 + }, + { + "x": -9.63958740234375, + "y": -2.052825927734375 + }, + { + "x": 22.3482666015625, + "y": -0.4949951171875 + }, + { + "x": 9.21502685546875, + "y": 1.282562255859375 + }, + { + "x": 2.1416015625, + "y": 3.050079345703125 + }, + { + "x": -5.94873046875, + "y": 2.479248046875 + }, + { + "x": -8.4581298828125, + "y": 4.452972412109375 + }, + { + "x": -12.41229248046875, + "y": 4.232879638671875 + }, + { + "x": -7.93255615234375, + "y": 5.58551025390625 + }, + { + "x": 19.05633544921875, + "y": -1.677703857421875 + }, + { + "x": 9.14703369140625, + "y": 3.4984130859375 + }, + { + "x": 2.34869384765625, + "y": 5.54302978515625 + }, + { + "x": -4.744873046875, + "y": 6.15802001953125 + }, + { + "x": -9.82305908203125, + "y": 8.557952880859375 + }, + { + "x": -10.39068603515625, + "y": 11.8092041015625 + }, + { + "x": -10.10736083984375, + "y": 13.782806396484375 + }, + { + "x": 21.5435791015625, + "y": -1.7615966796875 + }, + { + "x": 8.7127685546875, + "y": 1.975006103515625 + }, + { + "x": 1.40625, + "y": 5.910186767578125 + }, + { + "x": -5.051025390625, + "y": 9.431488037109375 + }, + { + "x": -9.08807373046875, + "y": 14.268402099609375 + }, + { + "x": -10.93023681640625, + "y": 17.806243896484375 + }, + { + "x": -11.69451904296875, + "y": 23.8624267578125 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": 0.059858282217853116, + "y": -0.07312514414417996, + "z": 0.2339452498449864 + }, + "rotation": { + "quaternion": { + "W": 0.9857579291571685, + "X": 0.02165882379805987, + "Y": 0.16463941626726386, + "Z": -0.02657184725663278 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img59.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img59.png" + }, + { + "locationInObjectSpace": [ + { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.0, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.02539999969303608, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.05079999938607216, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.07620000094175339, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.10159999877214432, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.12700000405311584, + "z": 0.0 + }, + { + "x": 0.0, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.02539999969303608, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.05079999938607216, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.07620000094175339, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.10159999877214432, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.12700000405311584, + "y": 0.15240000188350677, + "z": 0.0 + }, + { + "x": 0.15240000188350677, + "y": 0.15240000188350677, + "z": 0.0 + } + ], + "locationInImageSpace": [ + { + "x": 574.146240234375, + "y": 266.3539123535156 + }, + { + "x": 609.4313354492188, + "y": 264.7431945800781 + }, + { + "x": 644.843994140625, + "y": 265.2862854003906 + }, + { + "x": 684.1218872070312, + "y": 263.537353515625 + }, + { + "x": 720.5785522460938, + "y": 259.3859558105469 + }, + { + "x": 756.6463623046875, + "y": 262.5197448730469 + }, + { + "x": 791.60009765625, + "y": 258.51446533203125 + }, + { + "x": 574.66552734375, + "y": 302.4986877441406 + }, + { + "x": 611.2098999023438, + "y": 301.3449401855469 + }, + { + "x": 650.6383666992188, + "y": 301.0174255371094 + }, + { + "x": 684.38427734375, + "y": 298.3463134765625 + }, + { + "x": 720.5717163085938, + "y": 297.4222106933594 + }, + { + "x": 755.270263671875, + "y": 296.3943786621094 + }, + { + "x": 792.205810546875, + "y": 296.2777099609375 + }, + { + "x": 577.3387451171875, + "y": 339.5285949707031 + }, + { + "x": 614.0712280273438, + "y": 338.48822021484375 + }, + { + "x": 647.6690063476562, + "y": 338.3093566894531 + }, + { + "x": 684.0853881835938, + "y": 333.39715576171875 + }, + { + "x": 723.4298706054688, + "y": 330.701904296875 + }, + { + "x": 758.4676513671875, + "y": 332.4620361328125 + }, + { + "x": 791.7681884765625, + "y": 331.302001953125 + }, + { + "x": 579.0592041015625, + "y": 376.1037902832031 + }, + { + "x": 613.6832885742188, + "y": 375.29296875 + }, + { + "x": 651.5670776367188, + "y": 372.3077087402344 + }, + { + "x": 687.3493041992188, + "y": 370.3127746582031 + }, + { + "x": 723.3216552734375, + "y": 370.6106872558594 + }, + { + "x": 757.0503540039062, + "y": 370.4305114746094 + }, + { + "x": 794.1497192382812, + "y": 367.425537109375 + }, + { + "x": 579.2674560546875, + "y": 411.8720703125 + }, + { + "x": 617.9581909179688, + "y": 409.46295166015625 + }, + { + "x": 652.5848999023438, + "y": 407.09307861328125 + }, + { + "x": 689.8755493164062, + "y": 407.6622314453125 + }, + { + "x": 723.2716064453125, + "y": 405.19708251953125 + }, + { + "x": 761.1668090820312, + "y": 404.7541198730469 + }, + { + "x": 792.3742065429688, + "y": 402.66717529296875 + }, + { + "x": 583.6874389648438, + "y": 447.633544921875 + }, + { + "x": 619.1483154296875, + "y": 442.6697692871094 + }, + { + "x": 652.4592895507812, + "y": 441.35308837890625 + }, + { + "x": 688.423828125, + "y": 442.8401184082031 + }, + { + "x": 726.3277587890625, + "y": 440.58001708984375 + }, + { + "x": 758.5791625976562, + "y": 438.1412658691406 + }, + { + "x": 795.3078002929688, + "y": 437.4010009765625 + }, + { + "x": 581.4962158203125, + "y": 482.35260009765625 + }, + { + "x": 621.2080078125, + "y": 480.2969665527344 + }, + { + "x": 655.0042724609375, + "y": 477.4393615722656 + }, + { + "x": 691.1544799804688, + "y": 476.801513671875 + }, + { + "x": 725.9357299804688, + "y": 472.3534851074219 + }, + { + "x": 761.2750854492188, + "y": 472.7468566894531 + }, + { + "x": 797.455810546875, + "y": 468.2049255371094 + } + ], + "reprojectionErrors": [ + { + "x": -5.14862060546875, + "y": -19.192489624023438 + }, + { + "x": -2.24774169921875, + "y": -19.494583129882812 + }, + { + "x": 0.49212646484375, + "y": -21.948822021484375 + }, + { + "x": -0.66650390625, + "y": -22.109375 + }, + { + "x": 0.96270751953125, + "y": -19.86578369140625 + }, + { + "x": 2.94757080078125, + "y": -24.905731201171875 + }, + { + "x": 6.01318359375, + "y": -22.804931640625 + }, + { + "x": 6.27899169921875, + "y": 0.152862548828125 + }, + { + "x": 4.38641357421875, + "y": -0.451446533203125 + }, + { + "x": -0.417724609375, + "y": -1.880584716796875 + }, + { + "x": 0.4332275390625, + "y": -0.9647216796875 + }, + { + "x": -1.18475341796875, + "y": -1.794525146484375 + }, + { + "x": -1.34130859375, + "y": -2.5191650390625 + }, + { + "x": -3.76220703125, + "y": -4.15362548828125 + }, + { + "x": 13.53033447265625, + "y": 9.22003173828125 + }, + { + "x": 8.51434326171875, + "y": 8.634368896484375 + }, + { + "x": 6.6099853515625, + "y": 7.1883544921875 + }, + { + "x": 1.864013671875, + "y": 10.476837158203125 + }, + { + "x": -5.83306884765625, + "y": 11.549560546875 + }, + { + "x": -9.2464599609375, + "y": 8.168060302734375 + }, + { + "x": -10.94549560546875, + "y": 7.707916259765625 + }, + { + "x": 20.18560791015625, + "y": 11.54779052734375 + }, + { + "x": 14.80108642578125, + "y": 10.846343994140625 + }, + { + "x": 6.13726806640625, + "y": 12.32037353515625 + }, + { + "x": -0.44451904296875, + "y": 12.805084228515625 + }, + { + "x": -7.23602294921875, + "y": 10.9979248046875 + }, + { + "x": -11.80340576171875, + "y": 9.669891357421875 + }, + { + "x": -19.760986328125, + "y": 11.167633056640625 + }, + { + "x": 27.1405029296875, + "y": 9.050506591796875 + }, + { + "x": 15.5712890625, + "y": 10.046478271484375 + }, + { + "x": 8.04925537109375, + "y": 11.004058837890625 + }, + { + "x": -2.153564453125, + "y": 9.02349853515625 + }, + { + "x": -8.4786376953125, + "y": 10.078094482421875 + }, + { + "x": -19.31964111328125, + "y": 9.11138916015625 + }, + { + "x": -23.48968505859375, + "y": 9.78948974609375 + }, + { + "x": 28.91668701171875, + "y": 2.06854248046875 + }, + { + "x": 18.74542236328125, + "y": 5.706207275390625 + }, + { + "x": 10.7093505859375, + "y": 5.697509765625 + }, + { + "x": 0.005126953125, + "y": 2.8858642578125 + }, + { + "x": -12.6531982421875, + "y": 3.82208251953125 + }, + { + "x": -19.67352294921875, + "y": 4.937744140625 + }, + { + "x": -31.18572998046875, + "y": 4.35565185546875 + }, + { + "x": 36.5205078125, + "y": -7.510467529296875 + }, + { + "x": 20.4981689453125, + "y": -6.7039794921875 + }, + { + "x": 10.3785400390625, + "y": -5.094818115234375 + }, + { + "x": -2.10791015625, + "y": -5.70477294921875 + }, + { + "x": -13.23822021484375, + "y": -2.503875732421875 + }, + { + "x": -24.93951416015625, + "y": -4.143707275390625 + }, + { + "x": -37.49493408203125, + "y": -0.847564697265625 + } + ], + "optimisedCameraToObject": { + "translation": { + "x": -0.07913880652968171, + "y": -0.04951494529162348, + "z": 0.13131414221186932 + }, + "rotation": { + "quaternion": { + "W": 0.96164725065491, + "X": 0.27376989914946553, + "Y": -0.005697136665106592, + "Z": -0.015879239949168775 + } + } + }, + "includeObservationInCalibration": true, + "snapshotName": "img60.png", + "snapshotDataLocation": "file:///opt/photonvision/photonvision_config/calibration/fc5f2513-235f-4cb2-ac8c-90b3be0c1c70/imgs/1280x800/img60.png" + } + ], + "calobjectSize": { + "width": 7.0, + "height": 7.0 + }, + "calobjectSpacing": 0.0254, + "lensmodel": "LENSMODEL_OPENCV" +} diff --git a/elastic-layout.json b/elastic-layout.json index c941f9f..d5f18b2 100644 --- a/elastic-layout.json +++ b/elastic-layout.json @@ -346,4 +346,4 @@ } } ] -} \ No newline at end of file +} diff --git a/src/main/deploy/pathplanner/autos/Middle G.auto b/src/main/deploy/pathplanner/autos/Middle G.auto new file mode 100644 index 0000000..f7f66bd --- /dev/null +++ b/src/main/deploy/pathplanner/autos/Middle G.auto @@ -0,0 +1,37 @@ +{ + "version": "2025.0", + "command": { + "type": "sequential", + "data": { + "commands": [ + { + "type": "path", + "data": { + "pathName": "Middle to Branch G" + } + }, + { + "type": "named", + "data": { + "name": "score_coral" + } + }, + { + "type": "path", + "data": { + "pathName": "Back Path from G" + } + }, + { + "type": "named", + "data": { + "name": "elevator_stow" + } + } + ] + } + }, + "resetOdom": true, + "folder": null, + "choreoAuto": false +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/paths/Back Path from G.path b/src/main/deploy/pathplanner/paths/Back Path from G.path new file mode 100644 index 0000000..526545f --- /dev/null +++ b/src/main/deploy/pathplanner/paths/Back Path from G.path @@ -0,0 +1,54 @@ +{ + "version": "2025.0", + "waypoints": [ + { + "anchor": { + "x": 5.8, + "y": 3.870440340909091 + }, + "prevControl": null, + "nextControl": { + "x": 6.745284813319056, + "y": 3.870440340909091 + }, + "isLocked": false, + "linkedName": "Branch G" + }, + { + "anchor": { + "x": 6.5, + "y": 3.870440340909091 + }, + "prevControl": { + "x": 5.862047337017383, + "y": 3.870440340909091 + }, + "nextControl": null, + "isLocked": false, + "linkedName": null + } + ], + "rotationTargets": [], + "constraintZones": [], + "pointTowardsZones": [], + "eventMarkers": [], + "globalConstraints": { + "maxVelocity": 2.0, + "maxAcceleration": 1.5, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + }, + "goalEndState": { + "velocity": 0, + "rotation": 180.0 + }, + "reversed": false, + "folder": "To Barge", + "idealStartingState": { + "velocity": 0, + "rotation": 180.0 + }, + "useDefaultConstraints": false +} \ No newline at end of file diff --git a/src/main/deploy/pathplanner/paths/Middle to Branch G.path b/src/main/deploy/pathplanner/paths/Middle to Branch G.path new file mode 100644 index 0000000..d013a17 --- /dev/null +++ b/src/main/deploy/pathplanner/paths/Middle to Branch G.path @@ -0,0 +1,82 @@ +{ + "version": "2025.0", + "waypoints": [ + { + "anchor": { + "x": 7.1, + "y": 4.003 + }, + "prevControl": null, + "nextControl": { + "x": 6.844093271096148, + "y": 3.93840794986094 + }, + "isLocked": false, + "linkedName": "Center Barge" + }, + { + "anchor": { + "x": 6.4, + "y": 3.87 + }, + "prevControl": { + "x": 6.026795917406956, + "y": 3.908027620257666 + }, + "nextControl": { + "x": 6.738875806428689, + "y": 3.8354702585463607 + }, + "isLocked": false, + "linkedName": null + }, + { + "anchor": { + "x": 5.8, + "y": 3.870440340909091 + }, + "prevControl": { + "x": 6.249591809778119, + "y": 3.9170055453356905 + }, + "nextControl": null, + "isLocked": false, + "linkedName": "Branch G" + } + ], + "rotationTargets": [], + "constraintZones": [], + "pointTowardsZones": [], + "eventMarkers": [ + { + "name": "elevator_l4", + "waypointRelativePos": 0.6, + "endWaypointRelativePos": null, + "command": { + "type": "named", + "data": { + "name": "elevator_l4" + } + } + } + ], + "globalConstraints": { + "maxVelocity": 2.0, + "maxAcceleration": 2.0, + "maxAngularVelocity": 540.0, + "maxAngularAcceleration": 720.0, + "nominalVoltage": 12.0, + "unlimited": false + }, + "goalEndState": { + "velocity": 0, + "rotation": 180.0 + }, + "reversed": false, + "folder": "Starting Paths", + "idealStartingState": { + "velocity": 0, + "rotation": 180.0 + }, + "useDefaultConstraints": false +} \ No newline at end of file diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index e0836e0..530fabb 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -21,6 +21,7 @@ public final class Constants { public static final Mode simMode = Mode.SIM; public static final Mode currentMode = RobotBase.isReal() ? Mode.REAL : simMode; public static final boolean DEVBOT = RobotBase.isSimulation() ? true : false; + public static final boolean TUNING_MODE = true; public static final double TotalMemory = 100 * 1024 * 1024; @@ -32,6 +33,4 @@ public static enum Mode { /** Replaying from a log file. */ REPLAY } - - public static final double MAX_SYNC_WAIT = 0.015, MAX_INITIAL_SYNC_WAIT = 1; } diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index cd78f40..e0e1ba8 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -8,8 +8,10 @@ package frc.robot; import com.ctre.phoenix6.SignalLogger; +import com.ctre.phoenix6.Utils; import edu.wpi.first.util.ClassPreloader; import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.CommandScheduler; import frc.robot.util.Elastic; @@ -117,13 +119,14 @@ public Robot() { @Override public void robotPeriodic() { val rt = Runtime.getRuntime(); - val usedMem = (double) (rt.totalMemory() - rt.freeMemory()); Logger.recordOutput("Robot/Utilized Memory %", usedMem / (double) rt.totalMemory()); + Logger.recordOutput( + "Robot/CurrentToFPGATimeOffset", Timer.getFPGATimestamp() - Utils.getCurrentTimeSeconds()); Logger.runEveryN( - // run every second - 2500, + // run twice every minute + 1500, () -> { if (usedMem >= 0.9 * Constants.TotalMemory) { // If memory utilization is too high, send an alert to increase allocated heap size in diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 98aa066..1565ead 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -7,9 +7,6 @@ package frc.robot; -import static frc.robot.subsystems.vision.VisionConstants.CAMERA_NAMES; -import static frc.robot.subsystems.vision.VisionConstants.ROBOT_TO_CAMERAS; - import com.pathplanner.lib.auto.AutoBuilder; import com.pathplanner.lib.auto.NamedCommands; import com.pathplanner.lib.commands.PathPlannerAuto; @@ -25,30 +22,17 @@ import edu.wpi.first.wpilibj2.command.button.CommandXboxController; import edu.wpi.first.wpilibj2.command.button.Trigger; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; -import frc.robot.FieldConstants.ReefSide; import frc.robot.autopilot.AutopilotCommands; import frc.robot.commands.DriveCommands; +import frc.robot.commands.JoystickApproachCommand; import frc.robot.generated.TunerConstants; import frc.robot.subsystems.Superstructure; import frc.robot.subsystems.algae_arm.AlgaeArm; -import frc.robot.subsystems.climber.Climber; -import frc.robot.subsystems.climber.ClimberIOReal; -import frc.robot.subsystems.drive.Drive; -import frc.robot.subsystems.drive.GyroIO; -import frc.robot.subsystems.drive.GyroIOPigeon2; -import frc.robot.subsystems.drive.ModuleIO; -import frc.robot.subsystems.drive.ModuleIOSim; -import frc.robot.subsystems.drive.ModuleIOTalonFX; -import frc.robot.subsystems.elevator.Elevator; +import frc.robot.subsystems.climber.*; +import frc.robot.subsystems.drive.*; +import frc.robot.subsystems.elevator.*; import frc.robot.subsystems.elevator.Elevator.Setpoint; -import frc.robot.subsystems.elevator.ElevatorIO; -import frc.robot.subsystems.elevator.ElevatorIOSim; -import frc.robot.subsystems.elevator.ElevatorIOTalonFX; -import frc.robot.subsystems.end_effector.BeamBreakIO; -import frc.robot.subsystems.end_effector.EndEffector; -import frc.robot.subsystems.vision.Vision; -import frc.robot.subsystems.vision.VisionIOPhotonVision; -import frc.robot.subsystems.vision.VisionIOPhotonVisionSim; +import frc.robot.subsystems.end_effector.*; import frc.robot.util.PositionUtils; import frc.robot.util.io.talon.TalonFXIO; import java.util.Set; @@ -67,8 +51,8 @@ public class RobotContainer { // Subsystems private final Drive drive; - @SuppressWarnings("unused") - private final Vision vision; + // @SuppressWarnings("unused") + // private final Vision vision; private final EndEffector endEffector; private final Elevator elevator; @@ -94,7 +78,7 @@ private static enum ControlMode { private final Trigger coralMode = new Trigger(() -> controlMode == ControlMode.Coral); private final Trigger algaeMode = new Trigger(() -> controlMode == ControlMode.Algae); - /** The container for the robot. Contains subsystems, OI devices, and commands. */ + /** The container for the robot. Contains subsystems, IO devices, and commands. */ public RobotContainer() { switch (Constants.currentMode) { case REAL: @@ -106,11 +90,11 @@ public RobotContainer() { new ModuleIOTalonFX(TunerConstants.FrontRight), new ModuleIOTalonFX(TunerConstants.BackLeft), new ModuleIOTalonFX(TunerConstants.BackRight)); - vision = - new Vision( - drive, - new VisionIOPhotonVision(CAMERA_NAMES[0], ROBOT_TO_CAMERAS[0]), - new VisionIOPhotonVision(CAMERA_NAMES[1], ROBOT_TO_CAMERAS[1])); + // vision = + // new Vision( + // drive, + // new VisionIOPhotonVisionExt(0, drive::getPoseAtTime), + // new VisionIOPhotonVisionExt(1, drive::getPoseAtTime)); endEffector = EndEffector.createReal(); elevator = new Elevator(new ElevatorIOTalonFX()); algaeArm = AlgaeArm.createReal(); @@ -126,11 +110,13 @@ public RobotContainer() { new ModuleIOSim(TunerConstants.FrontRight), new ModuleIOSim(TunerConstants.BackLeft), new ModuleIOSim(TunerConstants.BackRight)); - vision = - new Vision( - drive, - new VisionIOPhotonVisionSim(CAMERA_NAMES[0], ROBOT_TO_CAMERAS[0], drive::getPose), - new VisionIOPhotonVisionSim(CAMERA_NAMES[1], ROBOT_TO_CAMERAS[1], drive::getPose)); + // vision = + // new Vision( + // drive, + // new VisionIOPhotonVisionSim(CAMERA_NAMES[0], ROBOT_TO_CAMERAS[0], + // drive::getPose), + // new VisionIOPhotonVisionSim(CAMERA_NAMES[1], ROBOT_TO_CAMERAS[1], + // drive::getPose)); endEffector = EndEffector.createSim(); elevator = new Elevator(new ElevatorIOSim()); @@ -150,7 +136,7 @@ public RobotContainer() { new ModuleIO() {}, new ModuleIO() {}, new ModuleIO() {}); - vision = new Vision(drive, inputs -> {}, inputs -> {}); + // vision = new Vision(drive, inputs -> {}, inputs -> {}); endEffector = new EndEffector(new TalonFXIO() {}, new BeamBreakIO() {}, new BeamBreakIO() {}, false); elevator = new Elevator(new ElevatorIO() {}); @@ -169,6 +155,7 @@ public RobotContainer() { // Only need to initialize mirrored paths because own side is included by buildAutoChooser autoChooser.addOption("Opps Side 4pc", new PathPlannerAuto("Own Side 4pc", true)); + autoChooser.addOption("Middle H", new PathPlannerAuto("Middle G", true)); // Only initialize dev autos while working with a devbot if (Constants.DEVBOT) { @@ -258,32 +245,32 @@ private void configureButtonBindings() { controller.y().and(algaeMode).whileTrue(superstructure.bargeShot()).onFalse(deferredStow); // Initialize coral mode auto align - controller - .leftBumper() - .and(coralMode) - .whileTrue( - joystickApproach( - () -> FieldConstants.getNearestReefBranch(drive.getPose(), ReefSide.LEFT))); - controller - .rightBumper() - .and(coralMode) - .whileTrue( - joystickApproach( - () -> FieldConstants.getNearestReefBranch(drive.getPose(), ReefSide.RIGHT))); + // controller + // .leftBumper() + // .and(coralMode) + // .whileTrue( + // joystickApproach( + // () -> FieldConstants.getNearestReefBranch(drive.getPose(), ReefSide.LEFT))); + // controller + // .rightBumper() + // .and(coralMode) + // .whileTrue( + // joystickApproach( + // () -> FieldConstants.getNearestReefBranch(drive.getPose(), ReefSide.RIGHT))); // Initialize algae mode auto align - controller - .leftBumper() - .and(algaeMode) - .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); - controller - .rightBumper() - .and(algaeMode) - .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); - controller - .a() - .and(algaeMode) - .whileTrue(AutopilotCommands.driveToBarge(drive, () -> -controller.getLeftX())); + // controller + // .leftBumper() + // .and(algaeMode) + // .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); + // controller + // .rightBumper() + // .and(algaeMode) + // .whileTrue(joystickApproach(() -> FieldConstants.getNearestReefFace(drive.getPose()))); + // controller + // .a() + // .and(algaeMode) + // .whileTrue(AutopilotCommands.driveToBarge(drive, () -> -controller.getLeftX())); // Initialize barge algae mode & processor scoring controller @@ -293,7 +280,10 @@ private void configureButtonBindings() { .onFalse( Commands.runOnce(() -> controlMode = ControlMode.Coral).alongWith(algaeArm.stow())); - controller.rightTrigger().and(algaeMode).whileTrue(endEffector.scoreProcessor()); + controller + .rightTrigger() + .and(algaeMode) + .whileTrue(endEffector.scoreProcessor().alongWith(algaeArm.deploy())); // Initialize climbing commands controller.povDown().whileTrue(climber.deploy()); @@ -320,7 +310,7 @@ private void configureAutoCommands() { } private Command joystickApproach(Supplier approach) { - return new DriveCommands.JoystickApproachCommand(drive, () -> -controller.getLeftY(), approach); + return new JoystickApproachCommand(drive, () -> -controller.getLeftY(), approach); } /** diff --git a/src/main/java/frc/robot/autopilot/DriveToBargeCommand.java b/src/main/java/frc/robot/autopilot/DriveToBargeCommand.java index 14a9e87..8f68c2b 100644 --- a/src/main/java/frc/robot/autopilot/DriveToBargeCommand.java +++ b/src/main/java/frc/robot/autopilot/DriveToBargeCommand.java @@ -24,7 +24,9 @@ final class DriveToBargeCommand extends Command { @Override public void initialize() { - targetX = AllianceFlipUtil.applyX(FieldConstants.startingLineX - Units.inchesToMeters(13)); + targetX = AllianceFlipUtil.applyX(FieldConstants.startingLineX - Units.inchesToMeters(12)); + Logger.recordOutput("AutoAlign/DriveToBarge/TargetX", targetX); + targetRotation = AllianceFlipUtil.apply(Rotation2d.kZero); } diff --git a/src/main/java/frc/robot/autopilot/DriveToPoseCommand.java b/src/main/java/frc/robot/autopilot/DriveToPoseCommand.java index a304c70..67dc212 100644 --- a/src/main/java/frc/robot/autopilot/DriveToPoseCommand.java +++ b/src/main/java/frc/robot/autopilot/DriveToPoseCommand.java @@ -17,8 +17,10 @@ public class DriveToPoseCommand extends Command { private final String logKey; @Getter private Pose2d targetPose; + private double initialDistance; private Translation2d targetTranslation; private Rotation2d targetRotation; + private boolean running = false; public DriveToPoseCommand(String name, Drive drive, Supplier poseSupplier) { setName(name); @@ -39,6 +41,8 @@ public void initialize() { targetPose = poseSupplier.get(); targetTranslation = targetPose.getTranslation(); targetRotation = targetPose.getRotation(); + initialDistance = drive.getPose().getTranslation().getDistance(targetTranslation); + running = true; Logger.recordOutput(logKey + "/Target", targetPose); } @@ -65,4 +69,23 @@ public void execute() { drive.runVelocity(speeds); } + + @Override + public void end(boolean interrupted) { + running = false; + } + + public boolean isRunning() { + return running; + } + + public boolean withinTolerance(double tolerance) { + return drive.getPose().getTranslation().getDistance(targetTranslation) <= tolerance; + } + + public boolean madeProgress(double progress) { + double newDist = drive.getPose().getTranslation().getDistance(targetTranslation); + + return (initialDistance - newDist) / initialDistance >= progress; + } } diff --git a/src/main/java/frc/robot/commands/DriveCommands.java b/src/main/java/frc/robot/commands/DriveCommands.java index 58d50d1..38735d8 100644 --- a/src/main/java/frc/robot/commands/DriveCommands.java +++ b/src/main/java/frc/robot/commands/DriveCommands.java @@ -7,12 +7,8 @@ package frc.robot.commands; -import static frc.robot.subsystems.drive.Drive.PP_CONSTRAINTS; - -import com.pathplanner.lib.auto.AutoBuilder; import com.pathplanner.lib.commands.PathPlannerAuto; import edu.wpi.first.math.MathUtil; -import edu.wpi.first.math.controller.ProfiledPIDController; import edu.wpi.first.math.filter.SlewRateLimiter; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; @@ -21,11 +17,10 @@ import edu.wpi.first.math.kinematics.ChassisSpeeds; import edu.wpi.first.math.trajectory.TrapezoidProfile; import edu.wpi.first.math.util.Units; -import edu.wpi.first.wpilibj.DriverStation; -import edu.wpi.first.wpilibj.DriverStation.Alliance; import edu.wpi.first.wpilibj.Timer; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; +import frc.robot.autopilot.DriveToPoseCommand; import frc.robot.subsystems.drive.Drive; import frc.robot.util.AllianceFlipUtil; import java.text.DecimalFormat; @@ -39,24 +34,24 @@ public final class DriveCommands { public static final double DEADBAND = 0.1; - private static final double DRIVE_KP = 2; - private static final double DRIVE_KD = 0; - private static final double ANGLE_KP = 2; - private static final double ANGLE_KD = 0; - private static final double ANGLE_TOLERANCE = Units.degreesToRadians(2.5); - private static final double POSITION_TOLERANCE = 0.0125; + static final double DRIVE_KP = 2; + static final double DRIVE_KD = 0; + static final double ANGLE_KP = 2; + static final double ANGLE_KD = 0; + static final double ANGLE_TOLERANCE = Units.degreesToRadians(2.5); + static final double POSITION_TOLERANCE = 0.0125; + static final TrapezoidProfile.Constraints ANGLE_CONSTRAINTS = + new TrapezoidProfile.Constraints(8, 20); + static final TrapezoidProfile.Constraints DRIVE_CONSTRAINTS = + new TrapezoidProfile.Constraints(4.73, 5); private static final double FF_START_DELAY = 2.0; // Secs private static final double FF_RAMP_RATE = 0.1; // Volts/Sec private static final double WHEEL_RADIUS_MAX_VELOCITY = 0.25; // Rad/Sec private static final double WHEEL_RADIUS_RAMP_RATE = 0.05; // Rad/Sec^2 - private static final TrapezoidProfile.Constraints ANGLE_CONSTRAINTS = - new TrapezoidProfile.Constraints(8, 20); - private static final TrapezoidProfile.Constraints DRIVE_CONSTRAINTS = - new TrapezoidProfile.Constraints(4.73, 5); private DriveCommands() {} - private static Translation2d getLinearVelocityFromJoysticks(double x, double y) { + static Translation2d getLinearVelocityFromJoysticks(double x, double y) { // Apply deadband double linearMagnitude = MathUtil.applyDeadband(Math.hypot(x, y), DEADBAND); Rotation2d linearDirection = new Rotation2d(Math.atan2(y, x)); @@ -91,135 +86,42 @@ public static Command joystickDrive( omega = Math.copySign(omega * omega, omega); // Convert to field relative speeds & send command - ChassisSpeeds speeds = + val speeds = new ChassisSpeeds( linearVelocity.getX() * drive.getMaxLinearSpeedMetersPerSec(), linearVelocity.getY() * drive.getMaxLinearSpeedMetersPerSec(), omega * drive.getMaxAngularSpeedRadPerSec()); - boolean isFlipped = - DriverStation.getAlliance().isPresent() - && DriverStation.getAlliance().get() == Alliance.Red; drive.runVelocity( ChassisSpeeds.fromFieldRelativeSpeeds( speeds, - isFlipped + AllianceFlipUtil.shouldFlip() ? drive.getRotation().plus(new Rotation2d(Math.PI)) : drive.getRotation())); }, drive); } - public static class JoystickApproachCommand extends Command { - private final Drive drive; - private final DoubleSupplier ySupplier; - private final Supplier targetSupplier; - - private Pose2d targetPose2d; - private Pose2d relativePose2d; - private Rotation2d targetRotation2d; - - boolean running = false; - - static final double DEADBAND = 0.1; - - private final ProfiledPIDController angleController = - new ProfiledPIDController(ANGLE_KP, 0, ANGLE_KD, ANGLE_CONSTRAINTS); - - private final ProfiledPIDController alignController = - new ProfiledPIDController(DRIVE_KP, 0, DRIVE_KD, DRIVE_CONSTRAINTS); - - public JoystickApproachCommand( - Drive drive, DoubleSupplier ySupplier, Supplier targetSupplier) { - this.drive = drive; - this.ySupplier = ySupplier; - this.targetSupplier = targetSupplier; - - alignController.setTolerance(POSITION_TOLERANCE); - angleController.setTolerance(ANGLE_TOLERANCE); - - angleController.enableContinuousInput(-Math.PI, Math.PI); - alignController.setGoal(0); - - addRequirements(drive); - } - - // Called when the command is initially scheduled. - @Override - public void initialize() { - alignController.reset(0); - angleController.reset(drive.getPose().getRotation().getRadians()); - targetPose2d = targetSupplier.get(); - - Logger.recordOutput("AutoAlign/Approach/Target", targetPose2d); - } - - // Called every time the scheduler runs while the command is scheduled. - @Override - public void execute() { - running = true; - relativePose2d = drive.getPose().relativeTo(targetPose2d); - targetRotation2d = targetPose2d.getRotation(); - - // Calculate lateral linear velocity - Translation2d offsetVector = - new Translation2d(0, alignController.calculate(relativePose2d.getY())); - - // Calculate total linear velocity - Translation2d linearVelocity = - getLinearVelocityFromJoysticks(-ySupplier.getAsDouble(), 0) - .times(drive.getMaxLinearSpeedMetersPerSec()) - .plus(offsetVector) - .rotateBy(targetRotation2d); - - // Calculate angular speed - double omega = - angleController.calculate( - drive.getRotation().getRadians(), - targetRotation2d.rotateBy(Rotation2d.k180deg).getRadians()); - - // Convert to field relative speeds & send command - ChassisSpeeds speeds = new ChassisSpeeds(linearVelocity.getX(), linearVelocity.getY(), omega); - - drive.runVelocity(ChassisSpeeds.fromFieldRelativeSpeeds(speeds, drive.getRotation())); - } - - // Called once the command ends or is interrupted. - @Override - public void end(boolean interrupted) { - running = false; - } - - // Returns true when withing a lateral tolerance - public boolean withinTolerance(double dist) { - return running ? Math.abs(relativePose2d.getY()) < dist : false; - } - } - public static Command driveToAutoStart(Drive drive, Supplier commandSupplier) { - return drive - .defer( - () -> { - val autoCommand = commandSupplier.get(); - - if (autoCommand instanceof PathPlannerAuto auto) { - val autoStart = auto.getStartingPose(); - - Logger.recordOutput("AutoAlign/DriveToAuto/Enabled", true); - - Logger.recordOutput("AutoAlign/DriveToAuto/AutoStart", autoStart); - - val startPose = AllianceFlipUtil.apply(auto.getStartingPose()); - - Logger.recordOutput("AutoAlign/DriveToAuto/Target", startPose); - return AutoBuilder.pathfindToPose(startPose, PP_CONSTRAINTS); - } - - Logger.recordOutput("AutoAlign/DriveToAuto/Enabled", false); - - return Commands.none(); - }) - .withName("Drive To Auto Start") - .finallyDo(() -> Logger.recordOutput("AutoAlign/DriveToAuto/Enabled", false)); + return new DriveToPoseCommand( + "DriveToAuto", + drive, + () -> { + val cmd = commandSupplier.get(); + if (cmd == null) return drive.getPose(); + + Logger.recordOutput( + "AutoAlign/DriveToAuto/AutoClassName", cmd.getClass().getSimpleName()); + + if (cmd instanceof final PathPlannerAuto auto) { + Logger.recordOutput("AutoAlign/DriveToAuto/CmdIsAuto", true); + // Return the auto starting pose + return auto.getStartingPose(); + } else { + Logger.recordOutput("AutoAlign/DriveToAuto/CmdIsAuto", false); + // Drive nowhere + return drive.getPose(); + } + }); } /** diff --git a/src/main/java/frc/robot/commands/JoystickApproachCommand.java b/src/main/java/frc/robot/commands/JoystickApproachCommand.java new file mode 100644 index 0000000..ff43ba9 --- /dev/null +++ b/src/main/java/frc/robot/commands/JoystickApproachCommand.java @@ -0,0 +1,101 @@ +package frc.robot.commands; + +import static frc.robot.commands.DriveCommands.*; + +import edu.wpi.first.math.controller.ProfiledPIDController; +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.geometry.Translation2d; +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.wpilibj2.command.Command; +import frc.robot.subsystems.drive.Drive; +import java.util.function.DoubleSupplier; +import java.util.function.Supplier; +import org.littletonrobotics.junction.Logger; + +public final class JoystickApproachCommand extends Command { + private final Drive drive; + private final DoubleSupplier ySupplier; + private final Supplier targetSupplier; + + private Pose2d targetPose2d; + private Pose2d relativePose2d; + private Rotation2d targetRotation2d; + + boolean running = false; + + static final double DEADBAND = 0.1; + + private final ProfiledPIDController angleController = + new ProfiledPIDController(ANGLE_KP, 0, ANGLE_KD, ANGLE_CONSTRAINTS); + + private final ProfiledPIDController alignController = + new ProfiledPIDController(DRIVE_KP, 0, DRIVE_KD, DRIVE_CONSTRAINTS); + + public JoystickApproachCommand( + Drive drive, DoubleSupplier ySupplier, Supplier targetSupplier) { + this.drive = drive; + this.ySupplier = ySupplier; + this.targetSupplier = targetSupplier; + + alignController.setTolerance(POSITION_TOLERANCE); + angleController.setTolerance(ANGLE_TOLERANCE); + + angleController.enableContinuousInput(-Math.PI, Math.PI); + alignController.setGoal(0); + + addRequirements(drive); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + alignController.reset(0); + angleController.reset(drive.getPose().getRotation().getRadians()); + targetPose2d = targetSupplier.get(); + + Logger.recordOutput("AutoAlign/Approach/Target", targetPose2d); + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + running = true; + relativePose2d = drive.getPose().relativeTo(targetPose2d); + targetRotation2d = targetPose2d.getRotation(); + + // Calculate lateral linear velocity + Translation2d offsetVector = + new Translation2d(0, alignController.calculate(relativePose2d.getY())); + + // Calculate total linear velocity + Translation2d linearVelocity = + getLinearVelocityFromJoysticks(-ySupplier.getAsDouble(), 0) + .div(2) + .times(drive.getMaxLinearSpeedMetersPerSec()) + .plus(offsetVector) + .rotateBy(targetRotation2d); + + // Calculate angular speed + double omega = + angleController.calculate( + drive.getRotation().getRadians(), + targetRotation2d.rotateBy(Rotation2d.k180deg).getRadians()); + + // Convert to field relative speeds & send command + ChassisSpeeds speeds = new ChassisSpeeds(linearVelocity.getX(), linearVelocity.getY(), omega); + + drive.runVelocity(ChassisSpeeds.fromFieldRelativeSpeeds(speeds, drive.getRotation())); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + running = false; + } + + // Returns true when withing a lateral tolerance + public boolean withinTolerance(double dist) { + return running ? Math.abs(relativePose2d.getY()) < dist : false; + } +} diff --git a/src/main/java/frc/robot/generated/TunerConstants.java b/src/main/java/frc/robot/generated/TunerConstants.java index e3cc391..ba310eb 100644 --- a/src/main/java/frc/robot/generated/TunerConstants.java +++ b/src/main/java/frc/robot/generated/TunerConstants.java @@ -32,7 +32,7 @@ public final class TunerConstants { // When using closed-loop control, the drive motor uses the control // output type specified by SwerveModuleConstants.DriveMotorClosedLoopOutput private static final Slot0Configs driveGains = - new Slot0Configs().withKP(60).withKI(0).withKD(0).withKS(5).withKV(0); + new Slot0Configs().withKP(60).withKI(0).withKD(0).withKS(2.16).withKV(0); // The closed-loop output type to use for the steer motors; // This affects the PID/FF gains for the steer motors @@ -80,7 +80,7 @@ public final class TunerConstants { // Theoretical free speed (m/s) at 12 V applied output; // This needs to be tuned to your individual robot - public static final LinearVelocity kSpeedAt12Volts = MetersPerSecond.of(4.73); + public static final LinearVelocity kSpeedAt12Volts = MetersPerSecond.of(1); // Every 1 rotation of the azimuth results in kCoupleRatio drive motor turns; // This may need to be tuned to your individual robot diff --git a/src/main/java/frc/robot/subsystems/Superstructure.java b/src/main/java/frc/robot/subsystems/Superstructure.java index c207836..37c8ff2 100644 --- a/src/main/java/frc/robot/subsystems/Superstructure.java +++ b/src/main/java/frc/robot/subsystems/Superstructure.java @@ -21,7 +21,7 @@ public Superstructure(EndEffector endEffector, Elevator elevator, AlgaeArm algae public Command bargeShot() { return Commands.parallel( elevator.setTarget(Setpoint.Barge), - Commands.waitSeconds(0.35).andThen(endEffector.scoreBarge(), algaeArm.stow())); + Commands.waitSeconds(0.15).andThen(endEffector.scoreBarge(), algaeArm.stow())); } public Command scoreCoral(boolean inAuto) { diff --git a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java index ae35c37..a7b42c4 100644 --- a/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java +++ b/src/main/java/frc/robot/subsystems/elevator/ElevatorConstants.java @@ -22,9 +22,9 @@ public static final class Trapezoidal { } public static final class Exponential { - public static final AngularAcceleration kMaxAcceleration = RotationsPerSecondPerSecond.of(50); + public static final AngularAcceleration kMaxAcceleration = RotationsPerSecondPerSecond.of(25); public static final Velocity kMaxJerk = - RotationsPerSecondPerSecond.per(Second).of(200); + RotationsPerSecondPerSecond.per(Second).of(100); public static final double kExpo_kV = 0.45; public static final double kExpo_kA = 0.15; @@ -46,9 +46,9 @@ public static final class Exponential { public static final Slot1Configs kStowGains = new Slot1Configs() .withGravityType(GravityTypeValue.Elevator_Static) - .withKP(25) + .withKP(50) .withKI(0) - .withKD(5) + .withKD(7.5) .withKV(2.33) .withKA(0.05) .withKG(0.8) diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java index 7baafd9..e072c2b 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffector.java @@ -130,7 +130,7 @@ public Command teleIntake() { } public Command autoJogCoral() { - return run(this::jogCoral).finallyDo(this::resetState); + return runEnd(this::jogCoral, this::resetState); } public Command autoIntake() { @@ -149,8 +149,7 @@ public Command teleScoreCoral(BooleanSupplier ejectFast) { public Command autoScoreCoral(BooleanSupplier elevatorIsAtHeight) { return Commands.sequence( - // Commands.waitUntil(elevatorIsAtHeight), - // Commands.print("Elevator is at height"), + Commands.waitUntil(elevatorIsAtHeight), Commands.waitSeconds(0.25), runOnce(() -> motorIO.setDutyCycle(kAutoEjectSpeed)), Commands.race(Commands.waitSeconds(0.2), Commands.waitUntil(() -> !exitIO.isBroken())), @@ -170,4 +169,20 @@ public Command scoreProcessor() { public Command intakeAlgae() { return run(() -> motorIO.setDutyCycle(kIdleSpeed)).beforeStarting(this::resetState); } + + public boolean hasCoral() { + return entranceInputs.isBroken || exitInputs.isBroken; + } + + public boolean entranceDetected() { + return entranceInputs.isBroken; + } + + public boolean exitDetected() { + return exitInputs.isBroken; + } + + public boolean coralInPosition() { + return coralInPosition; + } } diff --git a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java index 04270c2..b995b96 100644 --- a/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java +++ b/src/main/java/frc/robot/subsystems/end_effector/EndEffectorConstants.java @@ -8,7 +8,7 @@ public final class EndEffectorConstants { public static final CANBus kMotorBus = Constants.kRIOBus; public static final double kFastEjectSpeed = .9, kAutoEjectSpeed = 1, - kSlowEjectSpeed = .25, + kSlowEjectSpeed = .2, kAlgaeBargeSpeed = 1, kAlgaeProcessorSpeed = 0.3, kIdleSpeed = .175, diff --git a/src/main/java/frc/robot/subsystems/vision/Vision.java b/src/main/java/frc/robot/subsystems/vision/Vision.java index f5740ab..9ae7c6c 100644 --- a/src/main/java/frc/robot/subsystems/vision/Vision.java +++ b/src/main/java/frc/robot/subsystems/vision/Vision.java @@ -43,8 +43,7 @@ public Vision(VisionConsumer consumer, VisionIO... io) { this.disconnectedAlerts = new Alert[io.length]; for (int i = 0; i < inputs.length; i++) { disconnectedAlerts[i] = - new Alert( - "Vision camera " + Integer.toString(i) + " is disconnected.", AlertType.kWarning); + new Alert("Vision camera " + CAMERA_NAMES[i] + " is disconnected.", AlertType.kWarning); } SmartDashboard.putBoolean("Use Vision", true); @@ -54,7 +53,7 @@ public Vision(VisionConsumer consumer, VisionIO... io) { public void periodic() { for (int i = 0; i < io.length; i++) { io[i].updateInputs(inputs[i]); - Logger.processInputs("Vision/Camera" + Integer.toString(i), inputs[i]); + Logger.processInputs("Vision/" + CAMERA_NAMES[i] + "Camera", inputs[i]); } boolean enableVision = SmartDashboard.getBoolean("Use Vision", true); diff --git a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java index 316ebfc..a0e82f8 100644 --- a/src/main/java/frc/robot/subsystems/vision/VisionConstants.java +++ b/src/main/java/frc/robot/subsystems/vision/VisionConstants.java @@ -8,6 +8,8 @@ import edu.wpi.first.wpilibj.Filesystem; import frc.robot.util.Statics; import java.nio.file.Paths; +import java.util.Optional; +import org.photonvision.PhotonPoseEstimator.ConstrainedSolvepnpParams; import org.photonvision.PhotonPoseEstimator.PoseStrategy; public final class VisionConstants { @@ -23,6 +25,8 @@ public final class VisionConstants { public static final PoseStrategy MULTI_TAG_POSE_STRATEGY = PoseStrategy.MULTI_TAG_PNP_ON_COPROCESSOR; public static final PoseStrategy SINGLE_TAG_POSE_STRATEGY = PoseStrategy.PNP_DISTANCE_TRIG_SOLVE; + public static final Optional CONSTRAINED_SOLVEPNP_PARAMS = + Optional.of(new ConstrainedSolvepnpParams(false, 10)); public static final String[] CAMERA_NAMES = new String[] {"Left", "Right"}; public static final Transform3d[] ROBOT_TO_CAMERAS = @@ -40,9 +44,9 @@ public final class VisionConstants { }; public static final double maxAmbiguity = 0.3; - public static final double maxZError = 0.75; - public static final double linearStdDevBaseline = 0.03; - public static final double angularStdDevBaseline = 0.2; + public static final double maxZError = 0.5; + public static final double linearStdDevBaseline = Units.inchesToMeters(5); + public static final double angularStdDevBaseline = Units.degreesToRadians(10); - public static final double[] cameraStdDevFactors = new double[] {1.2, 1}; + public static final double[] cameraStdDevFactors = new double[] {1.2, 1.2}; } diff --git a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionExt.java b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionExt.java index 3288c76..d7870a4 100644 --- a/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionExt.java +++ b/src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVisionExt.java @@ -5,6 +5,7 @@ import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Pose3d; import edu.wpi.first.math.geometry.Transform3d; +import edu.wpi.first.wpilibj.Timer; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -18,6 +19,8 @@ import org.photonvision.targeting.PhotonPipelineResult; public final class VisionIOPhotonVisionExt implements VisionIO { + // Pose buffer of SwerveDrivePoseEstimator lasts for 1.5 seconds + private static final double LATENCY_CUTOFF = 1.5; protected final PhotonCamera camera; private final Transform3d robotToCamera; private final PhotonPoseEstimator poseEstimator; @@ -52,11 +55,14 @@ public void updateInputs(VisionIOInputs inputs) { for (val update : camera.getAllUnreadResults()) { val timestamp = update.getTimestampSeconds(); + // Skip any vision updates with latency >= 1.5 seconds. + if (Timer.getFPGATimestamp() - timestamp > LATENCY_CUTOFF) return; + val robotPoseAtTime = robotPoseGetter.apply(timestamp); poseEstimator.setLastPose(robotPoseAtTime); poseEstimator.addHeadingData(timestamp, robotPoseAtTime.getRotation()); - val result = poseEstimator.update(update, camMatrix, distCoeffs); + val result = poseEstimator.update(update, camMatrix, distCoeffs, CONSTRAINED_SOLVEPNP_PARAMS); result.ifPresentOrElse( this::handlePoseEstimation, @@ -93,8 +99,8 @@ private void handlePoseEstimation(EstimatedRobotPose estimation) { tagsUsed.add(id); // INVARIANT: Because the PhotonPoseEstimator only sees the tags we give it (so - // APRILTAG_LAYOUT), - // we do not need to check if the tags used are present in the layout. + // APRILTAG_LAYOUT), we do not need to check if the tags used are present in the + // layout. ambiguity += target.getPoseAmbiguity(); tagDistance += target.bestCameraToTarget.getTranslation().getNorm(); } diff --git a/src/main/java/frc/robot/util/DeltaTimeCalculator.java b/src/main/java/frc/robot/util/DeltaTimeCalculator.java new file mode 100644 index 0000000..5aa89da --- /dev/null +++ b/src/main/java/frc/robot/util/DeltaTimeCalculator.java @@ -0,0 +1,16 @@ +package frc.robot.util; + +import edu.wpi.first.wpilibj.RobotController; +import lombok.val; + +public final class DeltaTimeCalculator { + private double lastTimestamp = RobotController.getFPGATime() / 1e6; + + public double calculate() { + val newTimestamp = RobotController.getFPGATime() / 1e6; + val delta = newTimestamp - lastTimestamp; + lastTimestamp = newTimestamp; + + return delta; + } +} diff --git a/src/main/java/frc/robot/util/LocalADStarAK.java b/src/main/java/frc/robot/util/LocalADStarAK.java index d6e9a41..1d420a7 100644 --- a/src/main/java/frc/robot/util/LocalADStarAK.java +++ b/src/main/java/frc/robot/util/LocalADStarAK.java @@ -1,9 +1,4 @@ -// Copyright (c) 2021-2025 Littleton Robotics -// http://github.com/Mechanical-Advantage -// -// Use of this source code is governed by a BSD -// license that can be found in the LICENSE file -// at the root directory of this project. +// Copyright (c) 2025 FRC 6324 The Blue Devils package frc.robot.util; @@ -12,21 +7,24 @@ import com.pathplanner.lib.path.PathPlannerPath; import com.pathplanner.lib.path.PathPoint; import com.pathplanner.lib.pathfinding.LocalADStar; -import com.pathplanner.lib.pathfinding.Pathfinder; import edu.wpi.first.math.Pair; import edu.wpi.first.math.geometry.Translation2d; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import lombok.val; import org.littletonrobotics.junction.LogTable; import org.littletonrobotics.junction.Logger; import org.littletonrobotics.junction.inputs.LoggableInputs; -// NOTE: This file is available at -// https://gist.github.com/mjansen4857/a8024b55eb427184dbd10ae8923bd57d - -public class LocalADStarAK implements Pathfinder { - private final ADStarIO io = new ADStarIO(); +/** + * A helper class which wrapps pathplanner's AD* ({@link LocalADStar}) implementation with logging + * enabled for use with AdvantageKit's log replay. Users not using the AdvantageKit logging + * framework should not use this class; instead, use the regular {@link LocalADStar} + */ +public class LocalADStarAK extends LocalADStar implements LoggableInputs { + private boolean isNewPathAvailable = false; + private List currentPathPoints = Collections.emptyList(); /** * Get if a new path has been calculated since the last time a path was retrieved @@ -36,12 +34,11 @@ public class LocalADStarAK implements Pathfinder { @Override public boolean isNewPathAvailable() { if (!Logger.hasReplaySource()) { - io.updateIsNewPathAvailable(); + isNewPathAvailable = super.isNewPathAvailable(); } - Logger.processInputs("LocalADStarAK", io); - - return io.isNewPathAvailable; + Logger.processInputs("LocalADStarAK", this); + return isNewPathAvailable; } /** @@ -54,16 +51,22 @@ public boolean isNewPathAvailable() { @Override public PathPlannerPath getCurrentPath(PathConstraints constraints, GoalEndState goalEndState) { if (!Logger.hasReplaySource()) { - io.updateCurrentPathPoints(constraints, goalEndState); + PathPlannerPath currentPath = super.getCurrentPath(constraints, goalEndState); + + if (currentPath != null) { + currentPathPoints = currentPath.getAllPathPoints(); + } else { + currentPathPoints = Collections.emptyList(); + } } - Logger.processInputs("LocalADStarAK", io); + Logger.processInputs("LocalADStarAK", this); - if (io.currentPathPoints.isEmpty()) { + if (currentPathPoints.isEmpty()) { return null; } - return PathPlannerPath.fromPathPoints(io.currentPathPoints, constraints, goalEndState); + return PathPlannerPath.fromPathPoints(currentPathPoints, constraints, goalEndState); } /** @@ -75,7 +78,7 @@ public PathPlannerPath getCurrentPath(PathConstraints constraints, GoalEndState @Override public void setStartPosition(Translation2d startPosition) { if (!Logger.hasReplaySource()) { - io.adStar.setStartPosition(startPosition); + super.setStartPosition(startPosition); } } @@ -88,7 +91,7 @@ public void setStartPosition(Translation2d startPosition) { @Override public void setGoalPosition(Translation2d goalPosition) { if (!Logger.hasReplaySource()) { - io.adStar.setGoalPosition(goalPosition); + super.setGoalPosition(goalPosition); } } @@ -104,57 +107,35 @@ public void setGoalPosition(Translation2d goalPosition) { public void setDynamicObstacles( List> obs, Translation2d currentRobotPos) { if (!Logger.hasReplaySource()) { - io.adStar.setDynamicObstacles(obs, currentRobotPos); + super.setDynamicObstacles(obs, currentRobotPos); } } - private static class ADStarIO implements LoggableInputs { - public LocalADStar adStar = new LocalADStar(); - public boolean isNewPathAvailable = false; - public List currentPathPoints = Collections.emptyList(); - - @Override - public void toLog(LogTable table) { - table.put("IsNewPathAvailable", isNewPathAvailable); - - double[] pointsLogged = new double[currentPathPoints.size() * 2]; - int idx = 0; - for (PathPoint point : currentPathPoints) { - pointsLogged[idx] = point.position.getX(); - pointsLogged[idx + 1] = point.position.getY(); - idx += 2; - } - - table.put("CurrentPathPoints", pointsLogged); + @Override + public void toLog(LogTable table) { + table.put("IsNewPathAvailable", isNewPathAvailable); + + val pointsLogged = new double[currentPathPoints.size() * 2]; + int idx = 0; + for (val point : currentPathPoints) { + pointsLogged[idx] = point.position.getX(); + pointsLogged[idx + 1] = point.position.getY(); + idx += 2; } - @Override - public void fromLog(LogTable table) { - isNewPathAvailable = table.get("IsNewPathAvailable", false); - - double[] pointsLogged = table.get("CurrentPathPoints", new double[0]); - - List pathPoints = new ArrayList<>(); - for (int i = 0; i < pointsLogged.length; i += 2) { - pathPoints.add( - new PathPoint(new Translation2d(pointsLogged[i], pointsLogged[i + 1]), null)); - } + table.put("CurrentPathPoints", pointsLogged); + } - currentPathPoints = pathPoints; - } + @Override + public void fromLog(LogTable table) { + isNewPathAvailable = table.get("IsNewPathAvailable", false); + val pointsLogged = table.get("CurrentPathPoints", new double[0]); - public void updateIsNewPathAvailable() { - isNewPathAvailable = adStar.isNewPathAvailable(); + List pathPoints = new ArrayList<>(pointsLogged.length / 2); + for (int i = 0; i < pointsLogged.length; i += 2) { + pathPoints.add(new PathPoint(new Translation2d(pointsLogged[i], pointsLogged[i + 1]), null)); } - public void updateCurrentPathPoints(PathConstraints constraints, GoalEndState goalEndState) { - PathPlannerPath currentPath = adStar.getCurrentPath(constraints, goalEndState); - - if (currentPath != null) { - currentPathPoints = currentPath.getAllPathPoints(); - } else { - currentPathPoints = Collections.emptyList(); - } - } + currentPathPoints = pathPoints; } } diff --git a/src/main/java/frc/robot/util/LoggedTunableNumber.java b/src/main/java/frc/robot/util/LoggedTunableNumber.java new file mode 100644 index 0000000..06d5133 --- /dev/null +++ b/src/main/java/frc/robot/util/LoggedTunableNumber.java @@ -0,0 +1,123 @@ +// Copyright (c) 2023 FRC 6328 +// http://github.com/Mechanical-Advantage +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file at +// the root directory of this project. + +package frc.robot.util; + +import frc.robot.Constants; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.DoubleSupplier; +import org.littletonrobotics.junction.networktables.LoggedNetworkNumber; + +/** + * Class for a tunable number. Gets value from dashboard in tuning mode, returns default if not or + * value not in dashboard. + */ +public class LoggedTunableNumber implements DoubleSupplier { + private static final String tableKey = "TunableNumbers"; + + private final String key; + private boolean hasDefault = false; + private double defaultValue; + private LoggedNetworkNumber dashboardNumber; + private final Map lastHasChangedValues = new HashMap<>(); + + /** + * Create a new LoggedTunableNumber + * + * @param dashboardKey Key on dashboard + */ + public LoggedTunableNumber(String dashboardKey) { + this.key = tableKey + "/" + dashboardKey; + } + + /** + * Create a new LoggedTunableNumber with the default value + * + * @param dashboardKey Key on dashboard + * @param defaultValue Default value + */ + public LoggedTunableNumber(String dashboardKey, double defaultValue) { + this(dashboardKey); + initDefault(defaultValue); + } + + /** + * Set the default value of the number. The default value can only be set once. + * + * @param defaultValue The default value + */ + public void initDefault(double defaultValue) { + if (!hasDefault) { + hasDefault = true; + this.defaultValue = defaultValue; + if (Constants.TUNING_MODE) { + dashboardNumber = new LoggedNetworkNumber(key, defaultValue); + } + } + } + + /** + * Get the current value, from dashboard if available and in tuning mode. + * + * @return The current value + */ + public double get() { + if (!hasDefault) { + return 0.0; + } else { + return Constants.TUNING_MODE ? dashboardNumber.get() : defaultValue; + } + } + + /** + * Checks whether the number has changed since our last check + * + * @param id Unique identifier for the caller to avoid conflicts when shared between multiple + * objects. Recommended approach is to pass the result of "hashCode()" + * @return True if the number has changed since the last time this method was called, false + * otherwise. + */ + public boolean hasChanged(int id) { + double currentValue = get(); + Double lastValue = lastHasChangedValues.get(id); + if (lastValue == null || currentValue != lastValue) { + lastHasChangedValues.put(id, currentValue); + return true; + } + + return false; + } + + /** + * Runs action if any of the tunableNumbers have changed + * + * @param id Unique identifier for the caller to avoid conflicts when shared between multiple * + * objects. Recommended approach is to pass the result of "hashCode()" + * @param action Callback to run when any of the tunable numbers have changed. Access tunable + * numbers in order inputted in method + * @param tunableNumbers All tunable numbers to check + */ + public static void ifChanged( + int id, Consumer action, LoggedTunableNumber... tunableNumbers) { + if (Arrays.stream(tunableNumbers).anyMatch(tunableNumber -> tunableNumber.hasChanged(id))) { + action.accept(Arrays.stream(tunableNumbers).mapToDouble(LoggedTunableNumber::get).toArray()); + } + } + + /** Runs action if any of the tunableNumbers have changed */ + public static void ifChanged(int id, Runnable action, LoggedTunableNumber... tunableNumbers) { + ifChanged(id, values -> action.run(), tunableNumbers); + } + + @Override + public double getAsDouble() { + return get(); + } +} diff --git a/src/main/java/frc/robot/util/LoggedTunablePID.java b/src/main/java/frc/robot/util/LoggedTunablePID.java new file mode 100644 index 0000000..07bb8ad --- /dev/null +++ b/src/main/java/frc/robot/util/LoggedTunablePID.java @@ -0,0 +1,46 @@ +package frc.robot.util; + +import edu.wpi.first.math.controller.ProfiledPIDController; +import edu.wpi.first.math.trajectory.TrapezoidProfile; + +public class LoggedTunablePID extends ProfiledPIDController { + @SuppressWarnings("unused") + private final String name; + + private final LoggedTunableNumber kP, kI, kD, iZone, maxV, maxA; + + public LoggedTunablePID(String name, double p, double i, double d, double maxV, double maxA) { + this(name, p, i, d, maxV, maxA, Double.POSITIVE_INFINITY); + } + + public LoggedTunablePID( + String name, double p, double i, double d, double iZone, double maxV, double maxA) { + super(p, i, d, new TrapezoidProfile.Constraints(maxV, maxA)); + setIZone(iZone); + + this.name = name; + + kP = new LoggedTunableNumber(name + "/P", p); + kI = new LoggedTunableNumber(name + "/I", i); + kD = new LoggedTunableNumber(name + "/D", d); + this.iZone = new LoggedTunableNumber(name + "/iZone", iZone); + + this.maxV = new LoggedTunableNumber(name + "/MaxVelocity", maxV); + this.maxA = new LoggedTunableNumber(name + "/MaxAcceleration", maxA); + } + + public void updatePID() { + // If changed, update controller constants from Tuneable Numbers + if (kP.hasChanged(hashCode()) || kI.hasChanged(hashCode()) || kD.hasChanged(hashCode())) { + setPID(kP.get(), kI.get(), kD.get()); + } + + if (iZone.hasChanged(hashCode())) { + setIZone(iZone.get()); + } + + if (maxV.hasChanged(hashCode()) || maxA.hasChanged(hashCode())) { + setConstraints(new TrapezoidProfile.Constraints(maxV.get(), maxA.get())); + } + } +} diff --git a/src/main/java/frc/robot/util/phoenix/PhoenixUtil.java b/src/main/java/frc/robot/util/phoenix/PhoenixUtil.java index 8f5dd53..b0c9052 100644 --- a/src/main/java/frc/robot/util/phoenix/PhoenixUtil.java +++ b/src/main/java/frc/robot/util/phoenix/PhoenixUtil.java @@ -7,8 +7,11 @@ package frc.robot.util.phoenix; +import com.ctre.phoenix6.BaseStatusSignal; import com.ctre.phoenix6.StatusCode; +import com.ctre.phoenix6.Utils; import edu.wpi.first.wpilibj.DriverStation; +import edu.wpi.first.wpilibj.Timer; import java.util.function.Supplier; public class PhoenixUtil { @@ -30,4 +33,23 @@ public static void tryUntilOk(int maxAttempts, Supplier command) { if (status.isOK()) break; } } + + /** + * Gets the average timestamp of many Phoenix 6 Status Signals. + * + * @return The average timestamp (in FPGA time) + */ + public static double averageTimestamp(BaseStatusSignal firstSignal, BaseStatusSignal... signals) { + double timestamp = currentToFPGATime(firstSignal.getTimestamp().getTime()); + + for (int i = 0; i < signals.length; i++) { + timestamp += currentToFPGATime(signals[i].getTimestamp().getTime()); + } + + return timestamp / (1 + signals.length); + } + + public static double currentToFPGATime(double currentTime) { + return (Timer.getFPGATimestamp() - Utils.getCurrentTimeSeconds()) + currentTime; + } }