robotrace-sdk 2.0.0__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.
- robotrace/__init__.py +97 -0
- robotrace/_semconv.py +45 -0
- robotrace/client.py +1022 -0
- robotrace/commands.py +234 -0
- robotrace/component.py +83 -0
- robotrace/decorators.py +193 -0
- robotrace/fleet.py +240 -0
- robotrace/integrations/__init__.py +0 -0
- robotrace/integrations/rosp.py +111 -0
- robotrace/models.py +309 -0
- robotrace/offline_queue.py +360 -0
- robotrace/processor.py +173 -0
- robotrace/py.typed +0 -0
- robotrace/recorder.py +475 -0
- robotrace/ros2/__init__.py +41 -0
- robotrace/ros2/__main__.py +5 -0
- robotrace/ros2/_imports.py +31 -0
- robotrace/ros2/_timestamp.py +11 -0
- robotrace/ros2/bridge.py +364 -0
- robotrace/ros2/converters.py +535 -0
- robotrace/sensor.py +259 -0
- robotrace/streaming.py +95 -0
- robotrace/timelines.py +110 -0
- robotrace/types.py +470 -0
- robotrace_sdk-2.0.0.dist-info/METADATA +272 -0
- robotrace_sdk-2.0.0.dist-info/RECORD +28 -0
- robotrace_sdk-2.0.0.dist-info/WHEEL +4 -0
- robotrace_sdk-2.0.0.dist-info/licenses/LICENSE +21 -0
robotrace/__init__.py
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""RoboTrace SDK v2 — OTel-native robot observability.
|
|
2
|
+
|
|
3
|
+
Quick start::
|
|
4
|
+
|
|
5
|
+
from robotrace import RoboTrace, mission, phase, Scalar, Pose3D
|
|
6
|
+
|
|
7
|
+
rt = RoboTrace(
|
|
8
|
+
host="http://localhost:8080",
|
|
9
|
+
public_key="rt-pk-xxx",
|
|
10
|
+
secret_key="rt-sk-xxx",
|
|
11
|
+
device_id="urn:rosp:device:robotis:turtlebot3:001",
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
with rt.mission("deliver_pallet", tags=["zone-B"]) as m:
|
|
15
|
+
with m.phase("navigate") as nav:
|
|
16
|
+
nav.log("robot/pose", Pose3D(x=1.0, y=2.0, z=0.0))
|
|
17
|
+
nav.log("sensors/battery", Scalar(87.5))
|
|
18
|
+
m.score("success", True)
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
import logging as _logging
|
|
22
|
+
|
|
23
|
+
# Python library best practice: NullHandler prevents "No handler found" warnings
|
|
24
|
+
# when the application doesn't configure logging. Users configure their own handlers.
|
|
25
|
+
_logging.getLogger("robotrace").addHandler(_logging.NullHandler())
|
|
26
|
+
|
|
27
|
+
# Single version source — read from installed package metadata, fallback to hardcoded.
|
|
28
|
+
# Must be defined before submodule imports (client.py and decorators.py reference it).
|
|
29
|
+
try:
|
|
30
|
+
from importlib.metadata import version as _pkg_version
|
|
31
|
+
__version__ = _pkg_version("robotrace-sdk")
|
|
32
|
+
except Exception:
|
|
33
|
+
__version__ = "2.0.0"
|
|
34
|
+
|
|
35
|
+
from .client import RoboTrace
|
|
36
|
+
from .commands import CommandChannel
|
|
37
|
+
from .component import Component
|
|
38
|
+
from .fleet import RoboTraceFleet
|
|
39
|
+
from .decorators import mission, phase
|
|
40
|
+
from .recorder import McapRecorder, mcap_available
|
|
41
|
+
from .streaming import StreamingCamera
|
|
42
|
+
from .types import (
|
|
43
|
+
Battery,
|
|
44
|
+
Bitset,
|
|
45
|
+
BoundingBox2D,
|
|
46
|
+
BoundingBox3D,
|
|
47
|
+
DepthImage,
|
|
48
|
+
GeoLocation,
|
|
49
|
+
Image,
|
|
50
|
+
JointState,
|
|
51
|
+
LaserScan,
|
|
52
|
+
Log,
|
|
53
|
+
NumericSet,
|
|
54
|
+
Path,
|
|
55
|
+
PointCloud,
|
|
56
|
+
Pose3D,
|
|
57
|
+
Scalar,
|
|
58
|
+
Transform3D,
|
|
59
|
+
Twist,
|
|
60
|
+
Vector3,
|
|
61
|
+
VectorN,
|
|
62
|
+
Video,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
__all__ = [
|
|
66
|
+
"RoboTrace",
|
|
67
|
+
"RoboTraceFleet",
|
|
68
|
+
"CommandChannel",
|
|
69
|
+
"Component",
|
|
70
|
+
"mission",
|
|
71
|
+
"phase",
|
|
72
|
+
"McapRecorder",
|
|
73
|
+
"mcap_available",
|
|
74
|
+
"StreamingCamera",
|
|
75
|
+
# Timeline values are set via rt.set_time() / rt.reset_time() on the RoboTrace instance
|
|
76
|
+
"Scalar",
|
|
77
|
+
"Vector3",
|
|
78
|
+
"VectorN",
|
|
79
|
+
"Pose3D",
|
|
80
|
+
"Transform3D",
|
|
81
|
+
"PointCloud",
|
|
82
|
+
"Image",
|
|
83
|
+
"DepthImage",
|
|
84
|
+
"LaserScan",
|
|
85
|
+
"JointState",
|
|
86
|
+
"NumericSet",
|
|
87
|
+
"GeoLocation",
|
|
88
|
+
"Path",
|
|
89
|
+
"Twist",
|
|
90
|
+
"BoundingBox2D",
|
|
91
|
+
"BoundingBox3D",
|
|
92
|
+
"Video",
|
|
93
|
+
"Log",
|
|
94
|
+
"Battery",
|
|
95
|
+
"Bitset",
|
|
96
|
+
]
|
|
97
|
+
|
robotrace/_semconv.py
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""RoboTrace semantic convention constants for OpenTelemetry."""
|
|
2
|
+
|
|
3
|
+
# Resource attributes (robot identity)
|
|
4
|
+
ROBOT_ID = "robot.id"
|
|
5
|
+
ROBOT_TYPE = "robot.type"
|
|
6
|
+
ROBOT_MANUFACTURER = "robot.manufacturer"
|
|
7
|
+
ROBOT_MODEL = "robot.model"
|
|
8
|
+
ROBOT_FIRMWARE_VERSION = "robot.firmware_version"
|
|
9
|
+
ROBOT_FLEET = "robot.fleet"
|
|
10
|
+
|
|
11
|
+
# Mission attributes (trace-level)
|
|
12
|
+
MISSION_NAME = "robotrace.mission.name"
|
|
13
|
+
MISSION_STATUS = "robotrace.mission.status"
|
|
14
|
+
MISSION_TAGS = "robotrace.mission.tags"
|
|
15
|
+
SHIFT_ID = "robotrace.shift.id"
|
|
16
|
+
|
|
17
|
+
# Phase attributes (span-level)
|
|
18
|
+
PHASE_TYPE = "robotrace.phase.type"
|
|
19
|
+
PHASE_COMMAND = "robotrace.phase.command"
|
|
20
|
+
|
|
21
|
+
# Decision attributes
|
|
22
|
+
DECISION_MODEL = "robotrace.decision.model"
|
|
23
|
+
DECISION_INPUT = "robotrace.decision.input"
|
|
24
|
+
DECISION_OUTPUT = "robotrace.decision.output"
|
|
25
|
+
DECISION_CONFIDENCE = "robotrace.decision.confidence"
|
|
26
|
+
|
|
27
|
+
# Event attributes
|
|
28
|
+
EVENT_NAME = "robotrace.event.name"
|
|
29
|
+
EVENT_SEVERITY = "robotrace.event.severity"
|
|
30
|
+
|
|
31
|
+
# Score attributes
|
|
32
|
+
SCORE_NAME = "robotrace.score.name"
|
|
33
|
+
SCORE_VALUE = "robotrace.score.value"
|
|
34
|
+
SCORE_SOURCE = "robotrace.score.source"
|
|
35
|
+
SCORE_COMMENT = "robotrace.score.comment"
|
|
36
|
+
|
|
37
|
+
# Telemetry attributes
|
|
38
|
+
TELEMETRY_STREAM = "robotrace.telemetry.stream"
|
|
39
|
+
TELEMETRY_SENSOR_ID = "robotrace.telemetry.sensor_id"
|
|
40
|
+
|
|
41
|
+
# SDK metadata
|
|
42
|
+
SDK_NAME = "robotrace.sdk.name"
|
|
43
|
+
SDK_VERSION = "robotrace.sdk.version"
|
|
44
|
+
ENVIRONMENT = "robotrace.environment"
|
|
45
|
+
RELEASE = "robotrace.release"
|