egogym 0.1.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.
Files changed (83) hide show
  1. baselines/pi_policy.py +110 -0
  2. baselines/rum/__init__.py +1 -0
  3. baselines/rum/loss_fns/__init__.py +37 -0
  4. baselines/rum/loss_fns/abstract_loss_fn.py +13 -0
  5. baselines/rum/loss_fns/diffusion_policy_loss_fn.py +114 -0
  6. baselines/rum/loss_fns/rvq_loss_fn.py +104 -0
  7. baselines/rum/loss_fns/vqbet_loss_fn.py +202 -0
  8. baselines/rum/models/__init__.py +1 -0
  9. baselines/rum/models/bet/__init__.py +3 -0
  10. baselines/rum/models/bet/bet.py +347 -0
  11. baselines/rum/models/bet/gpt.py +277 -0
  12. baselines/rum/models/bet/tokenized_bet.py +454 -0
  13. baselines/rum/models/bet/utils.py +124 -0
  14. baselines/rum/models/bet/vqbet.py +410 -0
  15. baselines/rum/models/bet/vqvae/__init__.py +3 -0
  16. baselines/rum/models/bet/vqvae/residual_vq.py +346 -0
  17. baselines/rum/models/bet/vqvae/vector_quantize_pytorch.py +1194 -0
  18. baselines/rum/models/bet/vqvae/vqvae.py +313 -0
  19. baselines/rum/models/bet/vqvae/vqvae_utils.py +30 -0
  20. baselines/rum/models/custom.py +33 -0
  21. baselines/rum/models/encoders/__init__.py +0 -0
  22. baselines/rum/models/encoders/abstract_base_encoder.py +70 -0
  23. baselines/rum/models/encoders/identity.py +45 -0
  24. baselines/rum/models/encoders/timm_encoders.py +82 -0
  25. baselines/rum/models/policies/diffusion_policy.py +881 -0
  26. baselines/rum/models/policies/open_loop.py +122 -0
  27. baselines/rum/models/policies/simple_open_loop.py +108 -0
  28. baselines/rum/molmo/server.py +144 -0
  29. baselines/rum/policy.py +293 -0
  30. baselines/rum/utils/__init__.py +212 -0
  31. baselines/rum/utils/action_transforms.py +22 -0
  32. baselines/rum/utils/decord_transforms.py +135 -0
  33. baselines/rum/utils/rpc.py +249 -0
  34. baselines/rum/utils/schedulers.py +71 -0
  35. baselines/rum/utils/trajectory_vis.py +128 -0
  36. baselines/rum/utils/zmq_utils.py +281 -0
  37. baselines/rum_policy.py +108 -0
  38. egogym/__init__.py +8 -0
  39. egogym/assets/constants.py +1804 -0
  40. egogym/components/__init__.py +1 -0
  41. egogym/components/object.py +94 -0
  42. egogym/egogym.py +106 -0
  43. egogym/embodiments/__init__.py +10 -0
  44. egogym/embodiments/arms/__init__.py +4 -0
  45. egogym/embodiments/arms/arm.py +65 -0
  46. egogym/embodiments/arms/droid.py +49 -0
  47. egogym/embodiments/grippers/__init__.py +4 -0
  48. egogym/embodiments/grippers/floating_gripper.py +58 -0
  49. egogym/embodiments/grippers/rum.py +6 -0
  50. egogym/embodiments/robot.py +95 -0
  51. egogym/evaluate.py +216 -0
  52. egogym/managers/__init__.py +2 -0
  53. egogym/managers/objects_managers.py +30 -0
  54. egogym/managers/textures_manager.py +21 -0
  55. egogym/misc/molmo_client.py +49 -0
  56. egogym/misc/molmo_server.py +197 -0
  57. egogym/policies/__init__.py +1 -0
  58. egogym/policies/base_policy.py +13 -0
  59. egogym/scripts/analayze.py +834 -0
  60. egogym/scripts/plot.py +87 -0
  61. egogym/scripts/plot_correlation.py +392 -0
  62. egogym/scripts/plot_correlation_hardcoded.py +338 -0
  63. egogym/scripts/plot_failure.py +248 -0
  64. egogym/scripts/plot_failure_hardcoded.py +195 -0
  65. egogym/scripts/plot_failure_vlm.py +257 -0
  66. egogym/scripts/plot_failure_vlm_hardcoded.py +177 -0
  67. egogym/scripts/plot_line.py +303 -0
  68. egogym/scripts/plot_line_hardcoded.py +285 -0
  69. egogym/scripts/plot_pi0_bars.py +169 -0
  70. egogym/tasks/close.py +84 -0
  71. egogym/tasks/open.py +85 -0
  72. egogym/tasks/pick.py +121 -0
  73. egogym/utils.py +969 -0
  74. egogym/wrappers/__init__.py +20 -0
  75. egogym/wrappers/episode_monitor.py +282 -0
  76. egogym/wrappers/unprivileged_chatgpt.py +163 -0
  77. egogym/wrappers/unprivileged_gemini.py +157 -0
  78. egogym/wrappers/unprivileged_molmo.py +88 -0
  79. egogym/wrappers/unprivileged_moondream.py +121 -0
  80. egogym-0.1.0.dist-info/METADATA +52 -0
  81. egogym-0.1.0.dist-info/RECORD +83 -0
  82. egogym-0.1.0.dist-info/WHEEL +5 -0
  83. egogym-0.1.0.dist-info/top_level.txt +2 -0
@@ -0,0 +1,88 @@
1
+ import asyncio
2
+ import numpy as np
3
+ import threading
4
+ from egogym.utils import pixel_to_world
5
+ from egogym.misc.molmo_client import MolmoClient
6
+
7
+ class UnprivilegedMolmo:
8
+
9
+ def __init__(self, env, host="localhost", port=8765):
10
+ self.env = env
11
+ self.unprivileged_T_world_object = None
12
+ self.molmo_client = MolmoClient(host=host, port=port)
13
+ self._loop = None
14
+ self._loop_thread = None
15
+ self._connected = False
16
+
17
+ def _start_event_loop(self):
18
+ if self._loop is None:
19
+ self._loop = asyncio.new_event_loop()
20
+ self._loop_thread = threading.Thread(target=self._run_event_loop, daemon=True)
21
+ self._loop_thread.start()
22
+
23
+ def _run_event_loop(self):
24
+ asyncio.set_event_loop(self._loop)
25
+ self._loop.run_forever()
26
+
27
+ def _ensure_connected(self):
28
+ if not self._connected:
29
+ try:
30
+ self._start_event_loop()
31
+ future = asyncio.run_coroutine_threadsafe(self.molmo_client.connect(), self._loop)
32
+ future.result(timeout=10)
33
+ self._connected = True
34
+ except Exception as e:
35
+ raise RuntimeError(
36
+ f"Failed to connect to Molmo server at {self.molmo_client.uri}. "
37
+ f"Make sure the Molmo server is running with: "
38
+ f"'python baselines/rum/molmo_server.py'. "
39
+ f"Original error: {e}"
40
+ ) from e
41
+
42
+ def _infer_point_sync(self, rgb: np.ndarray, object_name: str) -> np.ndarray:
43
+ self._ensure_connected()
44
+ future = asyncio.run_coroutine_threadsafe(
45
+ self.molmo_client.infer_point(rgb, object_name=object_name),
46
+ self._loop
47
+ )
48
+ return future.result(timeout=30)
49
+
50
+ def reset(self, **kwargs):
51
+ obs, info = self.env.reset(**kwargs)
52
+
53
+ robot = self.env.unwrapped.robot
54
+ robot.rgb_renderers[robot.camera_names[0]].enable_depth_rendering()
55
+ robot.rgb_renderers[robot.camera_names[0]].update_scene(robot.data, robot.camera_names[0])
56
+ depth = robot.rgb_renderers[robot.camera_names[0]].render()
57
+ robot.rgb_renderers[robot.camera_names[0]].disable_depth_rendering()
58
+
59
+ point_norm = self._infer_point_sync(obs["rgb_ego"], obs["object_name"])
60
+ x_norm, y_norm = point_norm
61
+ x = int(x_norm * self.env.unwrapped.render_width)
62
+ y = int(y_norm * self.env.unwrapped.render_height)
63
+ depth_value = depth[y, x] + 0.03
64
+ self.unprivileged_T_world_object = pixel_to_world(x, y, depth_value, self.env.unwrapped.model, self.env.unwrapped.data, robot.camera_names[0], self.env.unwrapped.render_width, self.env.unwrapped.render_height)
65
+
66
+ return obs, info
67
+
68
+ def step(self, action):
69
+ obs, reward, terminated, truncated, info = self.env.step(action)
70
+
71
+ object_pose = obs["object_pose"].reshape(4,4)
72
+ object_pose[:3, 3] = self.unprivileged_T_world_object
73
+ obs["object_pose"] = object_pose.flatten()
74
+
75
+ return obs, reward, terminated, truncated, info
76
+
77
+ def close(self):
78
+ if self._connected:
79
+ future = asyncio.run_coroutine_threadsafe(self.molmo_client.disconnect(), self._loop)
80
+ future.result(timeout=5)
81
+ self._connected = False
82
+ if self._loop is not None:
83
+ self._loop.call_soon_threadsafe(self._loop.stop)
84
+ self._loop_thread.join(timeout=2)
85
+ self.env.close()
86
+
87
+ def __getattr__(self, name):
88
+ return getattr(self.env, name)
@@ -0,0 +1,121 @@
1
+ import os
2
+ import numpy as np
3
+ import time
4
+ import io
5
+ import base64
6
+ import requests
7
+ from PIL import Image
8
+ from egogym.utils import pixel_to_world
9
+
10
+ MOONDREAM_API_URL = "https://api.moondream.ai/v1/point"
11
+
12
+
13
+ class UnprivilegedMoondream:
14
+
15
+ def __init__(self, env, api_key=None):
16
+ self.env = env
17
+ self.unprivileged_T_world_object = None
18
+
19
+ if api_key is None:
20
+ api_key = os.environ.get("MOONDREAM_API_KEY")
21
+
22
+ self.api_key = api_key
23
+
24
+ def _call_api_with_retry(self, image_base64: str, object_name: str, max_retries=3, base_delay=2):
25
+ """Call Moondream API with retry logic for transient errors."""
26
+ headers = {
27
+ "Content-Type": "application/json",
28
+ "X-Moondream-Auth": self.api_key
29
+ }
30
+
31
+ payload = {
32
+ "image_url": f"data:image/jpeg;base64,{image_base64}",
33
+ "object": object_name
34
+ }
35
+
36
+ for attempt in range(max_retries):
37
+ try:
38
+ response = requests.post(MOONDREAM_API_URL, headers=headers, json=payload, timeout=30)
39
+
40
+ if response.status_code == 200:
41
+ return response.json()
42
+ elif response.status_code in [503, 429] and attempt < max_retries - 1:
43
+ delay = base_delay * (2 ** attempt)
44
+ print(f"API error {response.status_code}: {response.text}. Retrying in {delay}s... (attempt {attempt + 1}/{max_retries})")
45
+ time.sleep(delay)
46
+ continue
47
+ else:
48
+ response.raise_for_status()
49
+ except requests.exceptions.RequestException as e:
50
+ if attempt < max_retries - 1:
51
+ delay = base_delay * (2 ** attempt)
52
+ print(f"Request error: {e}. Retrying in {delay}s... (attempt {attempt + 1}/{max_retries})")
53
+ time.sleep(delay)
54
+ continue
55
+ else:
56
+ raise
57
+
58
+ return None
59
+
60
+ def _infer_point_sync(self, rgb: np.ndarray, object_name: str) -> np.ndarray:
61
+ """Use Moondream API to locate object in image and return normalized coordinates."""
62
+ if rgb.dtype == np.float32 or rgb.dtype == np.float64:
63
+ rgb = (rgb * 255).astype(np.uint8)
64
+ image = Image.fromarray(rgb)
65
+
66
+ try:
67
+ buf = io.BytesIO()
68
+ image.save(buf, format='JPEG')
69
+ image_bytes = buf.getvalue()
70
+ image_base64 = base64.b64encode(image_bytes).decode('utf-8')
71
+
72
+ response = self._call_api_with_retry(image_base64, object_name)
73
+
74
+ if response and "points" in response and len(response["points"]) > 0:
75
+ point = response["points"][0]
76
+ x_norm = float(point["x"])
77
+ y_norm = float(point["y"])
78
+
79
+ x_norm = max(0.0, min(1.0, x_norm))
80
+ y_norm = max(0.0, min(1.0, y_norm))
81
+
82
+ return np.array([x_norm, y_norm], dtype=np.float32)
83
+
84
+ return np.array([0.5, 0.5], dtype=np.float32)
85
+
86
+ except Exception as e:
87
+ print(f"Moondream API error: {e}")
88
+ return np.array([0.5, 0.5], dtype=np.float32)
89
+
90
+ def reset(self, **kwargs):
91
+ obs, info = self.env.reset(**kwargs)
92
+
93
+ robot = self.env.unwrapped.robot
94
+ robot.rgb_renderers[robot.camera_names[0]].enable_depth_rendering()
95
+ robot.rgb_renderers[robot.camera_names[0]].update_scene(robot.data, robot.camera_names[0])
96
+ depth = robot.rgb_renderers[robot.camera_names[0]].render()
97
+ robot.rgb_renderers[robot.camera_names[0]].disable_depth_rendering()
98
+
99
+ point_norm = self._infer_point_sync(obs["rgb_ego"], obs["object_name"])
100
+ x_norm, y_norm = point_norm
101
+ x = int(x_norm * self.env.unwrapped.render_width)
102
+ y = int(y_norm * self.env.unwrapped.render_height)
103
+ depth_value = depth[y, x] + 0.03
104
+ self.unprivileged_T_world_object = pixel_to_world(x, y, depth_value, self.env.unwrapped.model, self.env.unwrapped.data, robot.camera_names[0], self.env.unwrapped.render_width, self.env.unwrapped.render_height)
105
+
106
+ return obs, info
107
+
108
+ def step(self, action):
109
+ obs, reward, terminated, truncated, info = self.env.step(action)
110
+
111
+ object_pose = obs["object_pose"].reshape(4,4)
112
+ object_pose[:3, 3] = self.unprivileged_T_world_object
113
+ obs["object_pose"] = object_pose.flatten()
114
+
115
+ return obs, reward, terminated, truncated, info
116
+
117
+ def close(self):
118
+ self.env.close()
119
+
120
+ def __getattr__(self, name):
121
+ return getattr(self.env, name)
@@ -0,0 +1,52 @@
1
+ Metadata-Version: 2.4
2
+ Name: egogym
3
+ Version: 0.1.0
4
+ Summary: EgoGym: A robotics environment for egocentric control tasks
5
+ License: MIT
6
+ Project-URL: Homepage, https://github.com/omarrayyann/EgoGym
7
+ Project-URL: Repository, https://github.com/omarrayyann/EgoGym
8
+ Keywords: robotics,reinforcement-learning,mujoco,gymnasium
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.8
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Requires-Python: >=3.8
17
+ Description-Content-Type: text/markdown
18
+ Requires-Dist: mujoco
19
+ Requires-Dist: gymnasium
20
+ Requires-Dist: opencv-python
21
+ Requires-Dist: scipy
22
+ Requires-Dist: gdown
23
+ Requires-Dist: numpy
24
+ Requires-Dist: torch
25
+ Requires-Dist: transformers
26
+ Requires-Dist: tqdm
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest; extra == "dev"
29
+ Requires-Dist: black; extra == "dev"
30
+ Requires-Dist: flake8; extra == "dev"
31
+
32
+ # EgoGym
33
+
34
+ EgoGym is a lightweight benchmark suite for egocentric robot policies
35
+
36
+ ```python
37
+ env = gym.make(
38
+ "Egogym-Pick-v0", # Options: "Egogym-Pick-v0", "Egogym-Open-v0", "Egogym-Close-v0"
39
+ robot="rum", # Options: "rum", "droid"
40
+ action_space="delta", # Options: "delta", "absolute"
41
+ num_objs=5, # Options: 1-5
42
+ )
43
+ ```
44
+
45
+ **Actions (17-dim):**
46
+ - `[0-15]`: flattened 4x4 transformation
47
+ - `[16]`: continuous gripper (0=open, 1=close)
48
+
49
+ **Coordinate Frame:**
50
+ - **x**: Right of camera
51
+ - **y**: Up of camera
52
+ - **z**: Backward of camera
@@ -0,0 +1,83 @@
1
+ baselines/pi_policy.py,sha256=mT-rJJ--Kp0WxVdWtPHgB0Zd_CS-2U8Cilk4rrf3fFY,4368
2
+ baselines/rum_policy.py,sha256=YTw-3O6sLAy5UZ9begWlY3VwWI-PMIlxIMWF8_Y1pxc,4549
3
+ baselines/rum/__init__.py,sha256=6SyMXPP_WUscCLtrgntS-Oq8FDivQ5j9UJHiX6rYKb4,27
4
+ baselines/rum/policy.py,sha256=KBIT19nzhhq6PB-pxzcxSCOZ4jUN2hfxiuT58nItz_0,10775
5
+ baselines/rum/loss_fns/__init__.py,sha256=arlX1c2M3S-2n0BHRhhYCu7tn3i0qYZchTeMtKsVoh8,1163
6
+ baselines/rum/loss_fns/abstract_loss_fn.py,sha256=CmCAGmgJWKpdPv2e8O6uDAq3a5ktIs5MukMQmOu8bNc,291
7
+ baselines/rum/loss_fns/diffusion_policy_loss_fn.py,sha256=Ef-LDQh3EvFG50U4C1n-Zpk3MCqQ1W2UtVurTX9uM3g,3863
8
+ baselines/rum/loss_fns/rvq_loss_fn.py,sha256=Li4j4Eb-wy5qF0Sjk5f3EjOWtVObkoXuaFbxusXcCc4,3424
9
+ baselines/rum/loss_fns/vqbet_loss_fn.py,sha256=ZN4mPdSQ9Ngx4q9jjBfZa5f8myhrjhASpBAOGplpHWY,7326
10
+ baselines/rum/models/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
11
+ baselines/rum/models/custom.py,sha256=9oTuQI0udxRnotnQQqRDMZkMFN6VFSsF2Y8KMtf1_cw,1073
12
+ baselines/rum/models/bet/__init__.py,sha256=Snvarck4ui4gv05Zx1ovSfTadkKL4s3sFjpIHj840ZA,186
13
+ baselines/rum/models/bet/bet.py,sha256=dGuyUo9gEt2rM-rDPp_yYmrMUC333Hydq2jSeMdqqsk,13660
14
+ baselines/rum/models/bet/gpt.py,sha256=rzJK9ilz0U3Ca2d68A0mHklFO1UaDtzZu3XX6ez_z50,10739
15
+ baselines/rum/models/bet/tokenized_bet.py,sha256=kL7YF-rqkHj9Dv_cND1ObRydWbtp19-QpMnNifw2V8s,19168
16
+ baselines/rum/models/bet/utils.py,sha256=OTJTEssmCPvhAa6jbCYar-ol2XS3c0xSBsvPsJzab8k,5665
17
+ baselines/rum/models/bet/vqbet.py,sha256=zj2LWwKkDoIk7SCIN9WT3BfPrMWfOG2IIhVNLzAuwr4,17021
18
+ baselines/rum/models/bet/vqvae/__init__.py,sha256=70gnPjHY1za7k-nViX9GZBrVG87eLN4FKIEcIKKTpIE,203
19
+ baselines/rum/models/bet/vqvae/residual_vq.py,sha256=BgMyTkWtXbCOTJ2tREwTgjugxcLk6zzX6qHU9fgg7bY,10842
20
+ baselines/rum/models/bet/vqvae/vector_quantize_pytorch.py,sha256=d9tSdCjlYp3qtqXr7Zya6OnnTbGjtOApeu4ksVdPd0s,38223
21
+ baselines/rum/models/bet/vqvae/vqvae.py,sha256=QfAOs8fBftuT1CwDPOI_nl2SKggW6Q_EPto0FM8M5Rs,11556
22
+ baselines/rum/models/bet/vqvae/vqvae_utils.py,sha256=pUpgXb7Jt_H9Ou7rrtqdfj_tYD10oZScSur2JtH2ioc,968
23
+ baselines/rum/models/encoders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ baselines/rum/models/encoders/abstract_base_encoder.py,sha256=TpKMrqQBwgwS9w5X7LkHK7iunAlUZvBM_ERJTnbwOQE,1813
25
+ baselines/rum/models/encoders/identity.py,sha256=y7_tVFKfRUl0CIydvisEvwe3_30IWKGItALf3g4VPd0,1136
26
+ baselines/rum/models/encoders/timm_encoders.py,sha256=LvKVOwq1lD0Q-b7m2FoVXKePz-xN23Fmg0F3bwCx8A4,2519
27
+ baselines/rum/models/policies/diffusion_policy.py,sha256=3s5tyUdd1vOjCYcbmFJpzrforTL0P3x5UlaHYWJgSIc,32096
28
+ baselines/rum/models/policies/open_loop.py,sha256=hirJ03CpktSqKB2GcGrM-5eA7TpgBqK1VIZ3l55FSrI,4175
29
+ baselines/rum/models/policies/simple_open_loop.py,sha256=3HvkaC2uji0gvI1HswuNidVqOwd0G0Dls73ZiZKiDB4,3641
30
+ baselines/rum/molmo/server.py,sha256=cR4TGSYslwNTfnU6SF-ixc7X5i-RqHDzFGRF5b42BTU,4511
31
+ baselines/rum/utils/__init__.py,sha256=x3Yhx4jqkPQtdcVyBuvBA_8BgWWb_-IKhKIGeLkYBv4,7094
32
+ baselines/rum/utils/action_transforms.py,sha256=kSi6UPn8fM1NQSviHvSeXNljNOuVZECwaFdgyp-Yx4o,674
33
+ baselines/rum/utils/decord_transforms.py,sha256=b6o3b13ilwfrsxAxVoHgDbABk4lNKLLw0RXiR4l89Oc,4680
34
+ baselines/rum/utils/rpc.py,sha256=46hJFS79kUvyX5-rhm5hYLz1mBS7hF_sC5UkaaF_dJQ,8278
35
+ baselines/rum/utils/schedulers.py,sha256=Rjl-HJdpehkBy_zoJLy5u0YDdIweO-7FUFSMQgSVZ3o,2508
36
+ baselines/rum/utils/trajectory_vis.py,sha256=nUXNV8cwra4k91C3loZd_Lg4l5leG1GOkSGRqGCiNAU,4310
37
+ baselines/rum/utils/zmq_utils.py,sha256=ZSsNaDqpZsGFZRWamRrT0SwuiPwru007kOUcHO-oLjg,9719
38
+ egogym/__init__.py,sha256=CuZXrmju4K0sGveackQCO5ySeiLv23jqVY0Nx25eqes,295
39
+ egogym/egogym.py,sha256=FLhqcIa-H40zmkS85ODuqlixDegXMnVqSbjloVY5JCk,4693
40
+ egogym/evaluate.py,sha256=5dz24UXmfQDBU_Yn7bftRzNrCIhgbLCvQJDm3DqwNzA,7971
41
+ egogym/utils.py,sha256=Yv_bnTIa1wKh_o--u_JwczLqrvmJQnYHm-21N3GBGyw,40723
42
+ egogym/assets/constants.py,sha256=L9Pf5TvmHG4OUSiy3KTb-nWC0yI57T0aMrgsiAZbjqM,29200
43
+ egogym/components/__init__.py,sha256=c8B_uNbJ7iKUFTRoDjJgveapvnyS8QYJtD5VVKVQRwc,45
44
+ egogym/components/object.py,sha256=gJXg6_siNJig7MReTxjZM8soh17d9EhcyZlv4wEkbZM,3655
45
+ egogym/embodiments/__init__.py,sha256=-apnOCtVcTlgH0WzOKRlWG3-4UJkkJcjZaG-ybzKUQ4,265
46
+ egogym/embodiments/robot.py,sha256=FZ4--54DhvvOs7GEKdd-nUiTYz2x_6lh3w3oMD3jIkg,3238
47
+ egogym/embodiments/arms/__init__.py,sha256=GlfQkjW9nuIuvUbprUi0MzDEqc6knh6HdY4EjyMfQK8,80
48
+ egogym/embodiments/arms/arm.py,sha256=SBk9oJwhCaLNqA9OeNfi88905_AHasTa8M5eb0ZX5lc,2252
49
+ egogym/embodiments/arms/droid.py,sha256=piZLBt7GBQwHv3alHdRvWAkDiuf6kVbnsCpwfi7srzw,2120
50
+ egogym/embodiments/grippers/__init__.py,sha256=uQlGAp2wPStYurIvHKmBx85g2r9XABpzcSRC6qoA2FA,119
51
+ egogym/embodiments/grippers/floating_gripper.py,sha256=NdaBs_PEoXzbKhJ1EI-252x_YrbtziTrJxS-iqo9Pi8,2219
52
+ egogym/embodiments/grippers/rum.py,sha256=gc7RXQh_jXxTPiPEP06W1b21nhZvwE0aMy48binGSLA,327
53
+ egogym/managers/__init__.py,sha256=j3m90-JRo5322fBPy4VHx9LNG_Xivl9upYolIvYJhcI,91
54
+ egogym/managers/objects_managers.py,sha256=HIf2BRoSBR5oKQVo-NT7uNoevSTUBFXHJy010GZqgbk,1155
55
+ egogym/managers/textures_manager.py,sha256=NsRL0aPHpky5aDiZazyP1bFozebBn-Thcr_pFaBMt4s,654
56
+ egogym/misc/molmo_client.py,sha256=Fz_Ix8CjxhIVbzTbyPwZmFS1I0QVZIjrwp5t8zypPvE,1408
57
+ egogym/misc/molmo_server.py,sha256=cQ3EJSrH4ptfUHWNQwJN5vAHQiUnEFo7fVh_LdYOLVQ,6171
58
+ egogym/policies/__init__.py,sha256=X1q8mB870ZcNcuhjAkdXOT4bK5P5N-4VsFd6car0m3I,36
59
+ egogym/policies/base_policy.py,sha256=nkLchlGKPIyHlT9aEuaSm5HynPRyu0xV2-mVG0t_WtU,228
60
+ egogym/scripts/analayze.py,sha256=SVWRDZvm1cGK4JUpXXDNpLl52Q9YqDIVNUYk4h23MdE,30109
61
+ egogym/scripts/plot.py,sha256=RkMhA0ULcLnwTCawZPfJ9KlwyB1Eb8zzFmxiFxOAImk,2786
62
+ egogym/scripts/plot_correlation.py,sha256=hyvh2ruicU8wp6Jupuok3bxyVKfjFhV8akdNwtcL4Kw,13878
63
+ egogym/scripts/plot_correlation_hardcoded.py,sha256=ZP93MT-kP2G2yv15-8SLySqz0OkQPxWllNRx51K2ZkE,11325
64
+ egogym/scripts/plot_failure.py,sha256=CdKxWEmghhKoHEmprQ9-YBgMeD6P1-shSgbfVMvi7GU,9079
65
+ egogym/scripts/plot_failure_hardcoded.py,sha256=ozFk6ETgcKmjvJwdKpoSfC_Nj0-NJn94a9gQ1tzJMh8,6551
66
+ egogym/scripts/plot_failure_vlm.py,sha256=imY6yLQ2vqgDMg0kM1LnsnVUWbL_3rOGlBKAdRya6Xg,8916
67
+ egogym/scripts/plot_failure_vlm_hardcoded.py,sha256=BlHIgsf6SMmCKuTF0XMssr9MaPVsdazb-eyF_yS0vMs,5432
68
+ egogym/scripts/plot_line.py,sha256=fjT9JzE7meTy2YRBkzbCTV3tslXm4UAZMi22r4ZFSmc,9831
69
+ egogym/scripts/plot_line_hardcoded.py,sha256=hDsfEGc-_CzONYy_VcWHqUNG4BqI_94-D6fIakfQfdw,8779
70
+ egogym/scripts/plot_pi0_bars.py,sha256=TRSF95ggAwtPCxiSmRGm_xCcF_A2BDIJMNEP6btJfVA,4856
71
+ egogym/tasks/close.py,sha256=snrd-FngKbgXoWijuaEX8eW_KtliefhTucez8xhqi-E,3739
72
+ egogym/tasks/open.py,sha256=MfYJH4RJYhD8xFqbC4TmalorCCwfoqO2LnxZbwwx0L8,3761
73
+ egogym/tasks/pick.py,sha256=ecdYB-c9-JLEsAYK_7655VnIdFOC2yP2HsDev04ufr0,5737
74
+ egogym/wrappers/__init__.py,sha256=7qlwlbL9KQjGHiRUb7GBr7zz5W9o2b6HedsPNmUeh58,762
75
+ egogym/wrappers/episode_monitor.py,sha256=jI-O7HSOo7sJZGaaUXe9ZJ4q0Pyi13FcHUpuu430sLk,10923
76
+ egogym/wrappers/unprivileged_chatgpt.py,sha256=inkpa9gZvqbDiCVhWRDUHnv1TVzmED0Sv6jgGfWYWuE,6356
77
+ egogym/wrappers/unprivileged_gemini.py,sha256=DGnSZ9gZVTyrH5iFRcyKtO-yXm6KaeW0vFfjzYDuumM,6252
78
+ egogym/wrappers/unprivileged_molmo.py,sha256=YCTa_O3hv17tX_WxQ1WQ8RIAIIX4gRrR6UTTfIdiOPM,3587
79
+ egogym/wrappers/unprivileged_moondream.py,sha256=iRNYYURcDFQkCYJEnr6fjPQUgaCAtvmS2ol4J3Rcytk,4762
80
+ egogym-0.1.0.dist-info/METADATA,sha256=kP6g0e3I5tguQyKtL0YLv50qGCoaO7lTnnYtlH6MADE,1651
81
+ egogym-0.1.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
82
+ egogym-0.1.0.dist-info/top_level.txt,sha256=JLnBIwPgLWhzMxIhuhpBvdPnG-nWQ7QURdn5Qgml6lw,17
83
+ egogym-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ baselines
2
+ egogym