foodforthought-cli 0.2.1__py3-none-any.whl → 0.2.3__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.
Files changed (46) hide show
  1. ate/__init__.py +1 -1
  2. ate/bridge_server.py +622 -0
  3. ate/cli.py +2625 -242
  4. ate/compatibility.py +580 -0
  5. ate/generators/__init__.py +19 -0
  6. ate/generators/docker_generator.py +461 -0
  7. ate/generators/hardware_config.py +469 -0
  8. ate/generators/ros2_generator.py +617 -0
  9. ate/generators/skill_generator.py +783 -0
  10. ate/marketplace.py +524 -0
  11. ate/mcp_server.py +1341 -107
  12. ate/primitives.py +1016 -0
  13. ate/robot_setup.py +2222 -0
  14. ate/skill_schema.py +537 -0
  15. ate/telemetry/__init__.py +33 -0
  16. ate/telemetry/cli.py +455 -0
  17. ate/telemetry/collector.py +444 -0
  18. ate/telemetry/context.py +318 -0
  19. ate/telemetry/fleet_agent.py +419 -0
  20. ate/telemetry/formats/__init__.py +18 -0
  21. ate/telemetry/formats/hdf5_serializer.py +503 -0
  22. ate/telemetry/formats/mcap_serializer.py +457 -0
  23. ate/telemetry/types.py +334 -0
  24. foodforthought_cli-0.2.3.dist-info/METADATA +300 -0
  25. foodforthought_cli-0.2.3.dist-info/RECORD +44 -0
  26. foodforthought_cli-0.2.3.dist-info/top_level.txt +6 -0
  27. mechdog_labeled/__init__.py +3 -0
  28. mechdog_labeled/primitives.py +113 -0
  29. mechdog_labeled/servo_map.py +209 -0
  30. mechdog_output/__init__.py +3 -0
  31. mechdog_output/primitives.py +59 -0
  32. mechdog_output/servo_map.py +203 -0
  33. test_autodetect/__init__.py +3 -0
  34. test_autodetect/primitives.py +113 -0
  35. test_autodetect/servo_map.py +209 -0
  36. test_full_auto/__init__.py +3 -0
  37. test_full_auto/primitives.py +113 -0
  38. test_full_auto/servo_map.py +209 -0
  39. test_smart_detect/__init__.py +3 -0
  40. test_smart_detect/primitives.py +113 -0
  41. test_smart_detect/servo_map.py +209 -0
  42. foodforthought_cli-0.2.1.dist-info/METADATA +0 -151
  43. foodforthought_cli-0.2.1.dist-info/RECORD +0 -9
  44. foodforthought_cli-0.2.1.dist-info/top_level.txt +0 -1
  45. {foodforthought_cli-0.2.1.dist-info → foodforthought_cli-0.2.3.dist-info}/WHEEL +0 -0
  46. {foodforthought_cli-0.2.1.dist-info → foodforthought_cli-0.2.3.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,209 @@
1
+ """
2
+ Servo map for unnamed_robot
3
+ Generated by ate robot-setup wizard
4
+ Robot type: quadruped_with_arm
5
+ """
6
+
7
+ from enum import IntEnum
8
+
9
+
10
+ class ServoID(IntEnum):
11
+ """Servo IDs mapped to descriptive names."""
12
+ FRONT_RIGHT_HIP = 0
13
+ FRONT_RIGHT_UPPER = 1
14
+ FRONT_RIGHT_LOWER = 2
15
+ FRONT_LEFT_HIP = 3
16
+ FRONT_LEFT_UPPER = 4
17
+ FRONT_LEFT_LOWER = 5
18
+ BACK_RIGHT_HIP = 6
19
+ BACK_RIGHT_UPPER = 7
20
+ BACK_RIGHT_LOWER = 8
21
+ BACK_LEFT_HIP = 9
22
+ BACK_LEFT_UPPER = 10
23
+ BACK_LEFT_LOWER = 11
24
+ ARM_SHOULDER = 12
25
+ ARM_ELBOW = 13
26
+ ARM_GRIPPER = 15
27
+ SERVO_16 = 16
28
+ SERVO_17 = 17
29
+ SERVO_18 = 18
30
+ SERVO_19 = 19
31
+ SERVO_20 = 20
32
+ SERVO_21 = 21
33
+ SERVO_22 = 22
34
+ SERVO_23 = 23
35
+ SERVO_24 = 24
36
+ SERVO_25 = 25
37
+ SERVO_26 = 26
38
+ SERVO_28 = 28
39
+ SERVO_29 = 29
40
+ SERVO_30 = 30
41
+ SERVO_31 = 31
42
+
43
+
44
+ # Servo groups
45
+ FRONT_RIGHT_LEG = [ServoID.FRONT_RIGHT_HIP, ServoID.FRONT_RIGHT_UPPER, ServoID.FRONT_RIGHT_LOWER]
46
+ FRONT_LEFT_LEG = [ServoID.FRONT_LEFT_HIP, ServoID.FRONT_LEFT_UPPER, ServoID.FRONT_LEFT_LOWER]
47
+ BACK_RIGHT_LEG = [ServoID.BACK_RIGHT_HIP, ServoID.BACK_RIGHT_UPPER, ServoID.BACK_RIGHT_LOWER]
48
+ BACK_LEFT_LEG = [ServoID.BACK_LEFT_HIP, ServoID.BACK_LEFT_UPPER, ServoID.BACK_LEFT_LOWER]
49
+ ARM = [ServoID.ARM_SHOULDER, ServoID.ARM_ELBOW, ServoID.ARM_GRIPPER]
50
+ OTHER = [ServoID.SERVO_16, ServoID.SERVO_17, ServoID.SERVO_18, ServoID.SERVO_19, ServoID.SERVO_20, ServoID.SERVO_21, ServoID.SERVO_22, ServoID.SERVO_23, ServoID.SERVO_24, ServoID.SERVO_25, ServoID.SERVO_26, ServoID.SERVO_28, ServoID.SERVO_29, ServoID.SERVO_30, ServoID.SERVO_31]
51
+
52
+
53
+ # All servos
54
+ ALL_SERVOS = list(ServoID)
55
+
56
+
57
+ # Servo characteristics
58
+ SERVO_LIMITS = {
59
+ ServoID.FRONT_RIGHT_HIP: {
60
+ "min": 0,
61
+ "max": 1000,
62
+ "center": 500,
63
+ },
64
+ ServoID.FRONT_RIGHT_UPPER: {
65
+ "min": 0,
66
+ "max": 1000,
67
+ "center": 500,
68
+ },
69
+ ServoID.FRONT_RIGHT_LOWER: {
70
+ "min": 0,
71
+ "max": 1000,
72
+ "center": 500,
73
+ },
74
+ ServoID.FRONT_LEFT_HIP: {
75
+ "min": 0,
76
+ "max": 1000,
77
+ "center": 500,
78
+ },
79
+ ServoID.FRONT_LEFT_UPPER: {
80
+ "min": 0,
81
+ "max": 1000,
82
+ "center": 500,
83
+ },
84
+ ServoID.FRONT_LEFT_LOWER: {
85
+ "min": 0,
86
+ "max": 1000,
87
+ "center": 500,
88
+ },
89
+ ServoID.BACK_RIGHT_HIP: {
90
+ "min": 0,
91
+ "max": 1000,
92
+ "center": 500,
93
+ },
94
+ ServoID.BACK_RIGHT_UPPER: {
95
+ "min": 0,
96
+ "max": 1000,
97
+ "center": 500,
98
+ },
99
+ ServoID.BACK_RIGHT_LOWER: {
100
+ "min": 0,
101
+ "max": 1000,
102
+ "center": 500,
103
+ },
104
+ ServoID.BACK_LEFT_HIP: {
105
+ "min": 0,
106
+ "max": 1000,
107
+ "center": 500,
108
+ },
109
+ ServoID.BACK_LEFT_UPPER: {
110
+ "min": 0,
111
+ "max": 1000,
112
+ "center": 500,
113
+ },
114
+ ServoID.BACK_LEFT_LOWER: {
115
+ "min": 0,
116
+ "max": 1000,
117
+ "center": 500,
118
+ },
119
+ ServoID.ARM_SHOULDER: {
120
+ "min": 0,
121
+ "max": 1000,
122
+ "center": 500,
123
+ },
124
+ ServoID.ARM_ELBOW: {
125
+ "min": 0,
126
+ "max": 1000,
127
+ "center": 500,
128
+ },
129
+ ServoID.ARM_GRIPPER: {
130
+ "min": 0,
131
+ "max": 1000,
132
+ "center": 500,
133
+ },
134
+ ServoID.SERVO_16: {
135
+ "min": 0,
136
+ "max": 1000,
137
+ "center": 500,
138
+ },
139
+ ServoID.SERVO_17: {
140
+ "min": 0,
141
+ "max": 1000,
142
+ "center": 500,
143
+ },
144
+ ServoID.SERVO_18: {
145
+ "min": 0,
146
+ "max": 1000,
147
+ "center": 500,
148
+ },
149
+ ServoID.SERVO_19: {
150
+ "min": 0,
151
+ "max": 1000,
152
+ "center": 500,
153
+ },
154
+ ServoID.SERVO_20: {
155
+ "min": 0,
156
+ "max": 1000,
157
+ "center": 500,
158
+ },
159
+ ServoID.SERVO_21: {
160
+ "min": 0,
161
+ "max": 1000,
162
+ "center": 500,
163
+ },
164
+ ServoID.SERVO_22: {
165
+ "min": 0,
166
+ "max": 1000,
167
+ "center": 500,
168
+ },
169
+ ServoID.SERVO_23: {
170
+ "min": 0,
171
+ "max": 1000,
172
+ "center": 500,
173
+ },
174
+ ServoID.SERVO_24: {
175
+ "min": 0,
176
+ "max": 1000,
177
+ "center": 500,
178
+ },
179
+ ServoID.SERVO_25: {
180
+ "min": 0,
181
+ "max": 1000,
182
+ "center": 500,
183
+ },
184
+ ServoID.SERVO_26: {
185
+ "min": 0,
186
+ "max": 1000,
187
+ "center": 500,
188
+ },
189
+ ServoID.SERVO_28: {
190
+ "min": 0,
191
+ "max": 1000,
192
+ "center": 500,
193
+ },
194
+ ServoID.SERVO_29: {
195
+ "min": 0,
196
+ "max": 1000,
197
+ "center": 500,
198
+ },
199
+ ServoID.SERVO_30: {
200
+ "min": 0,
201
+ "max": 1000,
202
+ "center": 500,
203
+ },
204
+ ServoID.SERVO_31: {
205
+ "min": 0,
206
+ "max": 1000,
207
+ "center": 500,
208
+ },
209
+ }
@@ -1,151 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: foodforthought-cli
3
- Version: 0.2.1
4
- Summary: CLI tool for FoodforThought robotics repository platform - manage robot skills and data
5
- Home-page: https://kindly.fyi/foodforthought
6
- Author: Kindly Robotics
7
- Author-email: hello@kindly.fyi
8
- Project-URL: Homepage, https://kindly.fyi
9
- Project-URL: Documentation, https://kindly.fyi/foodforthought/cli
10
- Project-URL: Source, https://github.com/kindlyrobotics/monorepo
11
- Project-URL: Bug Tracker, https://github.com/kindlyrobotics/monorepo/issues
12
- Keywords: robotics,robot-skills,machine-learning,data-management,cli
13
- Classifier: Development Status :: 3 - Alpha
14
- Classifier: Intended Audience :: Developers
15
- Classifier: Intended Audience :: Science/Research
16
- Classifier: Topic :: Software Development :: Version Control
17
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
18
- Classifier: License :: OSI Approved :: MIT License
19
- Classifier: Programming Language :: Python :: 3
20
- Classifier: Programming Language :: Python :: 3.8
21
- Classifier: Programming Language :: Python :: 3.9
22
- Classifier: Programming Language :: Python :: 3.10
23
- Classifier: Programming Language :: Python :: 3.11
24
- Classifier: Programming Language :: Python :: 3.12
25
- Requires-Python: >=3.8
26
- Description-Content-Type: text/markdown
27
- Requires-Dist: requests>=2.28.0
28
- Dynamic: author
29
- Dynamic: author-email
30
- Dynamic: classifier
31
- Dynamic: description
32
- Dynamic: description-content-type
33
- Dynamic: home-page
34
- Dynamic: keywords
35
- Dynamic: project-url
36
- Dynamic: requires-dist
37
- Dynamic: requires-python
38
- Dynamic: summary
39
-
40
- # FoodforThought CLI
41
-
42
- GitHub-like CLI tool for the FoodforThought robotics repository platform.
43
-
44
- ## Installation
45
-
46
- ```bash
47
- pip install foodforthought-cli
48
- ```
49
-
50
- Or install from source:
51
-
52
- ```bash
53
- cd foodforthought-cli
54
- pip install -e .
55
- ```
56
-
57
- ## Configuration
58
-
59
- Set environment variables:
60
-
61
- ```bash
62
- export ATE_API_URL="https://kindly.fyi/api"
63
- export ATE_API_KEY="your-api-key-here"
64
- ```
65
-
66
- ## Usage
67
-
68
- ### Initialize a repository
69
-
70
- ```bash
71
- ate init my-robot-skill -d "A skill for my robot" -v public
72
- ```
73
-
74
- ### Clone a repository
75
-
76
- ```bash
77
- ate clone <repository-id>
78
- ```
79
-
80
- ### Create a commit
81
-
82
- ```bash
83
- ate commit -m "Add new control algorithm"
84
- ```
85
-
86
- ### Push to remote
87
-
88
- ```bash
89
- ate push -b main
90
- ```
91
-
92
- ### Deploy to robot
93
-
94
- ```bash
95
- ate deploy unitree-r1
96
- ```
97
-
98
- ## Commands
99
-
100
- ### Repository Management
101
- - `ate init <name>` - Initialize a new repository
102
- - `ate clone <repo-id>` - Clone a repository
103
- - `ate commit -m <message>` - Create a commit
104
- - `ate push [-b <branch>]` - Push commits to remote
105
-
106
- ### Skill Pipeline
107
- - `ate pull <skill-id> [--robot <robot>] [--format json|rlds|lerobot] [--output ./data]` - Pull skill data for training
108
- - `ate upload <video-path> --robot <robot> --task <task> [--project <id>]` - Upload demonstrations for labeling
109
- - `ate check-transfer --from <source-robot> --to <target-robot> [--skill <id>]` - Check skill transfer compatibility
110
- - `ate labeling-status <job-id>` - Check labeling job status
111
-
112
- ### Deployment & Testing
113
- - `ate deploy <robot-type>` - Deploy to a robot (e.g., unitree-r1)
114
- - `ate test [-e gazebo|mujoco|pybullet|webots] [-r robot]` - Test skills in simulation
115
- - `ate benchmark [-t speed|accuracy|robustness|efficiency|all]` - Run performance benchmarks
116
- - `ate adapt <source-robot> <target-robot>` - Adapt skills between robots
117
-
118
- ### Safety & Validation
119
- - `ate validate [-c collision|speed|workspace|force|all]` - Validate safety and compliance
120
- - `ate stream [start|stop|status] [-s sensors...]` - Stream sensor data
121
-
122
- ## Cursor IDE Integration (MCP)
123
-
124
- FoodforThought CLI supports Model Context Protocol (MCP) for integration with Cursor IDE.
125
-
126
- ### Installation
127
-
128
- 1. Install MCP dependencies:
129
- ```bash
130
- pip install -r requirements-mcp.txt
131
- ```
132
-
133
- 2. Get your MCP configuration from the [FoodforThought homepage](https://kindly.fyi/foodforthought)
134
-
135
- 3. Place `mcp.json` in `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project)
136
-
137
- 4. Set your `ATE_API_KEY` environment variable
138
-
139
- 5. Restart Cursor
140
-
141
- ### Available MCP Tools
142
-
143
- - `ate_init` - Initialize a new repository
144
- - `ate_clone` - Clone a repository
145
- - `ate_list_repositories` - List available repositories
146
- - `ate_list_robots` - List robot profiles
147
- - `ate_compatibility` - Check skill compatibility between robots
148
- - `ate_adapt` - Generate adaptation plans for skills
149
-
150
- See the [MCP documentation](https://cursor.com/docs/context/mcp) for more information.
151
-
@@ -1,9 +0,0 @@
1
- ate/__init__.py,sha256=qPoCARNEyfQQcCjyLreqZPo3DFzEv5HtpqptxSl87JE,105
2
- ate/cli.py,sha256=YjJF7KpgcyHRxqt0rMJfo4kS-FlUvmNF8nmDuRIn3do,72671
3
- ate/generator.py,sha256=DUPat3cmoe9ufPajHFoI5kK6tfvPtVtB9gLvTlJzPdU,18308
4
- ate/mcp_server.py,sha256=OB-USau35Lfjvu_qQ5G1GjvpsiZTCM_i-YKz3h2SHmE,51934
5
- foodforthought_cli-0.2.1.dist-info/METADATA,sha256=mc_SnIdxzil4jha-hbN_OB8RrIzlIt2_YIIqMZRiCs8,4353
6
- foodforthought_cli-0.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
- foodforthought_cli-0.2.1.dist-info/entry_points.txt,sha256=JSxWuXCbGllyHqVJpomP_BDlXYpiNglM9Mo6bEmQK1A,37
8
- foodforthought_cli-0.2.1.dist-info/top_level.txt,sha256=dlAru-z7a6fWHgnrMWcQhKc8D4eSTXSpFLIUoWZwDlE,4
9
- foodforthought_cli-0.2.1.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- ate