imt-ring 1.6.22__tar.gz → 1.6.24__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. {imt_ring-1.6.22 → imt_ring-1.6.24}/PKG-INFO +1 -1
  2. {imt_ring-1.6.22 → imt_ring-1.6.24}/pyproject.toml +1 -1
  3. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/imt_ring.egg-info/PKG-INFO +1 -1
  4. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/_random.py +47 -34
  5. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/jcalc.py +10 -1
  6. {imt_ring-1.6.22 → imt_ring-1.6.24}/readme.md +0 -0
  7. {imt_ring-1.6.22 → imt_ring-1.6.24}/setup.cfg +0 -0
  8. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/imt_ring.egg-info/SOURCES.txt +0 -0
  9. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/imt_ring.egg-info/dependency_links.txt +0 -0
  10. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/imt_ring.egg-info/requires.txt +0 -0
  11. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/imt_ring.egg-info/top_level.txt +0 -0
  12. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/__init__.py +0 -0
  13. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algebra.py +0 -0
  14. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/__init__.py +0 -0
  15. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/custom_joints/__init__.py +0 -0
  16. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
  17. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
  18. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/custom_joints/rsaddle_joint.py +0 -0
  19. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/custom_joints/suntay.py +0 -0
  20. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/dynamics.py +0 -0
  21. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/generator/__init__.py +0 -0
  22. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/generator/base.py +0 -0
  23. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/generator/batch.py +0 -0
  24. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/generator/finalize_fns.py +0 -0
  25. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
  26. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/generator/pd_control.py +0 -0
  27. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/generator/setup_fns.py +0 -0
  28. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/generator/types.py +0 -0
  29. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/kinematics.py +0 -0
  30. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/algorithms/sensors.py +0 -0
  31. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/base.py +0 -0
  32. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/__init__.py +0 -0
  33. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/branched.xml +0 -0
  34. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
  35. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
  36. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
  37. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/inv_pendulum.xml +0 -0
  38. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
  39. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/spherical_stiff.xml +0 -0
  40. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/symmetric.xml +0 -0
  41. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_all_1.xml +0 -0
  42. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_all_2.xml +0 -0
  43. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
  44. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_control.xml +0 -0
  45. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_double_pendulum.xml +0 -0
  46. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_free.xml +0 -0
  47. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_kinematics.xml +0 -0
  48. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
  49. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
  50. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_randomize_position.xml +0 -0
  51. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_sensors.xml +0 -0
  52. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
  53. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/examples.py +0 -0
  54. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/test_examples.py +0 -0
  55. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/xml/__init__.py +0 -0
  56. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/xml/abstract.py +0 -0
  57. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/xml/from_xml.py +0 -0
  58. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/xml/test_from_xml.py +0 -0
  59. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/xml/test_to_xml.py +0 -0
  60. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/io/xml/to_xml.py +0 -0
  61. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/maths.py +0 -0
  62. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/__init__.py +0 -0
  63. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/base.py +0 -0
  64. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/callbacks.py +0 -0
  65. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/ml_utils.py +0 -0
  66. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/optimizer.py +0 -0
  67. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
  68. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/params/0x1d76628065a71e0f.pickle +0 -0
  69. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/ringnet.py +0 -0
  70. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/rnno_v1.py +0 -0
  71. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/train.py +0 -0
  72. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/ml/training_loop.py +0 -0
  73. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/rendering/__init__.py +0 -0
  74. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/rendering/base_render.py +0 -0
  75. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/rendering/mujoco_render.py +0 -0
  76. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/rendering/vispy_render.py +0 -0
  77. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/rendering/vispy_visuals.py +0 -0
  78. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/sim2real/__init__.py +0 -0
  79. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/sim2real/sim2real.py +0 -0
  80. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/spatial.py +0 -0
  81. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/sys_composer/__init__.py +0 -0
  82. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/sys_composer/delete_sys.py +0 -0
  83. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/sys_composer/inject_sys.py +0 -0
  84. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/sys_composer/morph_sys.py +0 -0
  85. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/__init__.py +0 -0
  86. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/backend.py +0 -0
  87. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/batchsize.py +0 -0
  88. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/colab.py +0 -0
  89. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/dataloader.py +0 -0
  90. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/dataloader_torch.py +0 -0
  91. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/hdf5.py +0 -0
  92. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/normalizer.py +0 -0
  93. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/path.py +0 -0
  94. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/randomize_sys.py +0 -0
  95. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/register_gym_envs/__init__.py +0 -0
  96. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/register_gym_envs/saddle.py +0 -0
  97. {imt_ring-1.6.22 → imt_ring-1.6.24}/src/ring/utils/utils.py +0 -0
  98. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_algebra.py +0 -0
  99. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_base.py +0 -0
  100. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_custom_joints.py +0 -0
  101. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_dynamics.py +0 -0
  102. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_generator.py +0 -0
  103. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_jcalc.py +0 -0
  104. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_jit.py +0 -0
  105. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_kinematics.py +0 -0
  106. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_maths.py +0 -0
  107. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_ml_utils.py +0 -0
  108. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_motion_artifacts.py +0 -0
  109. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_pd_control.py +0 -0
  110. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_quickstart_example.py +0 -0
  111. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_random.py +0 -0
  112. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_randomize.py +0 -0
  113. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_rcmg.py +0 -0
  114. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_render.py +0 -0
  115. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_sensors.py +0 -0
  116. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_sim2real.py +0 -0
  117. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_sys_composer.py +0 -0
  118. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_train.py +0 -0
  119. {imt_ring-1.6.22 → imt_ring-1.6.24}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imt-ring
3
- Version: 1.6.22
3
+ Version: 1.6.24
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.6.22"
7
+ version = "1.6.24"
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.6.22
3
+ Version: 1.6.24
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
@@ -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,
@@ -262,47 +272,50 @@ def _resolve_range_of_motion(
262
272
  key_ang,
263
273
  max_iter,
264
274
  ):
275
+ # legacy reasons, without range of motion the `sign` value, so going
276
+ # left or right is 50-50 for free joints and spherical joints
277
+ if not range_of_motion:
278
+ range_of_motion_method = "coinflip"
279
+
265
280
  def _next_phi(key, dt):
266
281
  key, consume = random.split(key)
267
282
 
268
- if range_of_motion:
269
- if range_of_motion_method == "coinflip":
270
- probs = jnp.array([0.5, 0.5])
271
- elif range_of_motion_method == "uniform":
272
- p = 0.5 * (1 - prev_phi / jnp.pi)
273
- probs = jnp.array([p, (1 - p)])
274
- elif range_of_motion_method[:7] == "sigmoid":
275
- scale = 1.5
276
- provided_params = range_of_motion_method.split("-")
277
- if len(provided_params) == 2:
278
- scale = float(provided_params[-1])
279
- hardcut = jnp.pi - 0.01
280
- p = jnp.where(
281
- prev_phi > hardcut,
282
- 0.0,
283
- jnp.where(
284
- prev_phi < -hardcut, 1.0, jax.nn.sigmoid(-scale * prev_phi)
285
- ),
286
- )
287
- probs = jnp.array([p, (1 - p)])
288
- else:
289
- raise NotImplementedError
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
- sign = random.choice(consume, jnp.array([1.0, -1.0]), p=probs)
292
- lower = _clip_to_pi(prev_phi + sign * dang_min * dt)
293
- upper = _clip_to_pi(prev_phi + sign * dang_max * dt)
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
- # swap if lower > upper
296
- lower, upper = jnp.sort(jnp.hstack((lower, upper)))
307
+ if range_of_motion:
308
+ lower, upper = _clip_to_pi(lower), _clip_to_pi(upper)
297
309
 
298
- key, consume = random.split(key)
299
- return random.uniform(consume, minval=lower, maxval=upper)
310
+ # swap if lower > upper
311
+ lower, upper = jnp.sort(jnp.hstack((lower, upper)))
300
312
 
301
- else:
302
- dphi = random.uniform(consume, minval=dang_min, maxval=dang_max) * dt
303
- key, consume = random.split(key)
304
- sign = random.choice(consume, jnp.array([1.0, -1.0]))
305
- return prev_phi + sign * dphi
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
- return cond1 and cond2 and cond3 and cond4 and cond5
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