imt-ring 1.3.1__tar.gz → 1.3.3__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.
Files changed (109) hide show
  1. {imt_ring-1.3.1 → imt_ring-1.3.3}/PKG-INFO +1 -1
  2. {imt_ring-1.3.1 → imt_ring-1.3.3}/pyproject.toml +1 -1
  3. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/imt_ring.egg-info/PKG-INFO +1 -1
  4. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/custom_joints/__init__.py +2 -0
  5. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/custom_joints/suntay.py +73 -0
  6. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/base.py +10 -4
  7. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/__init__.py +2 -1
  8. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/optimizer.py +2 -2
  9. {imt_ring-1.3.1 → imt_ring-1.3.3}/readme.md +0 -0
  10. {imt_ring-1.3.1 → imt_ring-1.3.3}/setup.cfg +0 -0
  11. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/imt_ring.egg-info/SOURCES.txt +0 -0
  12. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/imt_ring.egg-info/dependency_links.txt +0 -0
  13. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/imt_ring.egg-info/requires.txt +0 -0
  14. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/imt_ring.egg-info/top_level.txt +0 -0
  15. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/__init__.py +0 -0
  16. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algebra.py +0 -0
  17. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/__init__.py +0 -0
  18. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/_random.py +0 -0
  19. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
  20. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
  21. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/dynamics.py +0 -0
  22. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/generator/__init__.py +0 -0
  23. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/generator/base.py +0 -0
  24. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/generator/batch.py +0 -0
  25. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
  26. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/generator/pd_control.py +0 -0
  27. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/generator/randomize.py +0 -0
  28. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/generator/transforms.py +0 -0
  29. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/generator/types.py +0 -0
  30. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/jcalc.py +0 -0
  31. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/kinematics.py +0 -0
  32. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/algorithms/sensors.py +0 -0
  33. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/__init__.py +0 -0
  34. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/branched.xml +0 -0
  35. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
  36. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
  37. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
  38. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/inv_pendulum.xml +0 -0
  39. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
  40. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/spherical_stiff.xml +0 -0
  41. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/symmetric.xml +0 -0
  42. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_all_1.xml +0 -0
  43. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_all_2.xml +0 -0
  44. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
  45. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_control.xml +0 -0
  46. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_double_pendulum.xml +0 -0
  47. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_free.xml +0 -0
  48. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_kinematics.xml +0 -0
  49. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
  50. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
  51. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_randomize_position.xml +0 -0
  52. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_sensors.xml +0 -0
  53. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
  54. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/examples.py +0 -0
  55. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/test_examples.py +0 -0
  56. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/xml/__init__.py +0 -0
  57. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/xml/abstract.py +0 -0
  58. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/xml/from_xml.py +0 -0
  59. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/xml/test_from_xml.py +0 -0
  60. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/xml/test_to_xml.py +0 -0
  61. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/io/xml/to_xml.py +0 -0
  62. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/maths.py +0 -0
  63. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/base.py +0 -0
  64. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/callbacks.py +0 -0
  65. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/ml_utils.py +0 -0
  66. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
  67. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/ringnet.py +0 -0
  68. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/train.py +0 -0
  69. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/ml/training_loop.py +0 -0
  70. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/rendering/__init__.py +0 -0
  71. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/rendering/base_render.py +0 -0
  72. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/rendering/mujoco_render.py +0 -0
  73. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/rendering/vispy_render.py +0 -0
  74. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/rendering/vispy_visuals.py +0 -0
  75. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/sim2real/__init__.py +0 -0
  76. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/sim2real/sim2real.py +0 -0
  77. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/spatial.py +0 -0
  78. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/sys_composer/__init__.py +0 -0
  79. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/sys_composer/delete_sys.py +0 -0
  80. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/sys_composer/inject_sys.py +0 -0
  81. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/sys_composer/morph_sys.py +0 -0
  82. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/utils/__init__.py +0 -0
  83. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/utils/batchsize.py +0 -0
  84. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/utils/colab.py +0 -0
  85. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/utils/hdf5.py +0 -0
  86. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/utils/normalizer.py +0 -0
  87. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/utils/path.py +0 -0
  88. {imt_ring-1.3.1 → imt_ring-1.3.3}/src/ring/utils/utils.py +0 -0
  89. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_algebra.py +0 -0
  90. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_base.py +0 -0
  91. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_custom_joints.py +0 -0
  92. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_dynamics.py +0 -0
  93. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_generator.py +0 -0
  94. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_jcalc.py +0 -0
  95. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_jit.py +0 -0
  96. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_kinematics.py +0 -0
  97. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_maths.py +0 -0
  98. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_ml_utils.py +0 -0
  99. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_motion_artifacts.py +0 -0
  100. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_pd_control.py +0 -0
  101. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_random.py +0 -0
  102. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_randomize.py +0 -0
  103. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_rcmg.py +0 -0
  104. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_render.py +0 -0
  105. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_sensors.py +0 -0
  106. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_sim2real.py +0 -0
  107. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_sys_composer.py +0 -0
  108. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_train.py +0 -0
  109. {imt_ring-1.3.1 → imt_ring-1.3.3}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imt-ring
3
- Version: 1.3.1
3
+ Version: 1.3.3
4
4
  Summary: RING: Recurrent Inertial Graph-based Estimator
5
5
  Author-email: Simon Bachhuber <simon.bachhuber@fau.de>
6
6
  Project-URL: Homepage, https://github.com/SimiPixel/ring
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "imt-ring"
7
- version = "1.3.1"
7
+ version = "1.3.3"
8
8
  authors = [
9
9
  { name="Simon Bachhuber", email="simon.bachhuber@fau.de" },
10
10
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imt-ring
3
- Version: 1.3.1
3
+ Version: 1.3.3
4
4
  Summary: RING: Recurrent Inertial Graph-based Estimator
5
5
  Author-email: Simon Bachhuber <simon.bachhuber@fau.de>
6
6
  Project-URL: Homepage, https://github.com/SimiPixel/ring
@@ -1,6 +1,8 @@
1
1
  from .rr_imp_joint import register_rr_imp_joint
2
2
  from .rr_joint import register_rr_joint
3
+ from .suntay import ConstantValue_DrawnFnPair
3
4
  from .suntay import GP_DrawFnPair
4
5
  from .suntay import MLP_DrawnFnPair
6
+ from .suntay import Polynomial_DrawnFnPair
5
7
  from .suntay import register_suntay
6
8
  from .suntay import SuntayConfig
@@ -293,6 +293,79 @@ def register_suntay(sconfig: SuntayConfig, name: str = "suntay"):
293
293
  ring.register_new_joint_type(name, joint_model, 1, overwrite=True)
294
294
 
295
295
 
296
+ def Polynomial_DrawnFnPair(
297
+ order: int = 2,
298
+ val: float = 2.0,
299
+ center: bool = False,
300
+ flexion_center: Optional[float] = None,
301
+ ) -> DrawnFnPairFactory:
302
+ assert val >= 0.0
303
+
304
+ # because 0-th order is also counted
305
+ order += 1
306
+
307
+ def factory(xs, mn, mx):
308
+ nonlocal flexion_center
309
+
310
+ flexion_mn = jnp.min(xs)
311
+ flexion_mx = jnp.max(xs)
312
+
313
+ def _apply_poly_factors(poly_factors, q):
314
+ return poly_factors @ jnp.power(q, jnp.arange(order))
315
+
316
+ if flexion_center is None:
317
+ flexion_center = (flexion_mn + flexion_mx) / 2
318
+ else:
319
+ flexion_center = jnp.array(flexion_center)
320
+
321
+ def init(key):
322
+ c1, c2 = jax.random.split(key)
323
+ poly_factors = jax.random.uniform(
324
+ c1, shape=(order,), minval=-val, maxval=val
325
+ )
326
+ q0 = jax.random.uniform(c2, minval=flexion_mn, maxval=flexion_mx)
327
+ values = jax.vmap(_apply_poly_factors, in_axes=(None, 0))(
328
+ poly_factors, xs - q0
329
+ )
330
+ eps = 1e-6
331
+ amin, amax = jnp.min(values), jnp.max(values) + eps
332
+ return amin, amax, poly_factors, q0
333
+
334
+ def _apply(params, q):
335
+ amin, amax, poly_factors, q0 = params
336
+ q = q - q0
337
+ value = _apply_poly_factors(poly_factors, q)
338
+ return restrict(value, mn, mx, amin, amax)
339
+
340
+ if center:
341
+
342
+ def apply(params, q):
343
+ return _apply(params, q) - _apply(params, flexion_center)
344
+
345
+ else:
346
+ apply = _apply
347
+
348
+ return DrawnFnPair(init, apply)
349
+
350
+ return factory
351
+
352
+
353
+ def ConstantValue_DrawnFnPair(value: float) -> DrawnFnPairFactory:
354
+ value = jnp.array(value)
355
+
356
+ def factory(xs, mn, mx):
357
+
358
+ def init(key):
359
+ return {}
360
+
361
+ def apply(params, q):
362
+ return value
363
+
364
+ return DrawnFnPair(init, apply)
365
+
366
+ return factory
367
+
368
+
296
369
  def MLP_DrawnFnPair(
297
370
  center: bool = False, flexion_center: Optional[float] = None
298
371
  ) -> 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
- B = len(arg)
932
+
933
933
  if in_type == "l":
934
- assert B == sys.num_links()
934
+ required_length = sys.num_links()
935
935
  elif in_type == "q":
936
- assert B == sys.q_size()
936
+ required_length = sys.q_size()
937
937
  elif in_type == "d":
938
- assert B == sys.qd_size()
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 = {}, {}
@@ -41,6 +41,7 @@ def RNNO(
41
41
  return_quats: bool = False,
42
42
  params=None,
43
43
  eval: bool = True,
44
+ samp_freq: float | None = None,
44
45
  **kwargs,
45
46
  ):
46
47
  assert "message_dim" not in kwargs
@@ -57,7 +58,7 @@ def RNNO(
57
58
  ringnet = base.NoGraph_FilterWrapper(ringnet, quat_normalize=return_quats)
58
59
  ringnet = base.ScaleX_FilterWrapper(ringnet)
59
60
  if eval and return_quats:
60
- ringnet = base.LPF_FilterWrapper(ringnet, _lpf_cutoff_freq, samp_freq=None)
61
+ ringnet = base.LPF_FilterWrapper(ringnet, _lpf_cutoff_freq, samp_freq=samp_freq)
61
62
  if return_quats:
62
63
  ringnet = base.GroundTruthHeading_FilterWrapper(ringnet)
63
64
  return ringnet
@@ -14,10 +14,10 @@ from optax._src.transform import AddNoiseState
14
14
  def make_optimizer(
15
15
  lr: float,
16
16
  n_episodes: int,
17
- n_steps_per_episode: int,
17
+ n_steps_per_episode: int = 6,
18
18
  adap_clip: Optional[float] = 0.1,
19
19
  glob_clip: Optional[float] = 0.2,
20
- skip_large_update_max_normsq: float = 5.0,
20
+ skip_large_update_max_normsq: float = 100.0,
21
21
  skip_large_update_warmup: int = 300,
22
22
  inner_opt=optax.lamb,
23
23
  cos_decay_twice: bool = False,
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