imt-ring 1.6.22__tar.gz → 1.6.23__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {imt_ring-1.6.22 → imt_ring-1.6.23}/PKG-INFO +1 -1
- {imt_ring-1.6.22 → imt_ring-1.6.23}/pyproject.toml +1 -1
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/imt_ring.egg-info/PKG-INFO +1 -1
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/_random.py +47 -34
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/jcalc.py +10 -1
- {imt_ring-1.6.22 → imt_ring-1.6.23}/readme.md +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/setup.cfg +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/imt_ring.egg-info/SOURCES.txt +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/imt_ring.egg-info/dependency_links.txt +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/imt_ring.egg-info/requires.txt +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/imt_ring.egg-info/top_level.txt +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algebra.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/custom_joints/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/custom_joints/rsaddle_joint.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/custom_joints/suntay.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/dynamics.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/generator/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/generator/base.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/generator/batch.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/generator/finalize_fns.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/generator/pd_control.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/generator/setup_fns.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/generator/types.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/kinematics.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/algorithms/sensors.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/base.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/branched.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/inv_pendulum.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/spherical_stiff.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/symmetric.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_all_1.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_all_2.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_control.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_double_pendulum.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_free.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_kinematics.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_randomize_position.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_sensors.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/test_examples.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/xml/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/xml/abstract.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/xml/from_xml.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/xml/test_from_xml.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/xml/test_to_xml.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/xml/to_xml.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/maths.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/base.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/callbacks.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/ml_utils.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/optimizer.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/params/0x1d76628065a71e0f.pickle +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/ringnet.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/rnno_v1.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/train.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/ml/training_loop.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/rendering/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/rendering/base_render.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/rendering/mujoco_render.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/rendering/vispy_render.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/rendering/vispy_visuals.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/sim2real/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/sim2real/sim2real.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/spatial.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/sys_composer/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/sys_composer/delete_sys.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/sys_composer/inject_sys.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/sys_composer/morph_sys.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/backend.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/batchsize.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/colab.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/dataloader.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/dataloader_torch.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/hdf5.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/normalizer.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/path.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/randomize_sys.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/register_gym_envs/__init__.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/register_gym_envs/saddle.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/utils/utils.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_algebra.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_base.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_custom_joints.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_dynamics.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_generator.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_jcalc.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_jit.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_kinematics.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_maths.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_ml_utils.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_motion_artifacts.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_pd_control.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_quickstart_example.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_random.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_randomize.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_rcmg.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_render.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_sensors.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_sim2real.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_sys_composer.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_train.py +0 -0
- {imt_ring-1.6.22 → imt_ring-1.6.23}/tests/test_utils.py +0 -0
@@ -35,6 +35,9 @@ def random_angle_over_time(
|
|
35
35
|
randomized_interpolation: bool = False,
|
36
36
|
range_of_motion: bool = False,
|
37
37
|
range_of_motion_method: str = "uniform",
|
38
|
+
# this value has nothing to do with `range_of_motion` flag
|
39
|
+
# this forces the value to stay within [ANG_0 - rom_halfsize, ANG_0 + rom_halfsize]
|
40
|
+
rom_halfsize: float | TimeDependentFloat = 2 * jnp.pi,
|
38
41
|
cdf_bins_min: int = 5,
|
39
42
|
cdf_bins_max: Optional[int] = None,
|
40
43
|
interpolation_method: str = "cosine",
|
@@ -44,9 +47,14 @@ def random_angle_over_time(
|
|
44
47
|
|
45
48
|
key_t, consume_t = random.split(key_t)
|
46
49
|
key_ang, consume_ang = random.split(key_ang)
|
50
|
+
rom_halfsize_float = _to_float(rom_halfsize, t)
|
51
|
+
rom_lower = ANG_0 - rom_halfsize_float
|
52
|
+
rom_upper = ANG_0 + rom_halfsize_float
|
47
53
|
dt, phi = _resolve_range_of_motion(
|
48
54
|
range_of_motion,
|
49
55
|
range_of_motion_method,
|
56
|
+
rom_lower,
|
57
|
+
rom_upper,
|
50
58
|
_to_float(dang_min, t),
|
51
59
|
_to_float(dang_max, t),
|
52
60
|
_to_float(delta_ang_min, t),
|
@@ -251,6 +259,8 @@ def _clip_to_pi(phi):
|
|
251
259
|
def _resolve_range_of_motion(
|
252
260
|
range_of_motion,
|
253
261
|
range_of_motion_method,
|
262
|
+
rom_lower: float,
|
263
|
+
rom_upper: float,
|
254
264
|
dang_min,
|
255
265
|
dang_max,
|
256
266
|
delta_ang_min,
|
@@ -265,44 +275,47 @@ def _resolve_range_of_motion(
|
|
265
275
|
def _next_phi(key, dt):
|
266
276
|
key, consume = random.split(key)
|
267
277
|
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
278
|
+
# legacy reasons, without range of motion the `sign` value, so going
|
279
|
+
# left or right is 50-50 for free joints and spherical joints
|
280
|
+
if not range_of_motion:
|
281
|
+
range_of_motion_method = "coinflip"
|
282
|
+
|
283
|
+
if range_of_motion_method == "coinflip":
|
284
|
+
probs = jnp.array([0.5, 0.5])
|
285
|
+
elif range_of_motion_method == "uniform":
|
286
|
+
p = 0.5 * (1 - prev_phi / jnp.pi)
|
287
|
+
probs = jnp.array([p, (1 - p)])
|
288
|
+
elif range_of_motion_method[:7] == "sigmoid":
|
289
|
+
scale = 1.5
|
290
|
+
provided_params = range_of_motion_method.split("-")
|
291
|
+
if len(provided_params) == 2:
|
292
|
+
scale = float(provided_params[-1])
|
293
|
+
hardcut = jnp.pi - 0.01
|
294
|
+
p = jnp.where(
|
295
|
+
prev_phi > hardcut,
|
296
|
+
0.0,
|
297
|
+
jnp.where(prev_phi < -hardcut, 1.0, jax.nn.sigmoid(-scale * prev_phi)),
|
298
|
+
)
|
299
|
+
probs = jnp.array([p, (1 - p)])
|
300
|
+
else:
|
301
|
+
raise NotImplementedError
|
290
302
|
|
291
|
-
|
292
|
-
|
293
|
-
|
303
|
+
sign = random.choice(consume, jnp.array([1.0, -1.0]), p=probs)
|
304
|
+
lower = prev_phi + sign * dang_min * dt
|
305
|
+
upper = prev_phi + sign * dang_max * dt
|
294
306
|
|
295
|
-
|
296
|
-
lower, upper =
|
307
|
+
if range_of_motion:
|
308
|
+
lower, upper = _clip_to_pi(lower), _clip_to_pi(upper)
|
297
309
|
|
298
|
-
|
299
|
-
|
310
|
+
# swap if lower > upper
|
311
|
+
lower, upper = jnp.sort(jnp.hstack((lower, upper)))
|
300
312
|
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
313
|
+
# clip bounds given by the angular velocity bounds to the rom bounds
|
314
|
+
lower = jnp.clip(lower, a_min=rom_lower)
|
315
|
+
upper = jnp.clip(upper, a_max=rom_upper)
|
316
|
+
|
317
|
+
key, consume = random.split(key)
|
318
|
+
return random.uniform(consume, minval=lower, maxval=upper)
|
306
319
|
|
307
320
|
def body_fn(val):
|
308
321
|
key_t, key_ang, _, _, i = val
|
@@ -60,6 +60,11 @@ class MotionConfig:
|
|
60
60
|
range_of_motion_hinge: bool = True
|
61
61
|
range_of_motion_hinge_method: str = "uniform"
|
62
62
|
|
63
|
+
# this value has nothing to do with `range_of_motion` flag
|
64
|
+
# this forces the value to stay within [ANG_0 - rom_halfsize, ANG_0 + rom_halfsize]
|
65
|
+
# used only by the `_draw_rxyz` function
|
66
|
+
rom_halfsize: float | TimeDependentFloat = 2 * jnp.pi
|
67
|
+
|
63
68
|
# initial value of joints
|
64
69
|
ang0_min: float = -jnp.pi
|
65
70
|
ang0_max: float = jnp.pi
|
@@ -377,7 +382,10 @@ def _is_feasible_config1(c: MotionConfig) -> bool:
|
|
377
382
|
c.pos0_max_p3d_z,
|
378
383
|
)
|
379
384
|
|
380
|
-
|
385
|
+
# test that the delta_ang_min is smaller than 2*rom_halfsize
|
386
|
+
cond6 = _to_float(c.delta_ang_min, 0.0) < 2 * _to_float(c.rom_halfsize, 0.0)
|
387
|
+
|
388
|
+
return cond1 and cond2 and cond3 and cond4 and cond5 and cond6
|
381
389
|
|
382
390
|
|
383
391
|
def _find_interval(t: jax.Array, boundaries: jax.Array):
|
@@ -610,6 +618,7 @@ def _draw_rxyz(
|
|
610
618
|
config.randomized_interpolation_angle,
|
611
619
|
config.range_of_motion_hinge if enable_range_of_motion else False,
|
612
620
|
config.range_of_motion_hinge_method,
|
621
|
+
config.rom_halfsize,
|
613
622
|
config.cdf_bins_min,
|
614
623
|
config.cdf_bins_max,
|
615
624
|
config.interpolation_method,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml
RENAMED
File without changes
|
{imt_ring-1.6.22 → imt_ring-1.6.23}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|