antioch-py 2.2.4__py3-none-any.whl → 3.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.
Potentially problematic release.
This version of antioch-py might be problematic. Click here for more details.
- antioch/__init__.py +101 -0
- antioch/{module/execution.py → execution.py} +1 -1
- antioch/{module/input.py → input.py} +2 -4
- antioch/{module/module.py → module.py} +17 -34
- antioch/{module/node.py → node.py} +17 -16
- {antioch_py-2.2.4.dist-info → antioch_py-3.0.0.dist-info}/METADATA +8 -11
- antioch_py-3.0.0.dist-info/RECORD +61 -0
- {antioch_py-2.2.4.dist-info → antioch_py-3.0.0.dist-info}/WHEEL +1 -1
- antioch_py-3.0.0.dist-info/licenses/LICENSE +21 -0
- common/ark/__init__.py +6 -16
- common/ark/ark.py +23 -62
- common/ark/hardware.py +1 -1
- common/ark/kinematics.py +1 -1
- common/ark/module.py +22 -0
- common/ark/node.py +46 -3
- common/ark/scheduler.py +2 -29
- common/ark/sim.py +1 -1
- {antioch/module → common/ark}/token.py +17 -0
- common/assets/rigging.usd +0 -0
- common/constants.py +63 -5
- common/core/__init__.py +37 -24
- common/core/auth.py +87 -112
- common/core/container.py +261 -0
- common/core/registry.py +131 -152
- common/core/rome.py +251 -0
- common/core/telemetry.py +176 -0
- common/core/types.py +219 -0
- common/message/__init__.py +19 -5
- common/message/annotation.py +174 -23
- common/message/array.py +25 -1
- common/message/camera.py +23 -1
- common/message/color.py +32 -6
- common/message/detection.py +40 -0
- common/message/foxglove.py +20 -0
- common/message/frame.py +71 -7
- common/message/image.py +58 -9
- common/message/imu.py +24 -4
- common/message/joint.py +69 -10
- common/message/log.py +52 -7
- common/message/pir.py +23 -8
- common/message/plot.py +57 -0
- common/message/point.py +55 -6
- common/message/point_cloud.py +55 -19
- common/message/pose.py +59 -19
- common/message/quaternion.py +105 -92
- common/message/radar.py +195 -29
- common/message/twist.py +34 -0
- common/message/types.py +40 -5
- common/message/vector.py +180 -245
- common/sim/__init__.py +49 -0
- common/{session/config.py → sim/objects.py} +97 -27
- common/sim/state.py +11 -0
- common/utils/comms.py +30 -12
- common/utils/logger.py +26 -7
- antioch/message.py +0 -87
- antioch/module/__init__.py +0 -53
- antioch/session/__init__.py +0 -152
- antioch/session/ark.py +0 -500
- antioch/session/asset.py +0 -65
- antioch/session/error.py +0 -80
- antioch/session/objects/__init__.py +0 -40
- antioch/session/objects/animation.py +0 -162
- antioch/session/objects/articulation.py +0 -180
- antioch/session/objects/basis_curve.py +0 -180
- antioch/session/objects/camera.py +0 -65
- antioch/session/objects/collision.py +0 -46
- antioch/session/objects/geometry.py +0 -58
- antioch/session/objects/ground_plane.py +0 -48
- antioch/session/objects/imu.py +0 -53
- antioch/session/objects/joint.py +0 -49
- antioch/session/objects/light.py +0 -123
- antioch/session/objects/pir_sensor.py +0 -102
- antioch/session/objects/radar.py +0 -62
- antioch/session/objects/rigid_body.py +0 -197
- antioch/session/objects/xform.py +0 -119
- antioch/session/record.py +0 -158
- antioch/session/scene.py +0 -1544
- antioch/session/session.py +0 -211
- antioch/session/task.py +0 -309
- antioch_py-2.2.4.dist-info/RECORD +0 -85
- antioch_py-2.2.4.dist-info/entry_points.txt +0 -2
- common/core/agent.py +0 -324
- common/core/task.py +0 -36
- common/message/velocity.py +0 -11
- common/rome/__init__.py +0 -9
- common/rome/client.py +0 -435
- common/rome/error.py +0 -16
- common/session/__init__.py +0 -31
- common/session/environment.py +0 -31
- common/session/sim.py +0 -129
- common/utils/usd.py +0 -12
- /antioch/{module/clock.py → clock.py} +0 -0
- {antioch_py-2.2.4.dist-info → antioch_py-3.0.0.dist-info}/top_level.txt +0 -0
- /common/message/{base.py → message.py} +0 -0
antioch/__init__.py
CHANGED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
from antioch.clock import Clock
|
|
2
|
+
from antioch.execution import Execution
|
|
3
|
+
from antioch.input import NodeInputBuffer
|
|
4
|
+
from antioch.module import Module
|
|
5
|
+
from antioch.node import Node
|
|
6
|
+
from common.ark import Environment
|
|
7
|
+
from common.ark.token import Token, TokenType
|
|
8
|
+
from common.message import (
|
|
9
|
+
Array,
|
|
10
|
+
Bool,
|
|
11
|
+
CameraInfo,
|
|
12
|
+
CircleAnnotation,
|
|
13
|
+
Color,
|
|
14
|
+
DeserializationError,
|
|
15
|
+
Float,
|
|
16
|
+
FrameTransform,
|
|
17
|
+
FrameTransforms,
|
|
18
|
+
Image,
|
|
19
|
+
ImageAnnotations,
|
|
20
|
+
ImageEncoding,
|
|
21
|
+
Int,
|
|
22
|
+
JointState,
|
|
23
|
+
JointStates,
|
|
24
|
+
JointTarget,
|
|
25
|
+
JointTargets,
|
|
26
|
+
Log,
|
|
27
|
+
LogLevel,
|
|
28
|
+
Message,
|
|
29
|
+
MessageError,
|
|
30
|
+
MismatchError,
|
|
31
|
+
Point2,
|
|
32
|
+
Point3,
|
|
33
|
+
PointCloud,
|
|
34
|
+
PointsAnnotation,
|
|
35
|
+
PointsAnnotationType,
|
|
36
|
+
Pose,
|
|
37
|
+
Quaternion,
|
|
38
|
+
RadarScan,
|
|
39
|
+
SerializationError,
|
|
40
|
+
String,
|
|
41
|
+
TextAnnotation,
|
|
42
|
+
Vector2,
|
|
43
|
+
Vector3,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
__all__ = [
|
|
47
|
+
# Core
|
|
48
|
+
"Clock",
|
|
49
|
+
"Environment",
|
|
50
|
+
"Execution",
|
|
51
|
+
"Module",
|
|
52
|
+
"Node",
|
|
53
|
+
"NodeInputBuffer",
|
|
54
|
+
"Token",
|
|
55
|
+
"TokenType",
|
|
56
|
+
# Base types
|
|
57
|
+
"Message",
|
|
58
|
+
"MessageError",
|
|
59
|
+
"DeserializationError",
|
|
60
|
+
"SerializationError",
|
|
61
|
+
"MismatchError",
|
|
62
|
+
# Primitive types
|
|
63
|
+
"Array",
|
|
64
|
+
"Bool",
|
|
65
|
+
"Float",
|
|
66
|
+
"Int",
|
|
67
|
+
"String",
|
|
68
|
+
# Geometry types
|
|
69
|
+
"Point2",
|
|
70
|
+
"Point3",
|
|
71
|
+
"Vector2",
|
|
72
|
+
"Vector3",
|
|
73
|
+
"Pose",
|
|
74
|
+
"Quaternion",
|
|
75
|
+
# Color
|
|
76
|
+
"Color",
|
|
77
|
+
# Camera types
|
|
78
|
+
"CameraInfo",
|
|
79
|
+
"Image",
|
|
80
|
+
"ImageEncoding",
|
|
81
|
+
# Joint types
|
|
82
|
+
"JointState",
|
|
83
|
+
"JointStates",
|
|
84
|
+
"JointTarget",
|
|
85
|
+
"JointTargets",
|
|
86
|
+
# Sensor types
|
|
87
|
+
"RadarScan",
|
|
88
|
+
"PointCloud",
|
|
89
|
+
# Logging
|
|
90
|
+
"Log",
|
|
91
|
+
"LogLevel",
|
|
92
|
+
# Annotations
|
|
93
|
+
"CircleAnnotation",
|
|
94
|
+
"ImageAnnotations",
|
|
95
|
+
"PointsAnnotation",
|
|
96
|
+
"PointsAnnotationType",
|
|
97
|
+
"TextAnnotation",
|
|
98
|
+
# Frame transforms
|
|
99
|
+
"FrameTransform",
|
|
100
|
+
"FrameTransforms",
|
|
101
|
+
]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import time
|
|
2
2
|
from typing import TypeVar, overload
|
|
3
3
|
|
|
4
|
-
from antioch.module.token import Token, TokenType
|
|
5
4
|
from common.ark.module import ModuleParameter
|
|
6
5
|
from common.ark.node import NodeOutput
|
|
6
|
+
from common.ark.token import Token, TokenType
|
|
7
7
|
from common.message import Image, ImuSample, JointStates, JointTargets, Message, PirStatus, RadarScan
|
|
8
8
|
from common.utils.logger import Logger
|
|
9
9
|
from common.utils.time import now_us
|
|
@@ -3,12 +3,10 @@ from threading import Lock
|
|
|
3
3
|
import zenoh
|
|
4
4
|
from sortedcontainers import SortedDict
|
|
5
5
|
|
|
6
|
-
from antioch.module.token import Token, TokenType
|
|
7
6
|
from common.ark.node import NodeInput
|
|
7
|
+
from common.ark.token import ARK_TOKEN_PATH, Token, TokenType
|
|
8
8
|
from common.utils.comms import CommsSession
|
|
9
9
|
|
|
10
|
-
TOKEN_INPUT_PATH = "_token/{path}"
|
|
11
|
-
|
|
12
10
|
|
|
13
11
|
class NodeInputBuffer:
|
|
14
12
|
"""
|
|
@@ -33,7 +31,7 @@ class NodeInputBuffer:
|
|
|
33
31
|
self._tokens: SortedDict[tuple[int, str, str], Token] = SortedDict()
|
|
34
32
|
|
|
35
33
|
# Subscribe to token path with callback
|
|
36
|
-
path =
|
|
34
|
+
path = ARK_TOKEN_PATH.format(path=config.path)
|
|
37
35
|
self._subscriber = comms.declare_callback_subscriber(path, self._on_token)
|
|
38
36
|
|
|
39
37
|
def close(self) -> None:
|
|
@@ -4,35 +4,17 @@ import signal
|
|
|
4
4
|
import threading
|
|
5
5
|
from collections.abc import Callable
|
|
6
6
|
|
|
7
|
-
from antioch.
|
|
8
|
-
from antioch.
|
|
7
|
+
from antioch.execution import Execution
|
|
8
|
+
from antioch.node import Node
|
|
9
9
|
from common.ark.ark import Ark, Environment
|
|
10
|
-
from common.ark.module import ModuleParameter
|
|
11
|
-
from common.message import Message
|
|
10
|
+
from common.ark.module import ModuleParameter, ModuleReady, ModuleStart
|
|
12
11
|
from common.utils.comms import CommsSession
|
|
13
12
|
from common.utils.logger import Logger
|
|
14
13
|
from common.utils.time import now_us
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class ModuleReady(Message):
|
|
21
|
-
"""
|
|
22
|
-
Module ready message sent during handshake.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
_type = "antioch/agent/module_ready"
|
|
26
|
-
module_name: str
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class ModuleStart(Message):
|
|
30
|
-
"""
|
|
31
|
-
Module start message received during handshake.
|
|
32
|
-
"""
|
|
33
|
-
|
|
34
|
-
_type = "antioch/agent/module_start"
|
|
35
|
-
global_start_time_us: int
|
|
15
|
+
# Synchronization paths for module coordination
|
|
16
|
+
ARK_MODULE_READY_PATH = "_ark/module_ready"
|
|
17
|
+
ARK_MODULE_START_PATH = "_ark/module_start"
|
|
36
18
|
|
|
37
19
|
|
|
38
20
|
class Module:
|
|
@@ -41,8 +23,8 @@ class Module:
|
|
|
41
23
|
mode of operation:
|
|
42
24
|
|
|
43
25
|
> Container Mode (default): The module runs inside a Kubernetes pod managed by the
|
|
44
|
-
Antioch
|
|
45
|
-
|
|
26
|
+
Antioch runtime. Configuration is automatically loaded from environment variables
|
|
27
|
+
(_MODULE_NAME, _ARK, _ENVIRONMENT, _DEBUG).
|
|
46
28
|
|
|
47
29
|
> Local Mode: The module runs standalone for testing and development. Configuration
|
|
48
30
|
must be explicitly provided via constructor parameters (module_name, ark, environment,
|
|
@@ -53,8 +35,8 @@ class Module:
|
|
|
53
35
|
before registering node callbacks.
|
|
54
36
|
|
|
55
37
|
Users register node callbacks via register() and then call spin() to start execution.
|
|
56
|
-
The Ark will not start until spin() is called, which begins the
|
|
57
|
-
|
|
38
|
+
The Ark will not start until spin() is called, which begins the synchronization
|
|
39
|
+
handshake and starts processing node callbacks.
|
|
58
40
|
|
|
59
41
|
Example:
|
|
60
42
|
# Container mode
|
|
@@ -142,8 +124,8 @@ class Module:
|
|
|
142
124
|
"""
|
|
143
125
|
|
|
144
126
|
comms = CommsSession()
|
|
145
|
-
logger = Logger(
|
|
146
|
-
global_start_time_us = now_us() if self._is_local_mode else self.
|
|
127
|
+
logger = Logger(base_channel=self.module_name, debug=self.debug, print_logs=True)
|
|
128
|
+
global_start_time_us = now_us() if self._is_local_mode else self._perform_startup_handshake(comms)
|
|
147
129
|
|
|
148
130
|
# Validate node callbacks
|
|
149
131
|
for node_name in self._node_callbacks:
|
|
@@ -174,6 +156,7 @@ class Module:
|
|
|
174
156
|
self._shutdown_event.wait()
|
|
175
157
|
|
|
176
158
|
logger.info("Module exiting")
|
|
159
|
+
logger.close()
|
|
177
160
|
comms.close()
|
|
178
161
|
|
|
179
162
|
def join(self, timeout: float | None = None) -> None:
|
|
@@ -190,9 +173,9 @@ class Module:
|
|
|
190
173
|
for node in self._nodes.values():
|
|
191
174
|
node.join(timeout=timeout)
|
|
192
175
|
|
|
193
|
-
def
|
|
176
|
+
def _perform_startup_handshake(self, comms: CommsSession) -> int:
|
|
194
177
|
"""
|
|
195
|
-
Perform handshake
|
|
178
|
+
Perform startup handshake to receive global start time.
|
|
196
179
|
|
|
197
180
|
Publishes ready message and blocks waiting for start message containing
|
|
198
181
|
the global start time for synchronization.
|
|
@@ -201,8 +184,8 @@ class Module:
|
|
|
201
184
|
:return: Global start time in microseconds.
|
|
202
185
|
"""
|
|
203
186
|
|
|
204
|
-
ready_publisher = comms.declare_publisher(
|
|
205
|
-
start_subscriber = comms.declare_subscriber(
|
|
187
|
+
ready_publisher = comms.declare_publisher(ARK_MODULE_READY_PATH)
|
|
188
|
+
start_subscriber = comms.declare_subscriber(ARK_MODULE_START_PATH)
|
|
206
189
|
ready_publisher.publish(ModuleReady(module_name=self.module_name))
|
|
207
190
|
start_msg = start_subscriber.recv(ModuleStart)
|
|
208
191
|
return start_msg.global_start_time_us
|
|
@@ -2,22 +2,21 @@ import traceback
|
|
|
2
2
|
from collections.abc import Callable
|
|
3
3
|
from threading import Event, Thread
|
|
4
4
|
|
|
5
|
-
from antioch.
|
|
6
|
-
from antioch.
|
|
7
|
-
from antioch.
|
|
8
|
-
from antioch.module.token import Token, TokenType
|
|
5
|
+
from antioch.clock import Clock
|
|
6
|
+
from antioch.execution import Execution
|
|
7
|
+
from antioch.input import NodeInputBuffer
|
|
9
8
|
from common.ark.ark import Environment
|
|
10
9
|
from common.ark.module import Module
|
|
11
|
-
from common.ark.node import Node as NodeConfig
|
|
12
|
-
from common.ark.scheduler import
|
|
13
|
-
from common.ark.
|
|
10
|
+
from common.ark.node import Node as NodeConfig, NodeEdge, SimNodeComplete, SimNodeStart
|
|
11
|
+
from common.ark.scheduler import NodeStartEvent, OnlineScheduler
|
|
12
|
+
from common.ark.token import ARK_TOKEN_PATH, InputToken, Token, TokenType
|
|
14
13
|
from common.utils.comms import CommsPublisher, CommsSession
|
|
15
14
|
from common.utils.logger import Logger
|
|
16
15
|
from common.utils.time import now_us
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
# Synchronization paths for node coordination
|
|
18
|
+
ARK_NODE_START_PATH = "_ark/node_start/{module}/{node}"
|
|
19
|
+
ARK_NODE_COMPLETE_PATH = "_ark/node_complete/{module}/{node}"
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
class Node:
|
|
@@ -67,8 +66,8 @@ class Node:
|
|
|
67
66
|
self._callback = callback
|
|
68
67
|
|
|
69
68
|
self._comms = CommsSession()
|
|
70
|
-
self._logger = Logger(
|
|
71
|
-
self._execution_logger = Logger(
|
|
69
|
+
self._logger = Logger(base_channel=module_name, debug=debug, print_logs=True)
|
|
70
|
+
self._execution_logger = Logger(base_channel=module_name, debug=debug, print_logs=True)
|
|
72
71
|
self._shutdown_requested = Event()
|
|
73
72
|
|
|
74
73
|
# Create input buffers for all inputs
|
|
@@ -79,7 +78,7 @@ class Node:
|
|
|
79
78
|
# Create output publishers for all outputs
|
|
80
79
|
self._output_publishers: dict[str, CommsPublisher] = {}
|
|
81
80
|
for output_name, output_config in node_config.outputs.items():
|
|
82
|
-
path =
|
|
81
|
+
path = ARK_TOKEN_PATH.format(path=output_config.path)
|
|
83
82
|
self._output_publishers[output_name] = self._comms.declare_publisher(path)
|
|
84
83
|
|
|
85
84
|
# Create reusable execution context
|
|
@@ -115,7 +114,9 @@ class Node:
|
|
|
115
114
|
for publisher in self._output_publishers.values():
|
|
116
115
|
publisher.close()
|
|
117
116
|
|
|
118
|
-
# Close comms session
|
|
117
|
+
# Close loggers and comms session
|
|
118
|
+
self._logger.close()
|
|
119
|
+
self._execution_logger.close()
|
|
119
120
|
self._comms.close()
|
|
120
121
|
|
|
121
122
|
def join(self, timeout: float | None = None) -> None:
|
|
@@ -135,8 +136,8 @@ class Node:
|
|
|
135
136
|
for shutdown events.
|
|
136
137
|
"""
|
|
137
138
|
|
|
138
|
-
start_path =
|
|
139
|
-
complete_path =
|
|
139
|
+
start_path = ARK_NODE_START_PATH.format(module=self._module_name, node=self._node_name)
|
|
140
|
+
complete_path = ARK_NODE_COMPLETE_PATH.format(module=self._module_name, node=self._node_name)
|
|
140
141
|
start_subscriber = self._comms.declare_async_subscriber(start_path)
|
|
141
142
|
complete_publisher = self._comms.declare_publisher(complete_path)
|
|
142
143
|
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: antioch-py
|
|
3
|
-
Version:
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 3.0.0
|
|
4
|
+
Summary: Antioch Python Module SDK
|
|
5
5
|
Author-email: Antioch Robotics <support@antioch.dev>
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://antioch.com
|
|
8
|
-
Keywords: robotics,simulation,middleware,sdk
|
|
8
|
+
Keywords: robotics,simulation,middleware,sdk,modules
|
|
9
9
|
Classifier: Development Status :: 4 - Beta
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
14
14
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
-
Requires-Python: <3.13,>=3.
|
|
15
|
+
Requires-Python: <3.13,>=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
17
18
|
Requires-Dist: click>=8.0.0
|
|
18
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: docker>=7.0.0
|
|
19
20
|
Requires-Dist: eclipse-zenoh>=1.5.0
|
|
20
|
-
Requires-Dist:
|
|
21
|
+
Requires-Dist: foxglove-sdk>=0.14.1
|
|
21
22
|
Requires-Dist: httpx>=0.27.0
|
|
22
23
|
Requires-Dist: loguru>=0.7.3
|
|
23
24
|
Requires-Dist: msgpack==1.1.1
|
|
@@ -26,13 +27,11 @@ Requires-Dist: numpy==1.26.0
|
|
|
26
27
|
Requires-Dist: ormsgpack>=1.6.0
|
|
27
28
|
Requires-Dist: pydantic>=2.11.6
|
|
28
29
|
Requires-Dist: pydantic>=2.11.7
|
|
29
|
-
Requires-Dist: python-on-whales>=0.78.0
|
|
30
30
|
Requires-Dist: pyyaml>=6.0.2
|
|
31
|
-
Requires-Dist: requests>=2.32.0
|
|
32
31
|
Requires-Dist: scipy==1.15.3
|
|
33
32
|
Requires-Dist: sortedcontainers-stubs>=2.4.3
|
|
34
33
|
Requires-Dist: sortedcontainers>=2.4.0
|
|
35
|
-
|
|
34
|
+
Dynamic: license-file
|
|
36
35
|
|
|
37
36
|
# antioch-py
|
|
38
37
|
|
|
@@ -78,9 +77,7 @@ ark = scene.add_ark(name="my_robot", version="0.1.0")
|
|
|
78
77
|
task = Task()
|
|
79
78
|
task.start(mcap_path="/tmp/recording.mcap")
|
|
80
79
|
|
|
81
|
-
scene.play()
|
|
82
80
|
scene.step(1_000_000) # step 1 second
|
|
83
|
-
scene.pause()
|
|
84
81
|
|
|
85
82
|
task.finish(outcome=TaskOutcome.SUCCESS)
|
|
86
83
|
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
antioch/__init__.py,sha256=KxotEtHzhA1vUI8JEMuhqqB00aBb__3wEa1amL6sdcw,1819
|
|
2
|
+
antioch/clock.py,sha256=54NpvlbkFLtmiLGMXADGCkYbooUaKsDGN-xjjDqq7mw,2026
|
|
3
|
+
antioch/execution.py,sha256=OtKfwpQLcomeB4ggJULnxPyPnI_saB0Q4x5RQ7ME8OE,7991
|
|
4
|
+
antioch/input.py,sha256=KYI6nYRBhZ7hunGV-1LWCikzkLvPqr3KBFWiB555Naw,4291
|
|
5
|
+
antioch/module.py,sha256=C3lW9vLjRdNIo3vJCEdd4Bwz1RYhN0nrREkz25NTBwI,7283
|
|
6
|
+
antioch/node.py,sha256=wL78xzJF2w_bdF5r57QynaC1TsytxgcP2z1JFJyLNAg,14568
|
|
7
|
+
antioch_py-3.0.0.dist-info/licenses/LICENSE,sha256=wR5vy6P03IcUnTO982QeoQxmIhvtE5NjTwza2BFQDmM,1069
|
|
8
|
+
common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
common/constants.py,sha256=3Zx03p0WtqSinijSEwL2tiCSIMUtwgaWU4GVOLavgco,4148
|
|
10
|
+
common/ark/__init__.py,sha256=y0quQ-0Uia2b8-ASzLmMKttXlc6b1buo86xZ7Bbw56w,1353
|
|
11
|
+
common/ark/ark.py,sha256=RvyWE-40a_TFABq4EE2ggmPubA5Lsgk8ZlrKqCkhDfc,2186
|
|
12
|
+
common/ark/hardware.py,sha256=WuKRdHo-JYRQqTULMiSLw10jTq5fUTXADvxpgfzD7IE,2241
|
|
13
|
+
common/ark/kinematics.py,sha256=uBX6P64Cb-g3bH9_5AVtVpW6_LQbHtfIXp0J-edPZuY,737
|
|
14
|
+
common/ark/module.py,sha256=cJR1c9n341R3LswKkuDFbWzlfy7BBG1eo6smb9HvJbo,2420
|
|
15
|
+
common/ark/node.py,sha256=4RiZwOzXrk25w1pU4I6Yakez7tXJTHVRc4IaUt-dtRg,3291
|
|
16
|
+
common/ark/scheduler.py,sha256=iLrK7SBZD74g20kz3Dqa0Ihc2v_Mw9N2wRhGxNXTeQw,15219
|
|
17
|
+
common/ark/sim.py,sha256=2HStdimyo7qrwYU-Av9udlw_xnNYL9rwhA6DgVhReoI,896
|
|
18
|
+
common/ark/token.py,sha256=eB2VxLOBtSRQ8G4MCdnMUW38UkC5s8GFnr0_MYGehhU,1183
|
|
19
|
+
common/assets/__init__.py,sha256=We71LsStYI5-hknGd2XHrvHg8G4k1dity887BnI5oPI,102
|
|
20
|
+
common/assets/rigging.usd,sha256=7OmD3537Nw2pfXQd_NEpI4zot5-q5gjzKH1Vrn4Krgs,8256
|
|
21
|
+
common/core/__init__.py,sha256=qvhwio6hTSH_SMB7YRQqtMUxQBq0OqMmKN5PeJCPvQg,1546
|
|
22
|
+
common/core/auth.py,sha256=UBBBjm29YuIpbhwqYs-Osv-Pe1SHUz2jHvVRbePiT4M,8258
|
|
23
|
+
common/core/container.py,sha256=35YZdqMkUqwjeZUvXE0qtHOh_JmU9Hsh2zPnXltmml4,9170
|
|
24
|
+
common/core/registry.py,sha256=nkkyDVLPbzPVLorM0rKW6ZncM4YXPqFLwxncId5EFc0,11329
|
|
25
|
+
common/core/rome.py,sha256=xdy67kx7DeFhvXpS3Bew4bnvIFekntvELNr9mmQwobM,8575
|
|
26
|
+
common/core/telemetry.py,sha256=zRzWLlBlgVY-5LQkDUJsUe-AGco9q1a881eUMyQWsXM,5662
|
|
27
|
+
common/core/types.py,sha256=vqZ1M57IlvzH06UcZ5Cn_kXyaFR0MEvdY2F_aZ4_XKs,5491
|
|
28
|
+
common/message/__init__.py,sha256=FAGy2loUsjJfotQus3jMAUXtkHy-gxUAkBGhr8ebqgQ,2081
|
|
29
|
+
common/message/annotation.py,sha256=U7UxXjP2jCw3LwCiJ74pHQKynRQhXqFpieXPYGHIIHg,8364
|
|
30
|
+
common/message/array.py,sha256=IbEN7QZSMfE9q7WqmuFMRuklyGfg66Sym47P7dfYLuU,14523
|
|
31
|
+
common/message/camera.py,sha256=UcKilboVC_WaFBnu8Mw2Or_0XBwTTqjtnyTgzSxvizo,3624
|
|
32
|
+
common/message/color.py,sha256=fNbJzLwAJAk-9fULZiU4Iiya0HCm9WtUR8XtjOUOnzA,4192
|
|
33
|
+
common/message/detection.py,sha256=pYmyTrj3NITriS2a0aD3lYpyV5AqxVWyh7yV9TLhzv8,972
|
|
34
|
+
common/message/foxglove.py,sha256=PugU1xQbfZaX6OLBbQyglJ9EbcL0izH5gVWAsPSMa34,599
|
|
35
|
+
common/message/frame.py,sha256=XVQuGQKXQxnw-DWyDn_nJC8YWxf6S8REQ6mWLMXkEWc,3740
|
|
36
|
+
common/message/image.py,sha256=HEQO8rXQnbNlRjBLayHYvLW0NYlHSTXkdReQKfK11i8,6907
|
|
37
|
+
common/message/imu.py,sha256=H8bGAktsgi3wk6j9pyP1ejbz-TrsPGCPYk-kWn-zG80,1107
|
|
38
|
+
common/message/joint.py,sha256=DmMmwCUy6jpi-XKewsvypmoK3UeCpA8hqnwUUN-5bOA,3242
|
|
39
|
+
common/message/log.py,sha256=GxbwEcLI-ypqsa1caips-xhF7CHUgqh1KtmPVf0HIXY,2061
|
|
40
|
+
common/message/message.py,sha256=kdBEmcHy6R9EV_QbarSwPWZE0n_Sar-gXK8g5ceT2-U,18080
|
|
41
|
+
common/message/pir.py,sha256=kJFQUiVyLY6KRVl72IpysiBOW7Q9_6QMdBGYbMa7tpg,964
|
|
42
|
+
common/message/plot.py,sha256=T0T7fjINx3McLlBefktoTt_RFgOGmd3XRzhHxuS_mWs,1460
|
|
43
|
+
common/message/point.py,sha256=W6QKVA83iht1HeWpEEiYttOiDxLicRm7ZFmrHF4TtRw,3577
|
|
44
|
+
common/message/point_cloud.py,sha256=B7J648Eu-0CUG6FmYAhy4Dronw3p4fX3BplQrS6svl4,3016
|
|
45
|
+
common/message/pose.py,sha256=K_JQUdGywBrualum8yp3Pqr773WnCYhqQ1-fgu3vySI,6160
|
|
46
|
+
common/message/quaternion.py,sha256=AjITlZ0qz3NabrmbfKuRWQsGC8seJCGFk8MU06-GaGQ,8562
|
|
47
|
+
common/message/radar.py,sha256=QkCEkWdiTMMCOFbZEKr8PJ_T7sWgJjAUnzcQB_XI72o,7979
|
|
48
|
+
common/message/twist.py,sha256=ODoaJbelQU4qS20cTVed3poHdj6S0o8zx2HPvBkw8gI,974
|
|
49
|
+
common/message/types.py,sha256=DjPRfx-3TMQHdPDTsfjtW0JX_Gu9ywi6eNNs-527uqQ,1325
|
|
50
|
+
common/message/vector.py,sha256=eIB1xRg-Jn2IlOzsgcDouof4Qs7MBgl5JMSt2z2aEoY,18425
|
|
51
|
+
common/sim/__init__.py,sha256=N7qknBhXmu9mxbNwF9M7QlgEfmkXzlq8HId671JncPA,964
|
|
52
|
+
common/sim/objects.py,sha256=x1HElot0Sp_cltG-mM34Z3ZVmCx3056uLfj9Md6g89o,21576
|
|
53
|
+
common/sim/state.py,sha256=2JjMmEDu_MZoZKBx6NYCtNdBaWUD7pDIv0mxNew3r0E,197
|
|
54
|
+
common/utils/__init__.py,sha256=9zRb7XayzCGRs4I94hWKJHyQ1MevlUiTzXsPNBLBX7Y,113
|
|
55
|
+
common/utils/comms.py,sha256=plxwjVOIqT5D2jmT1KEnweiGTMAL_mMhYaB2ztSNPy0,18168
|
|
56
|
+
common/utils/logger.py,sha256=m8DaKzTJJ4vp4VM9IpNtqCbhypF-w1Gwh0x5nsL_hv0,4041
|
|
57
|
+
common/utils/time.py,sha256=kGDzObbaqWOep4vT1Y2W-BheunxdjYBI4V3Nfp4Ck3Q,790
|
|
58
|
+
antioch_py-3.0.0.dist-info/METADATA,sha256=9aOIgRPgFG7hy3nkzCO4D1h4w9C7CztLuoI9Vyrq8As,3396
|
|
59
|
+
antioch_py-3.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
60
|
+
antioch_py-3.0.0.dist-info/top_level.txt,sha256=GtzNccsep3YdBt9VXQ7-ZFsFJFffr4hyZvqg0YqRqtw,15
|
|
61
|
+
antioch_py-3.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2026 Antioch
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
common/ark/__init__.py
CHANGED
|
@@ -1,29 +1,16 @@
|
|
|
1
|
-
from common.ark.ark import
|
|
2
|
-
Ark,
|
|
3
|
-
ArkInfo,
|
|
4
|
-
ArkMetadata,
|
|
5
|
-
ArkReference,
|
|
6
|
-
ArkVersionReference,
|
|
7
|
-
AssetReference,
|
|
8
|
-
AssetVersionReference,
|
|
9
|
-
Environment,
|
|
10
|
-
Kinematics,
|
|
11
|
-
)
|
|
1
|
+
from common.ark.ark import Ark, ArkInfo, ArkMetadata, Environment, Kinematics
|
|
12
2
|
from common.ark.hardware import CameraHardware, Hardware, HardwareType, ImuHardware, PirHardware, RadarHardware
|
|
13
3
|
from common.ark.kinematics import Joint, Link
|
|
14
4
|
from common.ark.module import Module, ModuleImage, ModuleInfo, ModuleKind, ModuleParameter, ParamType
|
|
15
5
|
from common.ark.node import HardwareAccessMode, Node, NodeInput, NodeOutput, NodeTimer
|
|
16
|
-
from common.ark.scheduler import
|
|
6
|
+
from common.ark.scheduler import NodeCompleteEvent, NodeEdge, NodeStartEvent, NodeState, OnlineScheduler, ScheduleEvent
|
|
7
|
+
from common.ark.token import InputToken, Token, TokenType
|
|
17
8
|
|
|
18
9
|
__all__ = [
|
|
19
10
|
# Core Ark types
|
|
20
11
|
"Ark",
|
|
21
12
|
"ArkInfo",
|
|
22
13
|
"ArkMetadata",
|
|
23
|
-
"AssetReference",
|
|
24
|
-
"AssetVersionReference",
|
|
25
|
-
"ArkReference",
|
|
26
|
-
"ArkVersionReference",
|
|
27
14
|
"Environment",
|
|
28
15
|
"Kinematics",
|
|
29
16
|
# Module types
|
|
@@ -57,4 +44,7 @@ __all__ = [
|
|
|
57
44
|
"ScheduleEvent",
|
|
58
45
|
"NodeState",
|
|
59
46
|
"OnlineScheduler",
|
|
47
|
+
# Token types
|
|
48
|
+
"Token",
|
|
49
|
+
"TokenType",
|
|
60
50
|
]
|
common/ark/ark.py
CHANGED
|
@@ -2,7 +2,7 @@ from enum import Enum
|
|
|
2
2
|
|
|
3
3
|
from common.ark.hardware import Hardware
|
|
4
4
|
from common.ark.kinematics import Joint, Link
|
|
5
|
-
from common.ark.module import Module
|
|
5
|
+
from common.ark.module import Module, ModuleImage
|
|
6
6
|
from common.ark.scheduler import NodeEdge
|
|
7
7
|
from common.message import Message
|
|
8
8
|
|
|
@@ -53,56 +53,6 @@ class Kinematics(Message):
|
|
|
53
53
|
joints: list[Joint]
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
class ArkVersionReference(Message):
|
|
57
|
-
"""
|
|
58
|
-
Reference to an Ark version in the remote Ark registry.
|
|
59
|
-
"""
|
|
60
|
-
|
|
61
|
-
version: str
|
|
62
|
-
created_at: str
|
|
63
|
-
updated_at: str
|
|
64
|
-
full_path: str
|
|
65
|
-
size_bytes: int
|
|
66
|
-
asset_path: str | None = None
|
|
67
|
-
asset_size_bytes: int | None = None
|
|
68
|
-
metadata: dict[str, str] = {}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
class ArkReference(Message):
|
|
72
|
-
"""
|
|
73
|
-
Reference to an Ark in the remote Ark registry.
|
|
74
|
-
"""
|
|
75
|
-
|
|
76
|
-
name: str
|
|
77
|
-
versions: list[ArkVersionReference]
|
|
78
|
-
created_at: str
|
|
79
|
-
updated_at: str
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
class AssetVersionReference(Message):
|
|
83
|
-
"""
|
|
84
|
-
Reference to a specific asset version.
|
|
85
|
-
"""
|
|
86
|
-
|
|
87
|
-
version: str
|
|
88
|
-
full_path: str
|
|
89
|
-
size_bytes: int
|
|
90
|
-
created_at: str
|
|
91
|
-
updated_at: str
|
|
92
|
-
metadata: dict[str, str] = {}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
class AssetReference(Message):
|
|
96
|
-
"""
|
|
97
|
-
Reference to an asset with all its versions.
|
|
98
|
-
"""
|
|
99
|
-
|
|
100
|
-
name: str
|
|
101
|
-
versions: list[AssetVersionReference]
|
|
102
|
-
created_at: str
|
|
103
|
-
updated_at: str
|
|
104
|
-
|
|
105
|
-
|
|
106
56
|
class Ark(Message):
|
|
107
57
|
"""
|
|
108
58
|
Antioch Ark specification.
|
|
@@ -117,14 +67,25 @@ class Ark(Message):
|
|
|
117
67
|
kinematics: Kinematics
|
|
118
68
|
hardware: list[Hardware]
|
|
119
69
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
70
|
+
def collect_image_names(self, environment: Environment | None = None) -> list[str]:
|
|
71
|
+
"""
|
|
72
|
+
Collect all Docker image names used by modules in this Ark.
|
|
73
|
+
|
|
74
|
+
:param environment: Filter images by environment (SIM or REAL). If None, collects all images.
|
|
75
|
+
:return: List of unique image names sorted alphabetically.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
images: set[str] = set()
|
|
79
|
+
for module in self.modules:
|
|
80
|
+
if isinstance(module.image, str):
|
|
81
|
+
# Simple string image
|
|
82
|
+
if module.image:
|
|
83
|
+
images.add(module.image)
|
|
84
|
+
elif isinstance(module.image, ModuleImage):
|
|
85
|
+
# Hardware module with sim/real images
|
|
86
|
+
if environment in (None, Environment.SIM) and module.image.sim:
|
|
87
|
+
images.add(module.image.sim)
|
|
88
|
+
if environment in (None, Environment.REAL) and module.image.real:
|
|
89
|
+
images.add(module.image.real)
|
|
90
|
+
|
|
91
|
+
return sorted(images)
|
common/ark/hardware.py
CHANGED
|
@@ -6,7 +6,7 @@ from typing import Annotated, Literal, Union
|
|
|
6
6
|
from pydantic import Field
|
|
7
7
|
|
|
8
8
|
from common.message import Message, Pose
|
|
9
|
-
from common.
|
|
9
|
+
from common.sim import ArticulationConfig, CameraConfig, ImuConfig, PirSensorConfig, RadarConfig
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class HardwareType(str, Enum):
|
common/ark/kinematics.py
CHANGED
common/ark/module.py
CHANGED
|
@@ -83,3 +83,25 @@ class Module(Message):
|
|
|
83
83
|
info: ModuleInfo
|
|
84
84
|
parameters: dict[str, ModuleParameter]
|
|
85
85
|
nodes: dict[str, Node]
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class ModuleReady(Message):
|
|
89
|
+
"""
|
|
90
|
+
Message sent by a module when it is ready to start.
|
|
91
|
+
|
|
92
|
+
Published during agent handshake to signal module initialization complete.
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
_type = "antioch/agent/module_ready"
|
|
96
|
+
module_name: str
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class ModuleStart(Message):
|
|
100
|
+
"""
|
|
101
|
+
Message sent to all modules to signal the global start time.
|
|
102
|
+
|
|
103
|
+
Received during agent handshake to synchronize module execution.
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
_type = "antioch/agent/module_start"
|
|
107
|
+
global_start_time_us: int
|