photonlibpy 2024.3.1__tar.gz → 2025.0.0b1__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/PKG-INFO +2 -2
- photonlibpy-2025.0.0b1/photonlibpy/__init__.py +21 -0
- photonlibpy-2025.0.0b1/photonlibpy/estimatedRobotPose.py +43 -0
- photonlibpy-2025.0.0b1/photonlibpy/generated/MultiTargetPNPResultSerde.py +57 -0
- photonlibpy-2025.0.0b1/photonlibpy/generated/PhotonPipelineMetadataSerde.py +69 -0
- photonlibpy-2025.0.0b1/photonlibpy/generated/PhotonPipelineResultSerde.py +65 -0
- photonlibpy-2025.0.0b1/photonlibpy/generated/PhotonTrackedTargetSerde.py +113 -0
- photonlibpy-2025.0.0b1/photonlibpy/generated/PnpResultSerde.py +71 -0
- photonlibpy-2025.0.0b1/photonlibpy/generated/TargetCornerSerde.py +57 -0
- photonlibpy-2025.0.0b1/photonlibpy/generated/__init__.py +9 -0
- photonlibpy-2025.0.0b1/photonlibpy/packet.py +307 -0
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/photonlibpy/photonCamera.py +90 -15
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/photonlibpy/photonPoseEstimator.py +28 -9
- photonlibpy-2025.0.0b1/photonlibpy/targeting/TargetCorner.py +9 -0
- photonlibpy-2025.0.0b1/photonlibpy/targeting/__init__.py +6 -0
- photonlibpy-2025.0.0b1/photonlibpy/targeting/multiTargetPNPResult.py +34 -0
- photonlibpy-2025.0.0b1/photonlibpy/targeting/photonPipelineResult.py +69 -0
- {photonlibpy-2024.3.1/photonlibpy → photonlibpy-2025.0.0b1/photonlibpy/targeting}/photonTrackedTarget.py +9 -31
- photonlibpy-2025.0.0b1/photonlibpy/version.py +2 -0
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/photonlibpy.egg-info/PKG-INFO +2 -2
- photonlibpy-2025.0.0b1/photonlibpy.egg-info/SOURCES.txt +24 -0
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/setup.py +1 -4
- photonlibpy-2024.3.1/photonlibpy/__init__.py +0 -1
- photonlibpy-2024.3.1/photonlibpy/estimatedRobotPose.py +0 -26
- photonlibpy-2024.3.1/photonlibpy/multiTargetPNPResult.py +0 -49
- photonlibpy-2024.3.1/photonlibpy/packet.py +0 -143
- photonlibpy-2024.3.1/photonlibpy/photonPipelineResult.py +0 -43
- photonlibpy-2024.3.1/photonlibpy/version.py +0 -2
- photonlibpy-2024.3.1/photonlibpy.egg-info/SOURCES.txt +0 -15
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/photonlibpy.egg-info/dependency_links.txt +0 -0
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/photonlibpy.egg-info/requires.txt +0 -0
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/photonlibpy.egg-info/top_level.txt +0 -0
- {photonlibpy-2024.3.1 → photonlibpy-2025.0.0b1}/setup.cfg +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: photonlibpy
|
3
|
-
Version:
|
4
|
-
Summary: Pure-python implementation of PhotonLib for interfacing with PhotonVision on coprocessors.
|
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
5
|
Home-page: https://photonvision.org
|
6
6
|
Author: Photonvision Development Team
|
7
7
|
Description-Content-Type: text/markdown
|
@@ -0,0 +1,21 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Copyright (C) Photon Vision.
|
3
|
+
###############################################################################
|
4
|
+
## This program is free software: you can redistribute it and/or modify
|
5
|
+
## it under the terms of the GNU General Public License as published by
|
6
|
+
## the Free Software Foundation, either version 3 of the License, or
|
7
|
+
## (at your option) any later version.
|
8
|
+
##
|
9
|
+
## This program is distributed in the hope that it will be useful,
|
10
|
+
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
## GNU General Public License for more details.
|
13
|
+
##
|
14
|
+
## You should have received a copy of the GNU General Public License
|
15
|
+
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
|
+
###############################################################################
|
17
|
+
|
18
|
+
from .packet import Packet # noqa
|
19
|
+
from .estimatedRobotPose import EstimatedRobotPose # noqa
|
20
|
+
from .photonPoseEstimator import PhotonPoseEstimator, PoseStrategy # noqa
|
21
|
+
from .photonCamera import PhotonCamera # noqa
|
@@ -0,0 +1,43 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Copyright (C) Photon Vision.
|
3
|
+
###############################################################################
|
4
|
+
## This program is free software: you can redistribute it and/or modify
|
5
|
+
## it under the terms of the GNU General Public License as published by
|
6
|
+
## the Free Software Foundation, either version 3 of the License, or
|
7
|
+
## (at your option) any later version.
|
8
|
+
##
|
9
|
+
## This program is distributed in the hope that it will be useful,
|
10
|
+
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
## GNU General Public License for more details.
|
13
|
+
##
|
14
|
+
## You should have received a copy of the GNU General Public License
|
15
|
+
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
|
+
###############################################################################
|
17
|
+
|
18
|
+
from dataclasses import dataclass
|
19
|
+
from typing import TYPE_CHECKING
|
20
|
+
|
21
|
+
from wpimath.geometry import Pose3d
|
22
|
+
|
23
|
+
from .targeting.photonTrackedTarget import PhotonTrackedTarget
|
24
|
+
|
25
|
+
if TYPE_CHECKING:
|
26
|
+
from .photonPoseEstimator import PoseStrategy
|
27
|
+
|
28
|
+
|
29
|
+
@dataclass
|
30
|
+
class EstimatedRobotPose:
|
31
|
+
"""An estimated pose based on pipeline result"""
|
32
|
+
|
33
|
+
estimatedPose: Pose3d
|
34
|
+
"""The estimated pose"""
|
35
|
+
|
36
|
+
timestampSeconds: float
|
37
|
+
"""The estimated time the frame used to derive the robot pose was taken"""
|
38
|
+
|
39
|
+
targetsUsed: list[PhotonTrackedTarget]
|
40
|
+
"""A list of the targets used to compute this pose"""
|
41
|
+
|
42
|
+
strategy: "PoseStrategy"
|
43
|
+
"""The strategy actually used to produce this pose"""
|
@@ -0,0 +1,57 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Copyright (C) Photon Vision.
|
3
|
+
###############################################################################
|
4
|
+
## This program is free software: you can redistribute it and/or modify
|
5
|
+
## it under the terms of the GNU General Public License as published by
|
6
|
+
## the Free Software Foundation, either version 3 of the License, or
|
7
|
+
## (at your option) any later version.
|
8
|
+
##
|
9
|
+
## This program is distributed in the hope that it will be useful,
|
10
|
+
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
## GNU General Public License for more details.
|
13
|
+
##
|
14
|
+
## You should have received a copy of the GNU General Public License
|
15
|
+
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
|
+
###############################################################################
|
17
|
+
|
18
|
+
###############################################################################
|
19
|
+
## THIS FILE WAS AUTO-GENERATED BY ./photon-serde/generate_messages.py.
|
20
|
+
## --> DO NOT MODIFY <--
|
21
|
+
###############################################################################
|
22
|
+
|
23
|
+
from ..targeting import *
|
24
|
+
from ..packet import Packet
|
25
|
+
|
26
|
+
|
27
|
+
class MultiTargetPNPResultSerde:
|
28
|
+
# Message definition md5sum. See photon_packet.adoc for details
|
29
|
+
MESSAGE_VERSION = "541096947e9f3ca2d3f425ff7b04aa7b"
|
30
|
+
MESSAGE_FORMAT = "PnpResult:ae4d655c0a3104d88df4f5db144c1e86 estimatedPose;int16 fiducialIDsUsed[?];"
|
31
|
+
|
32
|
+
@staticmethod
|
33
|
+
def pack(value: "MultiTargetPNPResult") -> "Packet":
|
34
|
+
ret = Packet()
|
35
|
+
|
36
|
+
# estimatedPose is of non-intrinsic type PnpResult
|
37
|
+
ret.encodeBytes(PnpResult.photonStruct.pack(value.estimatedPose).getData())
|
38
|
+
|
39
|
+
# fiducialIDsUsed is a custom VLA!
|
40
|
+
ret.encodeShortList(value.fiducialIDsUsed)
|
41
|
+
return ret
|
42
|
+
|
43
|
+
@staticmethod
|
44
|
+
def unpack(packet: "Packet") -> "MultiTargetPNPResult":
|
45
|
+
ret = MultiTargetPNPResult()
|
46
|
+
|
47
|
+
# estimatedPose is of non-intrinsic type PnpResult
|
48
|
+
ret.estimatedPose = PnpResult.photonStruct.unpack(packet)
|
49
|
+
|
50
|
+
# fiducialIDsUsed is a custom VLA!
|
51
|
+
ret.fiducialIDsUsed = packet.decodeShortList()
|
52
|
+
|
53
|
+
return ret
|
54
|
+
|
55
|
+
|
56
|
+
# Hack ourselves into the base class
|
57
|
+
MultiTargetPNPResult.photonStruct = MultiTargetPNPResultSerde()
|
@@ -0,0 +1,69 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Copyright (C) Photon Vision.
|
3
|
+
###############################################################################
|
4
|
+
## This program is free software: you can redistribute it and/or modify
|
5
|
+
## it under the terms of the GNU General Public License as published by
|
6
|
+
## the Free Software Foundation, either version 3 of the License, or
|
7
|
+
## (at your option) any later version.
|
8
|
+
##
|
9
|
+
## This program is distributed in the hope that it will be useful,
|
10
|
+
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
## GNU General Public License for more details.
|
13
|
+
##
|
14
|
+
## You should have received a copy of the GNU General Public License
|
15
|
+
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
|
+
###############################################################################
|
17
|
+
|
18
|
+
###############################################################################
|
19
|
+
## THIS FILE WAS AUTO-GENERATED BY ./photon-serde/generate_messages.py.
|
20
|
+
## --> DO NOT MODIFY <--
|
21
|
+
###############################################################################
|
22
|
+
|
23
|
+
from ..targeting import *
|
24
|
+
from ..packet import Packet
|
25
|
+
|
26
|
+
|
27
|
+
class PhotonPipelineMetadataSerde:
|
28
|
+
# Message definition md5sum. See photon_packet.adoc for details
|
29
|
+
MESSAGE_VERSION = "ac0a45f686457856fb30af77699ea356"
|
30
|
+
MESSAGE_FORMAT = "int64 sequenceID;int64 captureTimestampMicros;int64 publishTimestampMicros;int64 timeSinceLastPong;"
|
31
|
+
|
32
|
+
@staticmethod
|
33
|
+
def pack(value: "PhotonPipelineMetadata") -> "Packet":
|
34
|
+
ret = Packet()
|
35
|
+
|
36
|
+
# sequenceID is of intrinsic type int64
|
37
|
+
ret.encodeLong(value.sequenceID)
|
38
|
+
|
39
|
+
# captureTimestampMicros is of intrinsic type int64
|
40
|
+
ret.encodeLong(value.captureTimestampMicros)
|
41
|
+
|
42
|
+
# publishTimestampMicros is of intrinsic type int64
|
43
|
+
ret.encodeLong(value.publishTimestampMicros)
|
44
|
+
|
45
|
+
# timeSinceLastPong is of intrinsic type int64
|
46
|
+
ret.encodeLong(value.timeSinceLastPong)
|
47
|
+
return ret
|
48
|
+
|
49
|
+
@staticmethod
|
50
|
+
def unpack(packet: "Packet") -> "PhotonPipelineMetadata":
|
51
|
+
ret = PhotonPipelineMetadata()
|
52
|
+
|
53
|
+
# sequenceID is of intrinsic type int64
|
54
|
+
ret.sequenceID = packet.decodeLong()
|
55
|
+
|
56
|
+
# captureTimestampMicros is of intrinsic type int64
|
57
|
+
ret.captureTimestampMicros = packet.decodeLong()
|
58
|
+
|
59
|
+
# publishTimestampMicros is of intrinsic type int64
|
60
|
+
ret.publishTimestampMicros = packet.decodeLong()
|
61
|
+
|
62
|
+
# timeSinceLastPong is of intrinsic type int64
|
63
|
+
ret.timeSinceLastPong = packet.decodeLong()
|
64
|
+
|
65
|
+
return ret
|
66
|
+
|
67
|
+
|
68
|
+
# Hack ourselves into the base class
|
69
|
+
PhotonPipelineMetadata.photonStruct = PhotonPipelineMetadataSerde()
|
@@ -0,0 +1,65 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Copyright (C) Photon Vision.
|
3
|
+
###############################################################################
|
4
|
+
## This program is free software: you can redistribute it and/or modify
|
5
|
+
## it under the terms of the GNU General Public License as published by
|
6
|
+
## the Free Software Foundation, either version 3 of the License, or
|
7
|
+
## (at your option) any later version.
|
8
|
+
##
|
9
|
+
## This program is distributed in the hope that it will be useful,
|
10
|
+
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
## GNU General Public License for more details.
|
13
|
+
##
|
14
|
+
## You should have received a copy of the GNU General Public License
|
15
|
+
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
|
+
###############################################################################
|
17
|
+
|
18
|
+
###############################################################################
|
19
|
+
## THIS FILE WAS AUTO-GENERATED BY ./photon-serde/generate_messages.py.
|
20
|
+
## --> DO NOT MODIFY <--
|
21
|
+
###############################################################################
|
22
|
+
|
23
|
+
from ..targeting import *
|
24
|
+
from ..packet import Packet
|
25
|
+
|
26
|
+
|
27
|
+
class PhotonPipelineResultSerde:
|
28
|
+
# Message definition md5sum. See photon_packet.adoc for details
|
29
|
+
MESSAGE_VERSION = "4b2ff16a964b5e2bf04be0c1454d91c4"
|
30
|
+
MESSAGE_FORMAT = "PhotonPipelineMetadata:ac0a45f686457856fb30af77699ea356 metadata;PhotonTrackedTarget:cc6dbb5c5c1e0fa808108019b20863f1 targets[?];optional MultiTargetPNPResult:541096947e9f3ca2d3f425ff7b04aa7b multitagResult;"
|
31
|
+
|
32
|
+
@staticmethod
|
33
|
+
def pack(value: "PhotonPipelineResult") -> "Packet":
|
34
|
+
ret = Packet()
|
35
|
+
|
36
|
+
# metadata is of non-intrinsic type PhotonPipelineMetadata
|
37
|
+
ret.encodeBytes(
|
38
|
+
PhotonPipelineMetadata.photonStruct.pack(value.metadata).getData()
|
39
|
+
)
|
40
|
+
|
41
|
+
# targets is a custom VLA!
|
42
|
+
ret.encodeList(value.targets, PhotonTrackedTarget.photonStruct)
|
43
|
+
|
44
|
+
# multitagResult is optional! it better not be a VLA too
|
45
|
+
ret.encodeOptional(value.multitagResult, MultiTargetPNPResult.photonStruct)
|
46
|
+
return ret
|
47
|
+
|
48
|
+
@staticmethod
|
49
|
+
def unpack(packet: "Packet") -> "PhotonPipelineResult":
|
50
|
+
ret = PhotonPipelineResult()
|
51
|
+
|
52
|
+
# metadata is of non-intrinsic type PhotonPipelineMetadata
|
53
|
+
ret.metadata = PhotonPipelineMetadata.photonStruct.unpack(packet)
|
54
|
+
|
55
|
+
# targets is a custom VLA!
|
56
|
+
ret.targets = packet.decodeList(PhotonTrackedTarget.photonStruct)
|
57
|
+
|
58
|
+
# multitagResult is optional! it better not be a VLA too
|
59
|
+
ret.multitagResult = packet.decodeOptional(MultiTargetPNPResult.photonStruct)
|
60
|
+
|
61
|
+
return ret
|
62
|
+
|
63
|
+
|
64
|
+
# Hack ourselves into the base class
|
65
|
+
PhotonPipelineResult.photonStruct = PhotonPipelineResultSerde()
|
@@ -0,0 +1,113 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Copyright (C) Photon Vision.
|
3
|
+
###############################################################################
|
4
|
+
## This program is free software: you can redistribute it and/or modify
|
5
|
+
## it under the terms of the GNU General Public License as published by
|
6
|
+
## the Free Software Foundation, either version 3 of the License, or
|
7
|
+
## (at your option) any later version.
|
8
|
+
##
|
9
|
+
## This program is distributed in the hope that it will be useful,
|
10
|
+
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
## GNU General Public License for more details.
|
13
|
+
##
|
14
|
+
## You should have received a copy of the GNU General Public License
|
15
|
+
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
|
+
###############################################################################
|
17
|
+
|
18
|
+
###############################################################################
|
19
|
+
## THIS FILE WAS AUTO-GENERATED BY ./photon-serde/generate_messages.py.
|
20
|
+
## --> DO NOT MODIFY <--
|
21
|
+
###############################################################################
|
22
|
+
|
23
|
+
from ..targeting import *
|
24
|
+
from ..packet import Packet
|
25
|
+
|
26
|
+
|
27
|
+
class PhotonTrackedTargetSerde:
|
28
|
+
# Message definition md5sum. See photon_packet.adoc for details
|
29
|
+
MESSAGE_VERSION = "cc6dbb5c5c1e0fa808108019b20863f1"
|
30
|
+
MESSAGE_FORMAT = "float64 yaw;float64 pitch;float64 area;float64 skew;int32 fiducialId;int32 objDetectId;float32 objDetectConf;Transform3d bestCameraToTarget;Transform3d altCameraToTarget;float64 poseAmbiguity;TargetCorner:16f6ac0dedc8eaccb951f4895d9e18b6 minAreaRectCorners[?];TargetCorner:16f6ac0dedc8eaccb951f4895d9e18b6 detectedCorners[?];"
|
31
|
+
|
32
|
+
@staticmethod
|
33
|
+
def pack(value: "PhotonTrackedTarget") -> "Packet":
|
34
|
+
ret = Packet()
|
35
|
+
|
36
|
+
# yaw is of intrinsic type float64
|
37
|
+
ret.encodeDouble(value.yaw)
|
38
|
+
|
39
|
+
# pitch is of intrinsic type float64
|
40
|
+
ret.encodeDouble(value.pitch)
|
41
|
+
|
42
|
+
# area is of intrinsic type float64
|
43
|
+
ret.encodeDouble(value.area)
|
44
|
+
|
45
|
+
# skew is of intrinsic type float64
|
46
|
+
ret.encodeDouble(value.skew)
|
47
|
+
|
48
|
+
# fiducialId is of intrinsic type int32
|
49
|
+
ret.encodeInt(value.fiducialId)
|
50
|
+
|
51
|
+
# objDetectId is of intrinsic type int32
|
52
|
+
ret.encodeInt(value.objDetectId)
|
53
|
+
|
54
|
+
# objDetectConf is of intrinsic type float32
|
55
|
+
ret.encodeFloat(value.objDetectConf)
|
56
|
+
|
57
|
+
ret.encodeTransform(value.bestCameraToTarget)
|
58
|
+
|
59
|
+
ret.encodeTransform(value.altCameraToTarget)
|
60
|
+
|
61
|
+
# poseAmbiguity is of intrinsic type float64
|
62
|
+
ret.encodeDouble(value.poseAmbiguity)
|
63
|
+
|
64
|
+
# minAreaRectCorners is a custom VLA!
|
65
|
+
ret.encodeList(value.minAreaRectCorners, TargetCorner.photonStruct)
|
66
|
+
|
67
|
+
# detectedCorners is a custom VLA!
|
68
|
+
ret.encodeList(value.detectedCorners, TargetCorner.photonStruct)
|
69
|
+
return ret
|
70
|
+
|
71
|
+
@staticmethod
|
72
|
+
def unpack(packet: "Packet") -> "PhotonTrackedTarget":
|
73
|
+
ret = PhotonTrackedTarget()
|
74
|
+
|
75
|
+
# yaw is of intrinsic type float64
|
76
|
+
ret.yaw = packet.decodeDouble()
|
77
|
+
|
78
|
+
# pitch is of intrinsic type float64
|
79
|
+
ret.pitch = packet.decodeDouble()
|
80
|
+
|
81
|
+
# area is of intrinsic type float64
|
82
|
+
ret.area = packet.decodeDouble()
|
83
|
+
|
84
|
+
# skew is of intrinsic type float64
|
85
|
+
ret.skew = packet.decodeDouble()
|
86
|
+
|
87
|
+
# fiducialId is of intrinsic type int32
|
88
|
+
ret.fiducialId = packet.decodeInt()
|
89
|
+
|
90
|
+
# objDetectId is of intrinsic type int32
|
91
|
+
ret.objDetectId = packet.decodeInt()
|
92
|
+
|
93
|
+
# objDetectConf is of intrinsic type float32
|
94
|
+
ret.objDetectConf = packet.decodeFloat()
|
95
|
+
|
96
|
+
ret.bestCameraToTarget = packet.decodeTransform()
|
97
|
+
|
98
|
+
ret.altCameraToTarget = packet.decodeTransform()
|
99
|
+
|
100
|
+
# poseAmbiguity is of intrinsic type float64
|
101
|
+
ret.poseAmbiguity = packet.decodeDouble()
|
102
|
+
|
103
|
+
# minAreaRectCorners is a custom VLA!
|
104
|
+
ret.minAreaRectCorners = packet.decodeList(TargetCorner.photonStruct)
|
105
|
+
|
106
|
+
# detectedCorners is a custom VLA!
|
107
|
+
ret.detectedCorners = packet.decodeList(TargetCorner.photonStruct)
|
108
|
+
|
109
|
+
return ret
|
110
|
+
|
111
|
+
|
112
|
+
# Hack ourselves into the base class
|
113
|
+
PhotonTrackedTarget.photonStruct = PhotonTrackedTargetSerde()
|
@@ -0,0 +1,71 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Copyright (C) Photon Vision.
|
3
|
+
###############################################################################
|
4
|
+
## This program is free software: you can redistribute it and/or modify
|
5
|
+
## it under the terms of the GNU General Public License as published by
|
6
|
+
## the Free Software Foundation, either version 3 of the License, or
|
7
|
+
## (at your option) any later version.
|
8
|
+
##
|
9
|
+
## This program is distributed in the hope that it will be useful,
|
10
|
+
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
## GNU General Public License for more details.
|
13
|
+
##
|
14
|
+
## You should have received a copy of the GNU General Public License
|
15
|
+
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
|
+
###############################################################################
|
17
|
+
|
18
|
+
###############################################################################
|
19
|
+
## THIS FILE WAS AUTO-GENERATED BY ./photon-serde/generate_messages.py.
|
20
|
+
## --> DO NOT MODIFY <--
|
21
|
+
###############################################################################
|
22
|
+
|
23
|
+
from ..targeting import *
|
24
|
+
from ..packet import Packet
|
25
|
+
|
26
|
+
|
27
|
+
class PnpResultSerde:
|
28
|
+
# Message definition md5sum. See photon_packet.adoc for details
|
29
|
+
MESSAGE_VERSION = "ae4d655c0a3104d88df4f5db144c1e86"
|
30
|
+
MESSAGE_FORMAT = "Transform3d best;Transform3d alt;float64 bestReprojErr;float64 altReprojErr;float64 ambiguity;"
|
31
|
+
|
32
|
+
@staticmethod
|
33
|
+
def pack(value: "PnpResult") -> "Packet":
|
34
|
+
ret = Packet()
|
35
|
+
|
36
|
+
ret.encodeTransform(value.best)
|
37
|
+
|
38
|
+
ret.encodeTransform(value.alt)
|
39
|
+
|
40
|
+
# bestReprojErr is of intrinsic type float64
|
41
|
+
ret.encodeDouble(value.bestReprojErr)
|
42
|
+
|
43
|
+
# altReprojErr is of intrinsic type float64
|
44
|
+
ret.encodeDouble(value.altReprojErr)
|
45
|
+
|
46
|
+
# ambiguity is of intrinsic type float64
|
47
|
+
ret.encodeDouble(value.ambiguity)
|
48
|
+
return ret
|
49
|
+
|
50
|
+
@staticmethod
|
51
|
+
def unpack(packet: "Packet") -> "PnpResult":
|
52
|
+
ret = PnpResult()
|
53
|
+
|
54
|
+
ret.best = packet.decodeTransform()
|
55
|
+
|
56
|
+
ret.alt = packet.decodeTransform()
|
57
|
+
|
58
|
+
# bestReprojErr is of intrinsic type float64
|
59
|
+
ret.bestReprojErr = packet.decodeDouble()
|
60
|
+
|
61
|
+
# altReprojErr is of intrinsic type float64
|
62
|
+
ret.altReprojErr = packet.decodeDouble()
|
63
|
+
|
64
|
+
# ambiguity is of intrinsic type float64
|
65
|
+
ret.ambiguity = packet.decodeDouble()
|
66
|
+
|
67
|
+
return ret
|
68
|
+
|
69
|
+
|
70
|
+
# Hack ourselves into the base class
|
71
|
+
PnpResult.photonStruct = PnpResultSerde()
|
@@ -0,0 +1,57 @@
|
|
1
|
+
###############################################################################
|
2
|
+
## Copyright (C) Photon Vision.
|
3
|
+
###############################################################################
|
4
|
+
## This program is free software: you can redistribute it and/or modify
|
5
|
+
## it under the terms of the GNU General Public License as published by
|
6
|
+
## the Free Software Foundation, either version 3 of the License, or
|
7
|
+
## (at your option) any later version.
|
8
|
+
##
|
9
|
+
## This program is distributed in the hope that it will be useful,
|
10
|
+
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
## GNU General Public License for more details.
|
13
|
+
##
|
14
|
+
## You should have received a copy of the GNU General Public License
|
15
|
+
## along with this program. If not, see <https://www.gnu.org/licenses/>.
|
16
|
+
###############################################################################
|
17
|
+
|
18
|
+
###############################################################################
|
19
|
+
## THIS FILE WAS AUTO-GENERATED BY ./photon-serde/generate_messages.py.
|
20
|
+
## --> DO NOT MODIFY <--
|
21
|
+
###############################################################################
|
22
|
+
|
23
|
+
from ..targeting import *
|
24
|
+
from ..packet import Packet
|
25
|
+
|
26
|
+
|
27
|
+
class TargetCornerSerde:
|
28
|
+
# Message definition md5sum. See photon_packet.adoc for details
|
29
|
+
MESSAGE_VERSION = "16f6ac0dedc8eaccb951f4895d9e18b6"
|
30
|
+
MESSAGE_FORMAT = "float64 x;float64 y;"
|
31
|
+
|
32
|
+
@staticmethod
|
33
|
+
def pack(value: "TargetCorner") -> "Packet":
|
34
|
+
ret = Packet()
|
35
|
+
|
36
|
+
# x is of intrinsic type float64
|
37
|
+
ret.encodeDouble(value.x)
|
38
|
+
|
39
|
+
# y is of intrinsic type float64
|
40
|
+
ret.encodeDouble(value.y)
|
41
|
+
return ret
|
42
|
+
|
43
|
+
@staticmethod
|
44
|
+
def unpack(packet: "Packet") -> "TargetCorner":
|
45
|
+
ret = TargetCorner()
|
46
|
+
|
47
|
+
# x is of intrinsic type float64
|
48
|
+
ret.x = packet.decodeDouble()
|
49
|
+
|
50
|
+
# y is of intrinsic type float64
|
51
|
+
ret.y = packet.decodeDouble()
|
52
|
+
|
53
|
+
return ret
|
54
|
+
|
55
|
+
|
56
|
+
# Hack ourselves into the base class
|
57
|
+
TargetCorner.photonStruct = TargetCornerSerde()
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# no one but us chickens
|
2
|
+
|
3
|
+
from .MultiTargetPNPResultSerde import MultiTargetPNPResultSerde # noqa
|
4
|
+
from .PhotonPipelineMetadataSerde import PhotonPipelineMetadataSerde # noqa
|
5
|
+
from .PhotonPipelineMetadataSerde import PhotonPipelineMetadataSerde # noqa
|
6
|
+
from .PhotonPipelineResultSerde import PhotonPipelineResultSerde # noqa
|
7
|
+
from .PhotonTrackedTargetSerde import PhotonTrackedTargetSerde # noqa
|
8
|
+
from .PnpResultSerde import PnpResultSerde # noqa
|
9
|
+
from .TargetCornerSerde import TargetCornerSerde # noqa
|