asimov-protocol 1.2.1rc2__tar.gz

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.
Files changed (29) hide show
  1. asimov_protocol-1.2.1rc2/LICENSE +21 -0
  2. asimov_protocol-1.2.1rc2/PKG-INFO +81 -0
  3. asimov_protocol-1.2.1rc2/README.md +60 -0
  4. asimov_protocol-1.2.1rc2/pyproject.toml +39 -0
  5. asimov_protocol-1.2.1rc2/setup.cfg +4 -0
  6. asimov_protocol-1.2.1rc2/src/asimov_protocol/__init__.py +13 -0
  7. asimov_protocol-1.2.1rc2/src/asimov_protocol/py.typed +0 -0
  8. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/__init__.py +20 -0
  9. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/asimov_command_pb2.py +50 -0
  10. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/asimov_command_pb2.pyi +64 -0
  11. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/asimov_common_pb2.py +40 -0
  12. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/asimov_common_pb2.pyi +32 -0
  13. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/asimov_diagnostics_pb2.py +42 -0
  14. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/asimov_diagnostics_pb2.pyi +53 -0
  15. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/asimov_state_pb2.py +63 -0
  16. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/asimov_state_pb2.pyi +87 -0
  17. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/edge_cloud_pb2.py +68 -0
  18. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/edge_cloud_pb2.pyi +236 -0
  19. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/edge_eol_pb2.py +64 -0
  20. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/edge_eol_pb2.pyi +155 -0
  21. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/edge_pb2.py +52 -0
  22. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/edge_pb2.pyi +88 -0
  23. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/nanopb_pb2.py +45 -0
  24. asimov_protocol-1.2.1rc2/src/asimov_protocol/v1/nanopb_pb2.pyi +128 -0
  25. asimov_protocol-1.2.1rc2/src/asimov_protocol.egg-info/PKG-INFO +81 -0
  26. asimov_protocol-1.2.1rc2/src/asimov_protocol.egg-info/SOURCES.txt +27 -0
  27. asimov_protocol-1.2.1rc2/src/asimov_protocol.egg-info/dependency_links.txt +1 -0
  28. asimov_protocol-1.2.1rc2/src/asimov_protocol.egg-info/requires.txt +1 -0
  29. asimov_protocol-1.2.1rc2/src/asimov_protocol.egg-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Menlo Research
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.
@@ -0,0 +1,81 @@
1
+ Metadata-Version: 2.4
2
+ Name: asimov-protocol
3
+ Version: 1.2.1rc2
4
+ Summary: Asimov robot protocol buffers (Python, generated — do not hand-edit)
5
+ Author: Menlo Research
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/menloresearch/asimov-protocol
8
+ Project-URL: Repository, https://github.com/menloresearch/asimov-protocol
9
+ Project-URL: Issues, https://github.com/menloresearch/asimov-protocol/issues
10
+ Project-URL: Changelog, https://github.com/menloresearch/asimov-protocol/releases
11
+ Keywords: asimov,robotics,protobuf,menlo
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3 :: Only
14
+ Classifier: Topic :: Software Development :: Libraries
15
+ Classifier: Typing :: Typed
16
+ Requires-Python: >=3.11
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: protobuf>=5.29.3
20
+ Dynamic: license-file
21
+
22
+ <p align="center">
23
+ <a href="https://menlo.ai"><img src="https://docs.menlo.ai/menlo-logo.svg" alt="Menlo" width="160"></a>
24
+ </p>
25
+
26
+ # asimov-protocol
27
+
28
+ The wire contract of the Asimov robot, as generated Python protobuf bindings: the
29
+ `RobotCommand` a controller sends, the `RobotState` the robot reports, and the messages
30
+ around them. Every Menlo component that talks to the robot imports this package, so one
31
+ process holds one set of descriptors.
32
+
33
+ ```bash
34
+ pip install asimov-protocol
35
+ ```
36
+
37
+ ```python
38
+ from asimov_protocol.v1 import asimov_command_pb2, asimov_common_pb2, asimov_state_pb2
39
+
40
+ cmd = asimov_command_pb2.RobotCommand()
41
+ cmd.mode = asimov_common_pb2.CONTROL_MODE_MOVE
42
+ payload = cmd.SerializeToString()
43
+
44
+ state = asimov_state_pb2.RobotState()
45
+ state.ParseFromString(payload_from_the_robot)
46
+ ```
47
+
48
+ Ships `.pyi` stubs and `py.typed`, so mypy and pyright work out of the box. The only
49
+ dependency is `protobuf`.
50
+
51
+ ## Versioning
52
+
53
+ - **MAJOR** follows the wire directory: `1.x` is `asimov_protocol.v1`. A breaking wire
54
+ change is a new `v2/` and a `2.0`, never an edit to `v1/`.
55
+ - **MINOR** is an additive schema change (a new field, message or enum value); **PATCH** is
56
+ regenerated code or packaging with no schema change.
57
+ - Pin `asimov-protocol>=1.2,<2` and you get every compatible release of the wire you speak.
58
+
59
+ Pre-releases use PEP 440 spelling (`1.2.1rc2`) and install only with `pip install --pre`
60
+ or an explicit pin.
61
+
62
+ ## Modules
63
+
64
+ | Module | What is in it |
65
+ |---|---|
66
+ | `asimov_common_pb2` | `ControlMode` and the other shared enums |
67
+ | `asimov_command_pb2` | `RobotCommand`: mode, policy velocity, joint setpoints |
68
+ | `asimov_state_pb2` | `RobotState`: mode, joints, IMU, alerts, battery, `protocol_version` |
69
+ | `asimov_diagnostics_pb2` | diagnostics frames |
70
+ | `edge_pb2` | the edge's controller-facing observation lane (`EdgeMessage`, `EdgeState`) |
71
+ | `edge_cloud_pb2`, `edge_eol_pb2` | edge to cloud, and end-of-line test |
72
+
73
+ ## Source
74
+
75
+ Generated from the `.proto` files in
76
+ [menloresearch/asimov-protocol](https://github.com/menloresearch/asimov-protocol) by that
77
+ repository's toolchain; do not edit the installed modules. Higher-level Python clients:
78
+ [`menlo-sdk`](https://pypi.org/project/menlo-sdk/) drives the robot,
79
+ [`menlo-robot-sdk`](https://pypi.org/project/menlo-robot-sdk/) talks to the Robot Control Service.
80
+
81
+ MIT.
@@ -0,0 +1,60 @@
1
+ <p align="center">
2
+ <a href="https://menlo.ai"><img src="https://docs.menlo.ai/menlo-logo.svg" alt="Menlo" width="160"></a>
3
+ </p>
4
+
5
+ # asimov-protocol
6
+
7
+ The wire contract of the Asimov robot, as generated Python protobuf bindings: the
8
+ `RobotCommand` a controller sends, the `RobotState` the robot reports, and the messages
9
+ around them. Every Menlo component that talks to the robot imports this package, so one
10
+ process holds one set of descriptors.
11
+
12
+ ```bash
13
+ pip install asimov-protocol
14
+ ```
15
+
16
+ ```python
17
+ from asimov_protocol.v1 import asimov_command_pb2, asimov_common_pb2, asimov_state_pb2
18
+
19
+ cmd = asimov_command_pb2.RobotCommand()
20
+ cmd.mode = asimov_common_pb2.CONTROL_MODE_MOVE
21
+ payload = cmd.SerializeToString()
22
+
23
+ state = asimov_state_pb2.RobotState()
24
+ state.ParseFromString(payload_from_the_robot)
25
+ ```
26
+
27
+ Ships `.pyi` stubs and `py.typed`, so mypy and pyright work out of the box. The only
28
+ dependency is `protobuf`.
29
+
30
+ ## Versioning
31
+
32
+ - **MAJOR** follows the wire directory: `1.x` is `asimov_protocol.v1`. A breaking wire
33
+ change is a new `v2/` and a `2.0`, never an edit to `v1/`.
34
+ - **MINOR** is an additive schema change (a new field, message or enum value); **PATCH** is
35
+ regenerated code or packaging with no schema change.
36
+ - Pin `asimov-protocol>=1.2,<2` and you get every compatible release of the wire you speak.
37
+
38
+ Pre-releases use PEP 440 spelling (`1.2.1rc2`) and install only with `pip install --pre`
39
+ or an explicit pin.
40
+
41
+ ## Modules
42
+
43
+ | Module | What is in it |
44
+ |---|---|
45
+ | `asimov_common_pb2` | `ControlMode` and the other shared enums |
46
+ | `asimov_command_pb2` | `RobotCommand`: mode, policy velocity, joint setpoints |
47
+ | `asimov_state_pb2` | `RobotState`: mode, joints, IMU, alerts, battery, `protocol_version` |
48
+ | `asimov_diagnostics_pb2` | diagnostics frames |
49
+ | `edge_pb2` | the edge's controller-facing observation lane (`EdgeMessage`, `EdgeState`) |
50
+ | `edge_cloud_pb2`, `edge_eol_pb2` | edge to cloud, and end-of-line test |
51
+
52
+ ## Source
53
+
54
+ Generated from the `.proto` files in
55
+ [menloresearch/asimov-protocol](https://github.com/menloresearch/asimov-protocol) by that
56
+ repository's toolchain; do not edit the installed modules. Higher-level Python clients:
57
+ [`menlo-sdk`](https://pypi.org/project/menlo-sdk/) drives the robot,
58
+ [`menlo-robot-sdk`](https://pypi.org/project/menlo-robot-sdk/) talks to the Robot Control Service.
59
+
60
+ MIT.
@@ -0,0 +1,39 @@
1
+ [project]
2
+ name = "asimov-protocol"
3
+ version = "1.2.1rc2"
4
+ description = "Asimov robot protocol buffers (Python, generated — do not hand-edit)"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ license = "MIT"
8
+ license-files = ["LICENSE"]
9
+ authors = [{ name = "Menlo Research" }]
10
+ keywords = ["asimov", "robotics", "protobuf", "menlo"]
11
+ classifiers = [
12
+ "Intended Audience :: Developers",
13
+ "Programming Language :: Python :: 3 :: Only",
14
+ "Topic :: Software Development :: Libraries",
15
+ "Typing :: Typed",
16
+ ]
17
+ dependencies = [
18
+ # Must satisfy the gencode's ValidateProtobufRuntimeVersion floor — see the
19
+ # buf.gen.yaml plugin pin (protocolbuffers/python:v29.3 → runtime >= 5.29.3).
20
+ # Bump BOTH together when changing the plugin version.
21
+ "protobuf>=5.29.3",
22
+ ]
23
+
24
+ [project.urls]
25
+ Homepage = "https://github.com/menloresearch/asimov-protocol"
26
+ Repository = "https://github.com/menloresearch/asimov-protocol"
27
+ Issues = "https://github.com/menloresearch/asimov-protocol/issues"
28
+ Changelog = "https://github.com/menloresearch/asimov-protocol/releases"
29
+
30
+ [build-system]
31
+ # >=77 for PEP 639 `license` / `license-files` fields.
32
+ requires = ["setuptools>=77"]
33
+ build-backend = "setuptools.build_meta"
34
+
35
+ [tool.setuptools.packages.find]
36
+ where = ["src"]
37
+
38
+ [tool.setuptools.package-data]
39
+ asimov_protocol = ["py.typed", "**/*.pyi"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,13 @@
1
+ """Asimov robot protocol buffers (generated package).
2
+
3
+ Usage:
4
+ from asimov_protocol.v1 import asimov_command_pb2, asimov_common_pb2
5
+
6
+ cmd = asimov_command_pb2.RobotCommand()
7
+ cmd.mode = asimov_common_pb2.CONTROL_MODE_MOVE
8
+ """
9
+
10
+ from . import v1
11
+
12
+ __version__ = "1.2.1rc2"
13
+ __all__ = ["v1"]
File without changes
@@ -0,0 +1,20 @@
1
+ """Asimov protocol v1 — generated protobuf modules (do not hand-edit)."""
2
+ from . import asimov_command_pb2
3
+ from . import asimov_common_pb2
4
+ from . import asimov_diagnostics_pb2
5
+ from . import asimov_state_pb2
6
+ from . import edge_cloud_pb2
7
+ from . import edge_eol_pb2
8
+ from . import edge_pb2
9
+ from . import nanopb_pb2
10
+
11
+ __all__ = [
12
+ "asimov_command_pb2",
13
+ "asimov_common_pb2",
14
+ "asimov_diagnostics_pb2",
15
+ "asimov_state_pb2",
16
+ "edge_cloud_pb2",
17
+ "edge_eol_pb2",
18
+ "edge_pb2",
19
+ "nanopb_pb2",
20
+ ]
@@ -0,0 +1,50 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: asimov_command.proto
5
+ # Protobuf Python Version: 5.29.3
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 3,
17
+ '',
18
+ 'asimov_command.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from . import asimov_common_pb2 as asimov__common__pb2
26
+ from . import nanopb_pb2 as nanopb__pb2
27
+
28
+
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x61simov_command.proto\x12\tasimov.io\x1a\x13\x61simov_common.proto\x1a\x0cnanopb.proto\"E\n\x0fVelocityCommand\x12\x0e\n\x02vx\x18\x01 \x01(\x02R\x02vx\x12\x0e\n\x02vy\x18\x02 \x01(\x02R\x02vy\x12\x12\n\x04vyaw\x18\x03 \x01(\x02R\x04vyaw\"b\n\rAllTrajectory\x12#\n\tpositions\x18\x01 \x03(\x02\x42\x05\x92?\x02\x10\x19R\tpositions\x12\x15\n\x02kp\x18\x02 \x03(\x02\x42\x05\x92?\x02\x10\x19R\x02kp\x12\x15\n\x02kd\x18\x03 \x03(\x02\x42\x05\x92?\x02\x10\x19R\x02kd\"\xaf\x01\n\nEolCommand\x12,\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x14.asimov.io.EolActionR\x06\x61\x63tion\x12\x19\n\x08motor_id\x18\x02 \x01(\rR\x07motorId\x12\x1a\n\x08position\x18\x03 \x01(\x02R\x08position\x12\x0e\n\x02kp\x18\x04 \x01(\x02R\x02kp\x12\x0e\n\x02kd\x18\x05 \x01(\x02R\x02kd\x12\x1c\n\nnew_can_id\x18\x06 \x01(\rR\x08newCanId\"\xa2\x03\n\x0cRobotCommand\x12*\n\x04mode\x18\x01 \x01(\x0e\x32\x16.asimov.io.ControlModeR\x04mode\x12\x42\n\x0f\x63ommand_control\x18\x02 \x01(\x0e\x32\x19.asimov.io.CommandControlR\x0e\x63ommandControl\x12\x34\n\x06policy\x18\x03 \x01(\x0b\x32\x1a.asimov.io.VelocityCommandH\x00R\x06policy\x12\x41\n\x0e\x61ll_trajectory\x18\x05 \x01(\x0b\x32\x18.asimov.io.AllTrajectoryH\x00R\rallTrajectory\x12)\n\x03\x65ol\x18\t \x01(\x0b\x32\x15.asimov.io.EolCommandH\x00R\x03\x65ol\x12!\n\x0ctimestamp_us\x18\x06 \x01(\x04R\x0btimestampUs\x12\x1a\n\x08sequence\x18\x07 \x01(\rR\x08sequence\x12)\n\x10protocol_version\x18\x08 \x01(\rR\x0fprotocolVersionB\x0e\n\x0c\x63ommand_dataJ\x04\x08\x04\x10\x05\x62\x06proto3')
30
+
31
+ _globals = globals()
32
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
33
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'asimov_command_pb2', _globals)
34
+ if not _descriptor._USE_C_DESCRIPTORS:
35
+ DESCRIPTOR._loaded_options = None
36
+ _globals['_ALLTRAJECTORY'].fields_by_name['positions']._loaded_options = None
37
+ _globals['_ALLTRAJECTORY'].fields_by_name['positions']._serialized_options = b'\222?\002\020\031'
38
+ _globals['_ALLTRAJECTORY'].fields_by_name['kp']._loaded_options = None
39
+ _globals['_ALLTRAJECTORY'].fields_by_name['kp']._serialized_options = b'\222?\002\020\031'
40
+ _globals['_ALLTRAJECTORY'].fields_by_name['kd']._loaded_options = None
41
+ _globals['_ALLTRAJECTORY'].fields_by_name['kd']._serialized_options = b'\222?\002\020\031'
42
+ _globals['_VELOCITYCOMMAND']._serialized_start=70
43
+ _globals['_VELOCITYCOMMAND']._serialized_end=139
44
+ _globals['_ALLTRAJECTORY']._serialized_start=141
45
+ _globals['_ALLTRAJECTORY']._serialized_end=239
46
+ _globals['_EOLCOMMAND']._serialized_start=242
47
+ _globals['_EOLCOMMAND']._serialized_end=417
48
+ _globals['_ROBOTCOMMAND']._serialized_start=420
49
+ _globals['_ROBOTCOMMAND']._serialized_end=838
50
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,64 @@
1
+ from . import asimov_common_pb2 as _asimov_common_pb2
2
+ from . import nanopb_pb2 as _nanopb_pb2
3
+ from google.protobuf.internal import containers as _containers
4
+ from google.protobuf import descriptor as _descriptor
5
+ from google.protobuf import message as _message
6
+ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
7
+
8
+ DESCRIPTOR: _descriptor.FileDescriptor
9
+
10
+ class VelocityCommand(_message.Message):
11
+ __slots__ = ("vx", "vy", "vyaw")
12
+ VX_FIELD_NUMBER: _ClassVar[int]
13
+ VY_FIELD_NUMBER: _ClassVar[int]
14
+ VYAW_FIELD_NUMBER: _ClassVar[int]
15
+ vx: float
16
+ vy: float
17
+ vyaw: float
18
+ def __init__(self, vx: _Optional[float] = ..., vy: _Optional[float] = ..., vyaw: _Optional[float] = ...) -> None: ...
19
+
20
+ class AllTrajectory(_message.Message):
21
+ __slots__ = ("positions", "kp", "kd")
22
+ POSITIONS_FIELD_NUMBER: _ClassVar[int]
23
+ KP_FIELD_NUMBER: _ClassVar[int]
24
+ KD_FIELD_NUMBER: _ClassVar[int]
25
+ positions: _containers.RepeatedScalarFieldContainer[float]
26
+ kp: _containers.RepeatedScalarFieldContainer[float]
27
+ kd: _containers.RepeatedScalarFieldContainer[float]
28
+ def __init__(self, positions: _Optional[_Iterable[float]] = ..., kp: _Optional[_Iterable[float]] = ..., kd: _Optional[_Iterable[float]] = ...) -> None: ...
29
+
30
+ class EolCommand(_message.Message):
31
+ __slots__ = ("action", "motor_id", "position", "kp", "kd", "new_can_id")
32
+ ACTION_FIELD_NUMBER: _ClassVar[int]
33
+ MOTOR_ID_FIELD_NUMBER: _ClassVar[int]
34
+ POSITION_FIELD_NUMBER: _ClassVar[int]
35
+ KP_FIELD_NUMBER: _ClassVar[int]
36
+ KD_FIELD_NUMBER: _ClassVar[int]
37
+ NEW_CAN_ID_FIELD_NUMBER: _ClassVar[int]
38
+ action: _asimov_common_pb2.EolAction
39
+ motor_id: int
40
+ position: float
41
+ kp: float
42
+ kd: float
43
+ new_can_id: int
44
+ def __init__(self, action: _Optional[_Union[_asimov_common_pb2.EolAction, str]] = ..., motor_id: _Optional[int] = ..., position: _Optional[float] = ..., kp: _Optional[float] = ..., kd: _Optional[float] = ..., new_can_id: _Optional[int] = ...) -> None: ...
45
+
46
+ class RobotCommand(_message.Message):
47
+ __slots__ = ("mode", "command_control", "policy", "all_trajectory", "eol", "timestamp_us", "sequence", "protocol_version")
48
+ MODE_FIELD_NUMBER: _ClassVar[int]
49
+ COMMAND_CONTROL_FIELD_NUMBER: _ClassVar[int]
50
+ POLICY_FIELD_NUMBER: _ClassVar[int]
51
+ ALL_TRAJECTORY_FIELD_NUMBER: _ClassVar[int]
52
+ EOL_FIELD_NUMBER: _ClassVar[int]
53
+ TIMESTAMP_US_FIELD_NUMBER: _ClassVar[int]
54
+ SEQUENCE_FIELD_NUMBER: _ClassVar[int]
55
+ PROTOCOL_VERSION_FIELD_NUMBER: _ClassVar[int]
56
+ mode: _asimov_common_pb2.ControlMode
57
+ command_control: _asimov_common_pb2.CommandControl
58
+ policy: VelocityCommand
59
+ all_trajectory: AllTrajectory
60
+ eol: EolCommand
61
+ timestamp_us: int
62
+ sequence: int
63
+ protocol_version: int
64
+ def __init__(self, mode: _Optional[_Union[_asimov_common_pb2.ControlMode, str]] = ..., command_control: _Optional[_Union[_asimov_common_pb2.CommandControl, str]] = ..., policy: _Optional[_Union[VelocityCommand, _Mapping]] = ..., all_trajectory: _Optional[_Union[AllTrajectory, _Mapping]] = ..., eol: _Optional[_Union[EolCommand, _Mapping]] = ..., timestamp_us: _Optional[int] = ..., sequence: _Optional[int] = ..., protocol_version: _Optional[int] = ...) -> None: ...
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: asimov_common.proto
5
+ # Protobuf Python Version: 5.29.3
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 3,
17
+ '',
18
+ 'asimov_common.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x61simov_common.proto\x12\tasimov.io*Y\n\x0b\x43ontrolMode\x12\x15\n\x11\x43ONTROL_MODE_DAMP\x10\x00\x12\x16\n\x12\x43ONTROL_MODE_STAND\x10\x01\x12\x15\n\x11\x43ONTROL_MODE_MOVE\x10\x02\"\x04\x08\x03\x10\x03*R\n\x0e\x43ommandControl\x12\x1a\n\x16\x43OMMAND_CONTROL_POLICY\x10\x00\x12\x1e\n\x1a\x43OMMAND_CONTROL_TRAJECTORY\x10\x01\"\x04\x08\x02\x10\x02*[\n\tEolAction\x12\x12\n\x0e\x45OL_MOVE_MOTOR\x10\x00\x12\x14\n\x10\x45OL_ZERO_ENCODER\x10\x01\x12\x12\n\x0e\x45OL_SET_CAN_ID\x10\x02\x12\x10\n\x0c\x45OL_FINALIZE\x10\x03\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'asimov_common_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_CONTROLMODE']._serialized_start=34
35
+ _globals['_CONTROLMODE']._serialized_end=123
36
+ _globals['_COMMANDCONTROL']._serialized_start=125
37
+ _globals['_COMMANDCONTROL']._serialized_end=207
38
+ _globals['_EOLACTION']._serialized_start=209
39
+ _globals['_EOLACTION']._serialized_end=300
40
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,32 @@
1
+ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
2
+ from google.protobuf import descriptor as _descriptor
3
+ from typing import ClassVar as _ClassVar
4
+
5
+ DESCRIPTOR: _descriptor.FileDescriptor
6
+
7
+ class ControlMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
8
+ __slots__ = ()
9
+ CONTROL_MODE_DAMP: _ClassVar[ControlMode]
10
+ CONTROL_MODE_STAND: _ClassVar[ControlMode]
11
+ CONTROL_MODE_MOVE: _ClassVar[ControlMode]
12
+
13
+ class CommandControl(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
14
+ __slots__ = ()
15
+ COMMAND_CONTROL_POLICY: _ClassVar[CommandControl]
16
+ COMMAND_CONTROL_TRAJECTORY: _ClassVar[CommandControl]
17
+
18
+ class EolAction(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
19
+ __slots__ = ()
20
+ EOL_MOVE_MOTOR: _ClassVar[EolAction]
21
+ EOL_ZERO_ENCODER: _ClassVar[EolAction]
22
+ EOL_SET_CAN_ID: _ClassVar[EolAction]
23
+ EOL_FINALIZE: _ClassVar[EolAction]
24
+ CONTROL_MODE_DAMP: ControlMode
25
+ CONTROL_MODE_STAND: ControlMode
26
+ CONTROL_MODE_MOVE: ControlMode
27
+ COMMAND_CONTROL_POLICY: CommandControl
28
+ COMMAND_CONTROL_TRAJECTORY: CommandControl
29
+ EOL_MOVE_MOTOR: EolAction
30
+ EOL_ZERO_ENCODER: EolAction
31
+ EOL_SET_CAN_ID: EolAction
32
+ EOL_FINALIZE: EolAction
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: asimov_diagnostics.proto
5
+ # Protobuf Python Version: 5.29.3
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 3,
17
+ '',
18
+ 'asimov_diagnostics.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x61simov_diagnostics.proto\x12\tasimov.io\"\xa6\x01\n\x05\x41lert\x12\x0e\n\x02id\x18\x01 \x01(\rR\x02id\x12\x1a\n\x08severity\x18\x02 \x01(\rR\x08severity\x12\x14\n\x05value\x18\x03 \x01(\rR\x05value\x12\x1c\n\tthreshold\x18\x04 \x01(\rR\tthreshold\x12 \n\x0c\x66irst_set_us\x18\x05 \x01(\x04R\nfirstSetUs\x12\x1b\n\tsource_id\x18\x06 \x01(\rR\x08sourceId\"p\n\rThreadMetrics\x12 \n\x0cmax_cycle_us\x18\x01 \x01(\x04R\nmaxCycleUs\x12 \n\x0c\x61vg_cycle_us\x18\x02 \x01(\x04R\navgCycleUs\x12\x1b\n\tjitter_us\x18\x03 \x01(\x03R\x08jitterUs\"\x8a\x01\n\x0bOnnxMetrics\x12(\n\x10\x61vg_inference_ms\x18\x01 \x01(\x02R\x0e\x61vgInferenceMs\x12(\n\x10max_inference_ms\x18\x02 \x01(\x02R\x0emaxInferenceMs\x12\'\n\x0finference_count\x18\x03 \x01(\x04R\x0einferenceCount\"\x89\x01\n\nCanMetrics\x12\x1f\n\x0b\x66rames_sent\x18\x01 \x01(\x04R\nframesSent\x12\'\n\x0f\x66rames_received\x18\x02 \x01(\x04R\x0e\x66ramesReceived\x12\x16\n\x06\x65rrors\x18\x03 \x01(\x04R\x06\x65rrors\x12\x19\n\x08\x62us_offs\x18\x04 \x01(\x04R\x07\x62usOffsb\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'asimov_diagnostics_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_ALERT']._serialized_start=40
35
+ _globals['_ALERT']._serialized_end=206
36
+ _globals['_THREADMETRICS']._serialized_start=208
37
+ _globals['_THREADMETRICS']._serialized_end=320
38
+ _globals['_ONNXMETRICS']._serialized_start=323
39
+ _globals['_ONNXMETRICS']._serialized_end=461
40
+ _globals['_CANMETRICS']._serialized_start=464
41
+ _globals['_CANMETRICS']._serialized_end=601
42
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,53 @@
1
+ from google.protobuf import descriptor as _descriptor
2
+ from google.protobuf import message as _message
3
+ from typing import ClassVar as _ClassVar, Optional as _Optional
4
+
5
+ DESCRIPTOR: _descriptor.FileDescriptor
6
+
7
+ class Alert(_message.Message):
8
+ __slots__ = ("id", "severity", "value", "threshold", "first_set_us", "source_id")
9
+ ID_FIELD_NUMBER: _ClassVar[int]
10
+ SEVERITY_FIELD_NUMBER: _ClassVar[int]
11
+ VALUE_FIELD_NUMBER: _ClassVar[int]
12
+ THRESHOLD_FIELD_NUMBER: _ClassVar[int]
13
+ FIRST_SET_US_FIELD_NUMBER: _ClassVar[int]
14
+ SOURCE_ID_FIELD_NUMBER: _ClassVar[int]
15
+ id: int
16
+ severity: int
17
+ value: int
18
+ threshold: int
19
+ first_set_us: int
20
+ source_id: int
21
+ def __init__(self, id: _Optional[int] = ..., severity: _Optional[int] = ..., value: _Optional[int] = ..., threshold: _Optional[int] = ..., first_set_us: _Optional[int] = ..., source_id: _Optional[int] = ...) -> None: ...
22
+
23
+ class ThreadMetrics(_message.Message):
24
+ __slots__ = ("max_cycle_us", "avg_cycle_us", "jitter_us")
25
+ MAX_CYCLE_US_FIELD_NUMBER: _ClassVar[int]
26
+ AVG_CYCLE_US_FIELD_NUMBER: _ClassVar[int]
27
+ JITTER_US_FIELD_NUMBER: _ClassVar[int]
28
+ max_cycle_us: int
29
+ avg_cycle_us: int
30
+ jitter_us: int
31
+ def __init__(self, max_cycle_us: _Optional[int] = ..., avg_cycle_us: _Optional[int] = ..., jitter_us: _Optional[int] = ...) -> None: ...
32
+
33
+ class OnnxMetrics(_message.Message):
34
+ __slots__ = ("avg_inference_ms", "max_inference_ms", "inference_count")
35
+ AVG_INFERENCE_MS_FIELD_NUMBER: _ClassVar[int]
36
+ MAX_INFERENCE_MS_FIELD_NUMBER: _ClassVar[int]
37
+ INFERENCE_COUNT_FIELD_NUMBER: _ClassVar[int]
38
+ avg_inference_ms: float
39
+ max_inference_ms: float
40
+ inference_count: int
41
+ def __init__(self, avg_inference_ms: _Optional[float] = ..., max_inference_ms: _Optional[float] = ..., inference_count: _Optional[int] = ...) -> None: ...
42
+
43
+ class CanMetrics(_message.Message):
44
+ __slots__ = ("frames_sent", "frames_received", "errors", "bus_offs")
45
+ FRAMES_SENT_FIELD_NUMBER: _ClassVar[int]
46
+ FRAMES_RECEIVED_FIELD_NUMBER: _ClassVar[int]
47
+ ERRORS_FIELD_NUMBER: _ClassVar[int]
48
+ BUS_OFFS_FIELD_NUMBER: _ClassVar[int]
49
+ frames_sent: int
50
+ frames_received: int
51
+ errors: int
52
+ bus_offs: int
53
+ def __init__(self, frames_sent: _Optional[int] = ..., frames_received: _Optional[int] = ..., errors: _Optional[int] = ..., bus_offs: _Optional[int] = ...) -> None: ...
@@ -0,0 +1,63 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: asimov_state.proto
5
+ # Protobuf Python Version: 5.29.3
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 3,
17
+ '',
18
+ 'asimov_state.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from . import asimov_common_pb2 as asimov__common__pb2
26
+ from . import asimov_diagnostics_pb2 as asimov__diagnostics__pb2
27
+ from . import nanopb_pb2 as nanopb__pb2
28
+
29
+
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12\x61simov_state.proto\x12\tasimov.io\x1a\x13\x61simov_common.proto\x1a\x18\x61simov_diagnostics.proto\x1a\x0cnanopb.proto\"\xbf\x07\n\nRobotState\x12!\n\x0ctimestamp_us\x18\x01 \x01(\x04R\x0btimestampUs\x12\x1a\n\x08sequence\x18\x02 \x01(\rR\x08sequence\x12\x39\n\x0c\x63urrent_mode\x18\x03 \x01(\x0e\x32\x16.asimov.io.ControlModeR\x0b\x63urrentMode\x12\"\n\tjoint_pos\x18\x06 \x03(\x02\x42\x05\x92?\x02\x10\x19R\x08jointPos\x12\"\n\tjoint_vel\x18\x07 \x03(\x02\x42\x05\x92?\x02\x10\x19R\x08jointVel\x12*\n\rjoint_current\x18\x08 \x03(\x02\x42\x05\x92?\x02\x10\x19R\x0cjointCurrent\x12$\n\njoint_temp\x18\t \x03(\x02\x42\x05\x92?\x02\x10\x19R\tjointTemp\x12\'\n\x0c\x62\x61se_ang_vel\x18\n \x03(\x02\x42\x05\x92?\x02\x10\x03R\nbaseAngVel\x12\x32\n\x11projected_gravity\x18\x0b \x03(\x02\x42\x05\x92?\x02\x10\x03R\x10projectedGravity\x12\"\n\tbase_quat\x18\x0c \x03(\x02\x42\x05\x92?\x02\x10\x04R\x08\x62\x61seQuat\x12\x1f\n\x0b\x65rror_flags\x18\r \x01(\rR\nerrorFlags\x12*\n\x11last_cmd_sequence\x18\x0e \x01(\rR\x0flastCmdSequence\x12<\n\ractive_alerts\x18\x14 \x03(\x0b\x32\x10.asimov.io.AlertB\x05\x92?\x02\x10\x30R\x0c\x61\x63tiveAlerts\x12=\n\rpolicy_timing\x18\x15 \x01(\x0b\x32\x18.asimov.io.ThreadMetricsR\x0cpolicyTiming\x12\x39\n\x0connx_metrics\x18\x16 \x01(\x0b\x32\x16.asimov.io.OnnxMetricsR\x0bonnxMetrics\x12;\n\ncan_health\x18\x17 \x03(\x0b\x32\x15.asimov.io.CanMetricsB\x05\x92?\x02\x10\x05R\tcanHealth\x12)\n\x10protocol_version\x18\x18 \x01(\rR\x0fprotocolVersion\x12\x19\n\x08\x65ol_mode\x18\x19 \x01(\x08R\x07\x65olMode\x12\x38\n\neol_status\x18\x1a \x01(\x0b\x32\x19.asimov.io.EolMotorStatusR\teolStatus\x12!\n\x0c\x65ol_complete\x18\x1b \x01(\x08R\x0b\x65olComplete\x12\x31\n\x07\x62\x61ttery\x18\x1c \x01(\x0b\x32\x17.asimov.io.BatteryStateR\x07\x62\x61tteryJ\x04\x08\x1d\x10\x1e\"\xbb\x01\n\x0c\x42\x61tteryState\x12\x1b\n\tvoltage_v\x18\x01 \x01(\x02R\x08voltageV\x12\x1b\n\tcurrent_a\x18\x02 \x01(\x02R\x08\x63urrentA\x12\x1f\n\x0bsoc_percent\x18\x03 \x01(\x02R\nsocPercent\x12%\n\x0fmax_cell_temp_c\x18\x04 \x01(\x02R\x0cmaxCellTempC\x12)\n\x10protection_flags\x18\x05 \x01(\rR\x0fprotectionFlags\"\xe4\x01\n\x0e\x45olMotorStatus\x12\x19\n\x08motor_id\x18\x01 \x01(\rR\x07motorId\x12\x1a\n\x08position\x18\x02 \x01(\x02R\x08position\x12\x1a\n\x08velocity\x18\x03 \x01(\x02R\x08velocity\x12\x18\n\x07\x63urrent\x18\x04 \x01(\x02R\x07\x63urrent\x12 \n\x0btemperature\x18\x05 \x01(\x02R\x0btemperature\x12\x1d\n\nerror_code\x18\x06 \x01(\rR\terrorCode\x12$\n\nmotor_name\x18\x07 \x01(\tB\x05\x92?\x02\x08 R\tmotorNameb\x06proto3')
31
+
32
+ _globals = globals()
33
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
34
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'asimov_state_pb2', _globals)
35
+ if not _descriptor._USE_C_DESCRIPTORS:
36
+ DESCRIPTOR._loaded_options = None
37
+ _globals['_ROBOTSTATE'].fields_by_name['joint_pos']._loaded_options = None
38
+ _globals['_ROBOTSTATE'].fields_by_name['joint_pos']._serialized_options = b'\222?\002\020\031'
39
+ _globals['_ROBOTSTATE'].fields_by_name['joint_vel']._loaded_options = None
40
+ _globals['_ROBOTSTATE'].fields_by_name['joint_vel']._serialized_options = b'\222?\002\020\031'
41
+ _globals['_ROBOTSTATE'].fields_by_name['joint_current']._loaded_options = None
42
+ _globals['_ROBOTSTATE'].fields_by_name['joint_current']._serialized_options = b'\222?\002\020\031'
43
+ _globals['_ROBOTSTATE'].fields_by_name['joint_temp']._loaded_options = None
44
+ _globals['_ROBOTSTATE'].fields_by_name['joint_temp']._serialized_options = b'\222?\002\020\031'
45
+ _globals['_ROBOTSTATE'].fields_by_name['base_ang_vel']._loaded_options = None
46
+ _globals['_ROBOTSTATE'].fields_by_name['base_ang_vel']._serialized_options = b'\222?\002\020\003'
47
+ _globals['_ROBOTSTATE'].fields_by_name['projected_gravity']._loaded_options = None
48
+ _globals['_ROBOTSTATE'].fields_by_name['projected_gravity']._serialized_options = b'\222?\002\020\003'
49
+ _globals['_ROBOTSTATE'].fields_by_name['base_quat']._loaded_options = None
50
+ _globals['_ROBOTSTATE'].fields_by_name['base_quat']._serialized_options = b'\222?\002\020\004'
51
+ _globals['_ROBOTSTATE'].fields_by_name['active_alerts']._loaded_options = None
52
+ _globals['_ROBOTSTATE'].fields_by_name['active_alerts']._serialized_options = b'\222?\002\0200'
53
+ _globals['_ROBOTSTATE'].fields_by_name['can_health']._loaded_options = None
54
+ _globals['_ROBOTSTATE'].fields_by_name['can_health']._serialized_options = b'\222?\002\020\005'
55
+ _globals['_EOLMOTORSTATUS'].fields_by_name['motor_name']._loaded_options = None
56
+ _globals['_EOLMOTORSTATUS'].fields_by_name['motor_name']._serialized_options = b'\222?\002\010 '
57
+ _globals['_ROBOTSTATE']._serialized_start=95
58
+ _globals['_ROBOTSTATE']._serialized_end=1054
59
+ _globals['_BATTERYSTATE']._serialized_start=1057
60
+ _globals['_BATTERYSTATE']._serialized_end=1244
61
+ _globals['_EOLMOTORSTATUS']._serialized_start=1247
62
+ _globals['_EOLMOTORSTATUS']._serialized_end=1475
63
+ # @@protoc_insertion_point(module_scope)