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.
- baselines/pi_policy.py +110 -0
- baselines/rum/__init__.py +1 -0
- baselines/rum/loss_fns/__init__.py +37 -0
- baselines/rum/loss_fns/abstract_loss_fn.py +13 -0
- baselines/rum/loss_fns/diffusion_policy_loss_fn.py +114 -0
- baselines/rum/loss_fns/rvq_loss_fn.py +104 -0
- baselines/rum/loss_fns/vqbet_loss_fn.py +202 -0
- baselines/rum/models/__init__.py +1 -0
- baselines/rum/models/bet/__init__.py +3 -0
- baselines/rum/models/bet/bet.py +347 -0
- baselines/rum/models/bet/gpt.py +277 -0
- baselines/rum/models/bet/tokenized_bet.py +454 -0
- baselines/rum/models/bet/utils.py +124 -0
- baselines/rum/models/bet/vqbet.py +410 -0
- baselines/rum/models/bet/vqvae/__init__.py +3 -0
- baselines/rum/models/bet/vqvae/residual_vq.py +346 -0
- baselines/rum/models/bet/vqvae/vector_quantize_pytorch.py +1194 -0
- baselines/rum/models/bet/vqvae/vqvae.py +313 -0
- baselines/rum/models/bet/vqvae/vqvae_utils.py +30 -0
- baselines/rum/models/custom.py +33 -0
- baselines/rum/models/encoders/__init__.py +0 -0
- baselines/rum/models/encoders/abstract_base_encoder.py +70 -0
- baselines/rum/models/encoders/identity.py +45 -0
- baselines/rum/models/encoders/timm_encoders.py +82 -0
- baselines/rum/models/policies/diffusion_policy.py +881 -0
- baselines/rum/models/policies/open_loop.py +122 -0
- baselines/rum/models/policies/simple_open_loop.py +108 -0
- baselines/rum/molmo/server.py +144 -0
- baselines/rum/policy.py +293 -0
- baselines/rum/utils/__init__.py +212 -0
- baselines/rum/utils/action_transforms.py +22 -0
- baselines/rum/utils/decord_transforms.py +135 -0
- baselines/rum/utils/rpc.py +249 -0
- baselines/rum/utils/schedulers.py +71 -0
- baselines/rum/utils/trajectory_vis.py +128 -0
- baselines/rum/utils/zmq_utils.py +281 -0
- baselines/rum_policy.py +108 -0
- egogym/__init__.py +8 -0
- egogym/assets/constants.py +1804 -0
- egogym/components/__init__.py +1 -0
- egogym/components/object.py +94 -0
- egogym/egogym.py +106 -0
- egogym/embodiments/__init__.py +10 -0
- egogym/embodiments/arms/__init__.py +4 -0
- egogym/embodiments/arms/arm.py +65 -0
- egogym/embodiments/arms/droid.py +49 -0
- egogym/embodiments/grippers/__init__.py +4 -0
- egogym/embodiments/grippers/floating_gripper.py +58 -0
- egogym/embodiments/grippers/rum.py +6 -0
- egogym/embodiments/robot.py +95 -0
- egogym/evaluate.py +216 -0
- egogym/managers/__init__.py +2 -0
- egogym/managers/objects_managers.py +30 -0
- egogym/managers/textures_manager.py +21 -0
- egogym/misc/molmo_client.py +49 -0
- egogym/misc/molmo_server.py +197 -0
- egogym/policies/__init__.py +1 -0
- egogym/policies/base_policy.py +13 -0
- egogym/scripts/analayze.py +834 -0
- egogym/scripts/plot.py +87 -0
- egogym/scripts/plot_correlation.py +392 -0
- egogym/scripts/plot_correlation_hardcoded.py +338 -0
- egogym/scripts/plot_failure.py +248 -0
- egogym/scripts/plot_failure_hardcoded.py +195 -0
- egogym/scripts/plot_failure_vlm.py +257 -0
- egogym/scripts/plot_failure_vlm_hardcoded.py +177 -0
- egogym/scripts/plot_line.py +303 -0
- egogym/scripts/plot_line_hardcoded.py +285 -0
- egogym/scripts/plot_pi0_bars.py +169 -0
- egogym/tasks/close.py +84 -0
- egogym/tasks/open.py +85 -0
- egogym/tasks/pick.py +121 -0
- egogym/utils.py +969 -0
- egogym/wrappers/__init__.py +20 -0
- egogym/wrappers/episode_monitor.py +282 -0
- egogym/wrappers/unprivileged_chatgpt.py +163 -0
- egogym/wrappers/unprivileged_gemini.py +157 -0
- egogym/wrappers/unprivileged_molmo.py +88 -0
- egogym/wrappers/unprivileged_moondream.py +121 -0
- egogym-0.1.0.dist-info/METADATA +52 -0
- egogym-0.1.0.dist-info/RECORD +83 -0
- egogym-0.1.0.dist-info/WHEEL +5 -0
- 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,,
|