imt-ring 1.3.2__tar.gz → 1.3.4__tar.gz
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.
- {imt_ring-1.3.2 → imt_ring-1.3.4}/PKG-INFO +1 -1
- {imt_ring-1.3.2 → imt_ring-1.3.4}/pyproject.toml +1 -1
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/imt_ring.egg-info/PKG-INFO +1 -1
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/custom_joints/__init__.py +1 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/custom_joints/suntay.py +27 -7
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/base.py +10 -4
- {imt_ring-1.3.2 → imt_ring-1.3.4}/readme.md +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/setup.cfg +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/imt_ring.egg-info/SOURCES.txt +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/imt_ring.egg-info/dependency_links.txt +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/imt_ring.egg-info/requires.txt +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/imt_ring.egg-info/top_level.txt +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algebra.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/_random.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/dynamics.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/generator/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/generator/base.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/generator/batch.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/generator/pd_control.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/generator/randomize.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/generator/transforms.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/generator/types.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/jcalc.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/kinematics.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/algorithms/sensors.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/branched.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/inv_pendulum.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/spherical_stiff.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/symmetric.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_all_1.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_all_2.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_control.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_double_pendulum.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_free.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_kinematics.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_randomize_position.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_sensors.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/examples.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/test_examples.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/xml/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/xml/abstract.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/xml/from_xml.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/xml/test_from_xml.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/xml/test_to_xml.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/io/xml/to_xml.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/maths.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/base.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/callbacks.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/ml_utils.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/optimizer.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/ringnet.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/train.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/ml/training_loop.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/rendering/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/rendering/base_render.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/rendering/mujoco_render.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/rendering/vispy_render.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/rendering/vispy_visuals.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/sim2real/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/sim2real/sim2real.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/spatial.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/sys_composer/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/sys_composer/delete_sys.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/sys_composer/inject_sys.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/sys_composer/morph_sys.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/utils/__init__.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/utils/batchsize.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/utils/colab.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/utils/hdf5.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/utils/normalizer.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/utils/path.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/src/ring/utils/utils.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_algebra.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_base.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_custom_joints.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_dynamics.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_generator.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_jcalc.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_jit.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_kinematics.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_maths.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_ml_utils.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_motion_artifacts.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_pd_control.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_random.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_randomize.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_rcmg.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_render.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_sensors.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_sim2real.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_sys_composer.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_train.py +0 -0
- {imt_ring-1.3.2 → imt_ring-1.3.4}/tests/test_utils.py +0 -0
@@ -295,14 +295,15 @@ def register_suntay(sconfig: SuntayConfig, name: str = "suntay"):
|
|
295
295
|
|
296
296
|
def Polynomial_DrawnFnPair(
|
297
297
|
order: int = 2,
|
298
|
-
val: float = 2.0,
|
299
298
|
center: bool = False,
|
300
299
|
flexion_center: Optional[float] = None,
|
300
|
+
include_bias: bool = True,
|
301
301
|
) -> DrawnFnPairFactory:
|
302
|
-
assert
|
302
|
+
assert not (order == 0 and not include_bias)
|
303
303
|
|
304
304
|
# because 0-th order is also counted
|
305
305
|
order += 1
|
306
|
+
powers = jnp.arange(order) if include_bias else jnp.arange(1, order)
|
306
307
|
|
307
308
|
def factory(xs, mn, mx):
|
308
309
|
nonlocal flexion_center
|
@@ -311,7 +312,7 @@ def Polynomial_DrawnFnPair(
|
|
311
312
|
flexion_mx = jnp.max(xs)
|
312
313
|
|
313
314
|
def _apply_poly_factors(poly_factors, q):
|
314
|
-
return poly_factors @ jnp.power(q,
|
315
|
+
return poly_factors @ jnp.power(q, powers)
|
315
316
|
|
316
317
|
if flexion_center is None:
|
317
318
|
flexion_center = (flexion_mn + flexion_mx) / 2
|
@@ -319,16 +320,19 @@ def Polynomial_DrawnFnPair(
|
|
319
320
|
flexion_center = jnp.array(flexion_center)
|
320
321
|
|
321
322
|
def init(key):
|
322
|
-
c1, c2 = jax.random.split(key)
|
323
|
+
c1, c2, c3 = jax.random.split(key, 3)
|
323
324
|
poly_factors = jax.random.uniform(
|
324
|
-
c1, shape=(
|
325
|
+
c1, shape=(len(powers),), minval=-1.0, maxval=1.0
|
325
326
|
)
|
326
327
|
q0 = jax.random.uniform(c2, minval=flexion_mn, maxval=flexion_mx)
|
327
328
|
values = jax.vmap(_apply_poly_factors, in_axes=(None, 0))(
|
328
329
|
poly_factors, xs - q0
|
329
330
|
)
|
330
|
-
|
331
|
-
amin = jnp.min(values)
|
331
|
+
eps = 1e-6
|
332
|
+
amin, amax = jnp.min(values), jnp.max(values) + eps
|
333
|
+
delta = amax - amin
|
334
|
+
scale_delta = jnp.clip(jax.random.normal(c3) + 0.5, 1.0)
|
335
|
+
amax = amin + delta * scale_delta
|
332
336
|
return amin, amax, poly_factors, q0
|
333
337
|
|
334
338
|
def _apply(params, q):
|
@@ -350,6 +354,22 @@ def Polynomial_DrawnFnPair(
|
|
350
354
|
return factory
|
351
355
|
|
352
356
|
|
357
|
+
def ConstantValue_DrawnFnPair(value: float) -> DrawnFnPairFactory:
|
358
|
+
value = jnp.array(value)
|
359
|
+
|
360
|
+
def factory(xs, mn, mx):
|
361
|
+
|
362
|
+
def init(key):
|
363
|
+
return {}
|
364
|
+
|
365
|
+
def apply(params, q):
|
366
|
+
return value
|
367
|
+
|
368
|
+
return DrawnFnPair(init, apply)
|
369
|
+
|
370
|
+
return factory
|
371
|
+
|
372
|
+
|
353
373
|
def MLP_DrawnFnPair(
|
354
374
|
center: bool = False, flexion_center: Optional[float] = None
|
355
375
|
) -> DrawnFnPairFactory:
|
@@ -929,16 +929,22 @@ def _parse_system_calculate_inertia(sys: System):
|
|
929
929
|
def _scan_sys(sys: System, f: Callable, in_types: str, *args, reverse: bool = False):
|
930
930
|
assert len(args) == len(in_types)
|
931
931
|
for in_type, arg in zip(in_types, args):
|
932
|
-
|
932
|
+
|
933
933
|
if in_type == "l":
|
934
|
-
|
934
|
+
required_length = sys.num_links()
|
935
935
|
elif in_type == "q":
|
936
|
-
|
936
|
+
required_length = sys.q_size()
|
937
937
|
elif in_type == "d":
|
938
|
-
|
938
|
+
required_length = sys.qd_size()
|
939
939
|
else:
|
940
940
|
raise Exception("`in_types` must be one of `l` or `q` or `d`")
|
941
941
|
|
942
|
+
B = len(arg)
|
943
|
+
B_re = required_length
|
944
|
+
assert (
|
945
|
+
B == B_re
|
946
|
+
), f"arg={arg} has a length of B={B} which isn't the required length={B_re}"
|
947
|
+
|
942
948
|
order = range(sys.num_links())
|
943
949
|
q_idx, qd_idx = 0, 0
|
944
950
|
q_idxs, qd_idxs = {}, {}
|
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
|
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
|