photonlibpy 2024.3.1__py3-none-any.whl → 2025.0.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- photonlibpy/__init__.py +21 -1
- photonlibpy/estimatedRobotPose.py +18 -1
- photonlibpy/generated/MultiTargetPNPResultSerde.py +57 -0
- photonlibpy/generated/PhotonPipelineMetadataSerde.py +69 -0
- photonlibpy/generated/PhotonPipelineResultSerde.py +65 -0
- photonlibpy/generated/PhotonTrackedTargetSerde.py +113 -0
- photonlibpy/generated/PnpResultSerde.py +71 -0
- photonlibpy/generated/TargetCornerSerde.py +57 -0
- photonlibpy/generated/__init__.py +9 -0
- photonlibpy/packet.py +175 -11
- photonlibpy/photonCamera.py +90 -15
- photonlibpy/photonPoseEstimator.py +28 -9
- photonlibpy/targeting/TargetCorner.py +9 -0
- photonlibpy/targeting/__init__.py +6 -0
- photonlibpy/targeting/multiTargetPNPResult.py +34 -0
- photonlibpy/targeting/photonPipelineResult.py +69 -0
- photonlibpy/{photonTrackedTarget.py → targeting/photonTrackedTarget.py} +9 -31
- photonlibpy/version.py +2 -2
- photonlibpy-2025.0.0b1.dist-info/METADATA +13 -0
- photonlibpy-2025.0.0b1.dist-info/RECORD +22 -0
- {photonlibpy-2024.3.1.dist-info → photonlibpy-2025.0.0b1.dist-info}/WHEEL +1 -1
- photonlibpy/multiTargetPNPResult.py +0 -49
- photonlibpy/photonPipelineResult.py +0 -43
- photonlibpy-2024.3.1.dist-info/METADATA +0 -13
- photonlibpy-2024.3.1.dist-info/RECORD +0 -13
- {photonlibpy-2024.3.1.dist-info → photonlibpy-2025.0.0b1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: photonlibpy
|
3
|
+
Version: 2025.0.0b1
|
4
|
+
Summary: Pure-python implementation of PhotonLib for interfacing with PhotonVision on coprocessors. Implemented with PhotonVision version v2025.0.0-beta-1 .
|
5
|
+
Home-page: https://photonvision.org
|
6
|
+
Author: Photonvision Development Team
|
7
|
+
Description-Content-Type: text/markdown
|
8
|
+
Requires-Dist: wpilib<2025,>=2024.0.0b2
|
9
|
+
Requires-Dist: robotpy-wpimath<2025,>=2024.0.0b2
|
10
|
+
Requires-Dist: robotpy-apriltag<2025,>=2024.0.0b2
|
11
|
+
Requires-Dist: pyntcore<2025,>=2024.0.0b2
|
12
|
+
|
13
|
+
A Pure-python implementation of PhotonLib
|
@@ -0,0 +1,22 @@
|
|
1
|
+
photonlibpy/__init__.py,sha256=JnwWj53fEM263hUjEFGmJ--M3XCX0LYovdrl4wcNRnU,1136
|
2
|
+
photonlibpy/estimatedRobotPose.py,sha256=X7wF9xdPXGKSVy0MY0qrWZJOEbuZPd721lYp0KXKlP0,1603
|
3
|
+
photonlibpy/packet.py,sha256=ppNJGN9bgWA4smefFvaxqF56Qwcjj0dnqwSIjP92JlE,9528
|
4
|
+
photonlibpy/photonCamera.py,sha256=c3Q9AFuccR41AkajkqCRt3mqUtv7a-TNSKOmXBi9p7M,10181
|
5
|
+
photonlibpy/photonPoseEstimator.py,sha256=vSpPbKR2WB-bNgWnskSP0Os2CcCzqcPGsE1lUVrcSw0,12584
|
6
|
+
photonlibpy/version.py,sha256=Cac9aJKhHkgx4HcwV63_46tpcc8q-mu8IN_P1THZx2Q,77
|
7
|
+
photonlibpy/generated/MultiTargetPNPResultSerde.py,sha256=t0hQgz0BvzQTsx-l0EJjr5eRfkY6piQRhu_2N2s2nlw,2342
|
8
|
+
photonlibpy/generated/PhotonPipelineMetadataSerde.py,sha256=RiSWwu6ftwc19U_5uexu8VjET7NksjrXanzV8GYEHkE,2767
|
9
|
+
photonlibpy/generated/PhotonPipelineResultSerde.py,sha256=DUrkUj2E6nS-Ru-drY-sX8odAl693VKJx_8lp0U-V9M,2847
|
10
|
+
photonlibpy/generated/PhotonTrackedTargetSerde.py,sha256=AFuvhmOTBdDtkAOfdS99MRnTk7P-94P0wXi3GHyvJco,4271
|
11
|
+
photonlibpy/generated/PnpResultSerde.py,sha256=tdHNHs9A7KBkYgqXQ5mUBc2TF3R_w3I_t922-DS6sQw,2586
|
12
|
+
photonlibpy/generated/TargetCornerSerde.py,sha256=K2GJ_t_Gl91lJX823TeR10dzch1IQEX28tfob3eIftg,2080
|
13
|
+
photonlibpy/generated/__init__.py,sha256=WdCA9k7QNY1i8B9u5kBilnibajDBg7zfU8GbV7F2H8g,505
|
14
|
+
photonlibpy/targeting/TargetCorner.py,sha256=iFWTWu5HcpkBQyvhz_klpAB0TEmy-7_SsD1FHeNfnkE,147
|
15
|
+
photonlibpy/targeting/__init__.py,sha256=1GUy4MC8NbZ-TEcFgsnvSm_X0LYeZ0HZagMMRmGpx8A,295
|
16
|
+
photonlibpy/targeting/multiTargetPNPResult.py,sha256=G_5Rll-a0wnV2iJhwVpODY1Ag52uOUkzZfsGu5ns04Q,1006
|
17
|
+
photonlibpy/targeting/photonPipelineResult.py,sha256=jXaZoyJvNYXg8N3senagkk2iduV5m_qsNnqWS3OsHx8,2508
|
18
|
+
photonlibpy/targeting/photonTrackedTarget.py,sha256=qNPqh8eKTP9IIkBMVvkS_dq7SoVOpIm7d5b1ZUtN8bE,1811
|
19
|
+
photonlibpy-2025.0.0b1.dist-info/METADATA,sha256=nS1JEF7rUJQSFhyUbfaQsGdook8yknRW74EkZqR0mi0,555
|
20
|
+
photonlibpy-2025.0.0b1.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
|
21
|
+
photonlibpy-2025.0.0b1.dist-info/top_level.txt,sha256=T8Xc6U6he2VjKUAca6zawSkHdUZuLanxYIc4nxw2ctc,12
|
22
|
+
photonlibpy-2025.0.0b1.dist-info/RECORD,,
|
@@ -1,49 +0,0 @@
|
|
1
|
-
from dataclasses import dataclass, field
|
2
|
-
from wpimath.geometry import Transform3d
|
3
|
-
from photonlibpy.packet import Packet
|
4
|
-
|
5
|
-
|
6
|
-
@dataclass
|
7
|
-
class PNPResult:
|
8
|
-
_NUM_BYTES_IN_FLOAT = 8
|
9
|
-
PACK_SIZE_BYTES = 1 + (_NUM_BYTES_IN_FLOAT * 7 * 2) + (_NUM_BYTES_IN_FLOAT * 3)
|
10
|
-
|
11
|
-
isPresent: bool = False
|
12
|
-
best: Transform3d = field(default_factory=Transform3d)
|
13
|
-
alt: Transform3d = field(default_factory=Transform3d)
|
14
|
-
ambiguity: float = 0.0
|
15
|
-
bestReprojError: float = 0.0
|
16
|
-
altReprojError: float = 0.0
|
17
|
-
|
18
|
-
def createFromPacket(self, packet: Packet) -> Packet:
|
19
|
-
self.isPresent = packet.decodeBoolean()
|
20
|
-
|
21
|
-
if not self.isPresent:
|
22
|
-
return packet
|
23
|
-
|
24
|
-
self.best = packet.decodeTransform()
|
25
|
-
self.alt = packet.decodeTransform()
|
26
|
-
self.bestReprojError = packet.decodeDouble()
|
27
|
-
self.altReprojError = packet.decodeDouble()
|
28
|
-
self.ambiguity = packet.decodeDouble()
|
29
|
-
return packet
|
30
|
-
|
31
|
-
|
32
|
-
@dataclass
|
33
|
-
class MultiTargetPNPResult:
|
34
|
-
_MAX_IDS = 32
|
35
|
-
# pnpresult + MAX_IDS possible targets (arbitrary upper limit that should never be hit, ideally)
|
36
|
-
_PACK_SIZE_BYTES = PNPResult.PACK_SIZE_BYTES + (1 * _MAX_IDS)
|
37
|
-
|
38
|
-
estimatedPose: PNPResult = field(default_factory=PNPResult)
|
39
|
-
fiducialIDsUsed: list[int] = field(default_factory=list)
|
40
|
-
|
41
|
-
def createFromPacket(self, packet: Packet) -> Packet:
|
42
|
-
self.estimatedPose = PNPResult()
|
43
|
-
self.estimatedPose.createFromPacket(packet)
|
44
|
-
self.fiducialIDsUsed = []
|
45
|
-
for _ in range(MultiTargetPNPResult._MAX_IDS):
|
46
|
-
fidId = packet.decode16()
|
47
|
-
if fidId >= 0:
|
48
|
-
self.fiducialIDsUsed.append(fidId)
|
49
|
-
return packet
|
@@ -1,43 +0,0 @@
|
|
1
|
-
from dataclasses import dataclass, field
|
2
|
-
|
3
|
-
from photonlibpy.multiTargetPNPResult import MultiTargetPNPResult
|
4
|
-
from photonlibpy.packet import Packet
|
5
|
-
from photonlibpy.photonTrackedTarget import PhotonTrackedTarget
|
6
|
-
|
7
|
-
|
8
|
-
@dataclass
|
9
|
-
class PhotonPipelineResult:
|
10
|
-
latencyMillis: float = -1.0
|
11
|
-
timestampSec: float = -1.0
|
12
|
-
targets: list[PhotonTrackedTarget] = field(default_factory=list)
|
13
|
-
multiTagResult: MultiTargetPNPResult = field(default_factory=MultiTargetPNPResult)
|
14
|
-
|
15
|
-
def populateFromPacket(self, packet: Packet) -> Packet:
|
16
|
-
self.targets = []
|
17
|
-
self.latencyMillis = packet.decodeDouble()
|
18
|
-
targetCount = packet.decode8()
|
19
|
-
|
20
|
-
for _ in range(targetCount):
|
21
|
-
target = PhotonTrackedTarget()
|
22
|
-
target.createFromPacket(packet)
|
23
|
-
self.targets.append(target)
|
24
|
-
|
25
|
-
self.multiTagResult = MultiTargetPNPResult()
|
26
|
-
self.multiTagResult.createFromPacket(packet)
|
27
|
-
|
28
|
-
return packet
|
29
|
-
|
30
|
-
def setTimestampSeconds(self, timestampSec: float) -> None:
|
31
|
-
self.timestampSec = timestampSec
|
32
|
-
|
33
|
-
def getLatencyMillis(self) -> float:
|
34
|
-
return self.latencyMillis
|
35
|
-
|
36
|
-
def getTimestamp(self) -> float:
|
37
|
-
return self.timestampSec
|
38
|
-
|
39
|
-
def getTargets(self) -> list[PhotonTrackedTarget]:
|
40
|
-
return self.targets
|
41
|
-
|
42
|
-
def hasTargets(self) -> bool:
|
43
|
-
return len(self.targets) > 0
|
@@ -1,13 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: photonlibpy
|
3
|
-
Version: 2024.3.1
|
4
|
-
Summary: Pure-python implementation of PhotonLib for interfacing with PhotonVision on coprocessors.
|
5
|
-
Home-page: https://photonvision.org
|
6
|
-
Author: Photonvision Development Team
|
7
|
-
Description-Content-Type: text/markdown
|
8
|
-
Requires-Dist: wpilib <2025,>=2024.0.0b2
|
9
|
-
Requires-Dist: robotpy-wpimath <2025,>=2024.0.0b2
|
10
|
-
Requires-Dist: robotpy-apriltag <2025,>=2024.0.0b2
|
11
|
-
Requires-Dist: pyntcore <2025,>=2024.0.0b2
|
12
|
-
|
13
|
-
A Pure-python implementation of PhotonLib
|
@@ -1,13 +0,0 @@
|
|
1
|
-
photonlibpy/__init__.py,sha256=Poafj5ngdQ2T0yW3zhnQ2NHw70XrTwXvT8aDCAImYbg,30
|
2
|
-
photonlibpy/estimatedRobotPose.py,sha256=_lgVu157fBpG85WpeS4uXWCF4aQDUbMI2SWXG5lee9I,673
|
3
|
-
photonlibpy/multiTargetPNPResult.py,sha256=AgrRjSna1s8yJWUdBgWxqKxm0cqgXwYrKEzgfP7pzGE,1660
|
4
|
-
photonlibpy/packet.py,sha256=Sg_Sln_DNYvdT0DpekIb6v67e3c4oX08zLQe9oDd2OU,3969
|
5
|
-
photonlibpy/photonCamera.py,sha256=5bbyMIVnz9oCfeQR0CrycjrM7TuoDF_ybe6OZbAdVpk,6946
|
6
|
-
photonlibpy/photonPipelineResult.py,sha256=IpHxXKuyfOKcslgm_Ce2PqV8HgXTN_IMUuNb5BBTzSo,1351
|
7
|
-
photonlibpy/photonPoseEstimator.py,sha256=s99TjCi3SFpCo5fPckw2ZfJK7E3lvFO3zpr0GnDDyKM,11580
|
8
|
-
photonlibpy/photonTrackedTarget.py,sha256=Br2L4fNNwQP4eUj9eV9I653FOER00JbeHB5SMNTSaHc,2482
|
9
|
-
photonlibpy/version.py,sha256=cLtN559uk-KlzHhdhRQ2MoAO-iHP1C1nyS5PJ2F8TZo,62
|
10
|
-
photonlibpy-2024.3.1.dist-info/METADATA,sha256=hd_3Q0yZnYzxZ4wHBequLJQOJokRlO-sq8zoOcQsvl8,500
|
11
|
-
photonlibpy-2024.3.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
12
|
-
photonlibpy-2024.3.1.dist-info/top_level.txt,sha256=T8Xc6U6he2VjKUAca6zawSkHdUZuLanxYIc4nxw2ctc,12
|
13
|
-
photonlibpy-2024.3.1.dist-info/RECORD,,
|
File without changes
|