foodforthought-cli 0.2.4__py3-none-any.whl → 0.2.8__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 (37) hide show
  1. ate/__init__.py +1 -1
  2. ate/behaviors/__init__.py +88 -0
  3. ate/behaviors/common.py +686 -0
  4. ate/behaviors/tree.py +454 -0
  5. ate/cli.py +610 -54
  6. ate/drivers/__init__.py +27 -0
  7. ate/drivers/mechdog.py +606 -0
  8. ate/interfaces/__init__.py +171 -0
  9. ate/interfaces/base.py +271 -0
  10. ate/interfaces/body.py +267 -0
  11. ate/interfaces/detection.py +282 -0
  12. ate/interfaces/locomotion.py +422 -0
  13. ate/interfaces/manipulation.py +408 -0
  14. ate/interfaces/navigation.py +389 -0
  15. ate/interfaces/perception.py +362 -0
  16. ate/interfaces/types.py +371 -0
  17. ate/mcp_server.py +387 -0
  18. ate/recording/__init__.py +44 -0
  19. ate/recording/demonstration.py +378 -0
  20. ate/recording/session.py +405 -0
  21. ate/recording/upload.py +304 -0
  22. ate/recording/wrapper.py +95 -0
  23. ate/robot/__init__.py +79 -0
  24. ate/robot/calibration.py +583 -0
  25. ate/robot/commands.py +3603 -0
  26. ate/robot/discovery.py +339 -0
  27. ate/robot/introspection.py +330 -0
  28. ate/robot/manager.py +270 -0
  29. ate/robot/profiles.py +275 -0
  30. ate/robot/registry.py +319 -0
  31. ate/robot/skill_upload.py +393 -0
  32. ate/robot/visual_labeler.py +1039 -0
  33. {foodforthought_cli-0.2.4.dist-info → foodforthought_cli-0.2.8.dist-info}/METADATA +9 -1
  34. {foodforthought_cli-0.2.4.dist-info → foodforthought_cli-0.2.8.dist-info}/RECORD +37 -8
  35. {foodforthought_cli-0.2.4.dist-info → foodforthought_cli-0.2.8.dist-info}/WHEEL +0 -0
  36. {foodforthought_cli-0.2.4.dist-info → foodforthought_cli-0.2.8.dist-info}/entry_points.txt +0 -0
  37. {foodforthought_cli-0.2.4.dist-info → foodforthought_cli-0.2.8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,95 @@
1
+ """
2
+ Recording wrapper for automatic telemetry capture.
3
+
4
+ Provides a simpler API than RecordingSession for cases where you
5
+ want to wrap a driver and record everything automatically.
6
+ """
7
+
8
+ from typing import Optional
9
+ from ate.interfaces import RobotInterface
10
+ from .session import RecordingSession
11
+
12
+
13
+ class RecordingWrapper:
14
+ """
15
+ Wrapper that automatically records all driver interactions.
16
+
17
+ Unlike RecordingSession (context manager), RecordingWrapper creates
18
+ a persistent recording that captures everything until explicitly stopped.
19
+
20
+ Usage:
21
+ # Wrap a driver
22
+ raw_driver = MechDogDriver(port="/dev/...")
23
+ driver = RecordingWrapper(raw_driver, name="session_01")
24
+
25
+ # Use driver normally - all calls are recorded
26
+ driver.connect()
27
+ driver.stand()
28
+ driver.walk(Vector3.forward(), speed=0.3)
29
+ driver.stop()
30
+ driver.disconnect()
31
+
32
+ # Save the recording
33
+ driver.save_recording("session_01.demonstration")
34
+ """
35
+
36
+ def __init__(
37
+ self,
38
+ driver: RobotInterface,
39
+ name: str = "recording",
40
+ description: Optional[str] = None,
41
+ auto_start: bool = True,
42
+ ):
43
+ """
44
+ Initialize recording wrapper.
45
+
46
+ Args:
47
+ driver: Robot driver to wrap
48
+ name: Recording name
49
+ description: Optional description
50
+ auto_start: Start recording immediately
51
+ """
52
+ self._driver = driver
53
+ self._session = RecordingSession(
54
+ driver,
55
+ name=name,
56
+ description=description,
57
+ )
58
+
59
+ if auto_start:
60
+ self._session.start()
61
+
62
+ def __getattr__(self, name: str):
63
+ """Forward attribute access to wrapped driver."""
64
+ return getattr(self._driver, name)
65
+
66
+ def start_recording(self) -> None:
67
+ """Start recording (if not already)."""
68
+ self._session.start()
69
+
70
+ def stop_recording(self) -> None:
71
+ """Stop recording."""
72
+ self._session.stop()
73
+
74
+ def save_recording(self, path: str) -> None:
75
+ """Save recording to file."""
76
+ self._session.save(path)
77
+
78
+ def get_recording_summary(self) -> str:
79
+ """Get recording summary."""
80
+ return self._session.summary()
81
+
82
+ @property
83
+ def is_recording(self) -> bool:
84
+ """Check if currently recording."""
85
+ return self._session.is_recording
86
+
87
+ @property
88
+ def recording_duration(self) -> Optional[float]:
89
+ """Get recording duration in seconds."""
90
+ return self._session.duration
91
+
92
+ @property
93
+ def call_count(self) -> int:
94
+ """Get number of recorded calls."""
95
+ return len(self._session.calls)
ate/robot/__init__.py ADDED
@@ -0,0 +1,79 @@
1
+ """
2
+ Robot management system for ATE.
3
+
4
+ Provides:
5
+ - Auto-discovery of robots on network and USB
6
+ - Robot profiles for easy configuration
7
+ - Capability introspection
8
+ - Interactive setup wizard
9
+
10
+ Example usage:
11
+ from ate.robot import RobotManager, discover_robots
12
+
13
+ # Auto-discover robots
14
+ found = discover_robots()
15
+ # > [DiscoveredRobot(type='mechdog', port='/dev/cu.usbserial-10', camera_ip='192.168.1.100')]
16
+
17
+ # Load saved profile
18
+ manager = RobotManager()
19
+ dog = manager.get_robot("my_mechdog")
20
+
21
+ # Introspect capabilities
22
+ info = manager.get_capabilities(dog)
23
+ # > {'locomotion': ['walk', 'turn', 'stand'], 'camera': ['get_image']}
24
+ """
25
+
26
+ from .discovery import (
27
+ DiscoveredRobot,
28
+ discover_robots,
29
+ discover_serial_robots,
30
+ discover_network_cameras,
31
+ )
32
+
33
+ from .profiles import (
34
+ RobotProfile,
35
+ load_profile,
36
+ save_profile,
37
+ list_profiles,
38
+ delete_profile,
39
+ )
40
+
41
+ from .registry import (
42
+ RobotRegistry,
43
+ KNOWN_ROBOTS,
44
+ get_robot_info,
45
+ )
46
+
47
+ from .introspection import (
48
+ get_capabilities,
49
+ get_methods,
50
+ test_capability,
51
+ )
52
+
53
+ from .manager import (
54
+ RobotManager,
55
+ )
56
+
57
+ __all__ = [
58
+ # Discovery
59
+ "DiscoveredRobot",
60
+ "discover_robots",
61
+ "discover_serial_robots",
62
+ "discover_network_cameras",
63
+ # Profiles
64
+ "RobotProfile",
65
+ "load_profile",
66
+ "save_profile",
67
+ "list_profiles",
68
+ "delete_profile",
69
+ # Registry
70
+ "RobotRegistry",
71
+ "KNOWN_ROBOTS",
72
+ "get_robot_info",
73
+ # Introspection
74
+ "get_capabilities",
75
+ "get_methods",
76
+ "test_capability",
77
+ # Manager
78
+ "RobotManager",
79
+ ]