photonlibpy 2024.3.1__py3-none-any.whl → 2025.0.0b1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|