imt-ring 1.6.1__tar.gz → 1.6.3__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. {imt_ring-1.6.1 → imt_ring-1.6.3}/PKG-INFO +1 -1
  2. {imt_ring-1.6.1 → imt_ring-1.6.3}/pyproject.toml +1 -1
  3. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/imt_ring.egg-info/PKG-INFO +1 -1
  4. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/generator/base.py +3 -0
  5. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/generator/finalize_fns.py +3 -2
  6. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/sensors.py +16 -4
  7. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/maths.py +1 -1
  8. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/rendering/mujoco_render.py +4 -1
  9. {imt_ring-1.6.1 → imt_ring-1.6.3}/readme.md +0 -0
  10. {imt_ring-1.6.1 → imt_ring-1.6.3}/setup.cfg +0 -0
  11. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/imt_ring.egg-info/SOURCES.txt +0 -0
  12. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/imt_ring.egg-info/dependency_links.txt +0 -0
  13. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/imt_ring.egg-info/requires.txt +0 -0
  14. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/imt_ring.egg-info/top_level.txt +0 -0
  15. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/__init__.py +0 -0
  16. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algebra.py +0 -0
  17. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/__init__.py +0 -0
  18. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/_random.py +0 -0
  19. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/custom_joints/__init__.py +0 -0
  20. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
  21. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
  22. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/custom_joints/suntay.py +0 -0
  23. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/dynamics.py +0 -0
  24. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/generator/__init__.py +0 -0
  25. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/generator/batch.py +0 -0
  26. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
  27. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/generator/pd_control.py +0 -0
  28. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/generator/setup_fns.py +0 -0
  29. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/generator/types.py +0 -0
  30. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/jcalc.py +0 -0
  31. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/algorithms/kinematics.py +0 -0
  32. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/base.py +0 -0
  33. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/__init__.py +0 -0
  34. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/branched.xml +0 -0
  35. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
  36. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
  37. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
  38. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/inv_pendulum.xml +0 -0
  39. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
  40. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/spherical_stiff.xml +0 -0
  41. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/symmetric.xml +0 -0
  42. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_all_1.xml +0 -0
  43. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_all_2.xml +0 -0
  44. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
  45. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_control.xml +0 -0
  46. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_double_pendulum.xml +0 -0
  47. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_free.xml +0 -0
  48. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_kinematics.xml +0 -0
  49. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
  50. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
  51. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_randomize_position.xml +0 -0
  52. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_sensors.xml +0 -0
  53. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
  54. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/examples.py +0 -0
  55. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/test_examples.py +0 -0
  56. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/xml/__init__.py +0 -0
  57. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/xml/abstract.py +0 -0
  58. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/xml/from_xml.py +0 -0
  59. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/xml/test_from_xml.py +0 -0
  60. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/xml/test_to_xml.py +0 -0
  61. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/io/xml/to_xml.py +0 -0
  62. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/__init__.py +0 -0
  63. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/base.py +0 -0
  64. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/callbacks.py +0 -0
  65. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/ml_utils.py +0 -0
  66. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/optimizer.py +0 -0
  67. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
  68. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/params/0x1d76628065a71e0f.pickle +0 -0
  69. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/ringnet.py +0 -0
  70. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/rnno_v1.py +0 -0
  71. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/train.py +0 -0
  72. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/ml/training_loop.py +0 -0
  73. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/rendering/__init__.py +0 -0
  74. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/rendering/base_render.py +0 -0
  75. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/rendering/vispy_render.py +0 -0
  76. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/rendering/vispy_visuals.py +0 -0
  77. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/sim2real/__init__.py +0 -0
  78. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/sim2real/sim2real.py +0 -0
  79. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/spatial.py +0 -0
  80. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/sys_composer/__init__.py +0 -0
  81. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/sys_composer/delete_sys.py +0 -0
  82. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/sys_composer/inject_sys.py +0 -0
  83. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/sys_composer/morph_sys.py +0 -0
  84. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/__init__.py +0 -0
  85. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/backend.py +0 -0
  86. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/batchsize.py +0 -0
  87. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/colab.py +0 -0
  88. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/hdf5.py +0 -0
  89. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/normalizer.py +0 -0
  90. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/path.py +0 -0
  91. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/randomize_sys.py +0 -0
  92. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/register_gym_envs/__init__.py +0 -0
  93. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/register_gym_envs/saddle.py +0 -0
  94. {imt_ring-1.6.1 → imt_ring-1.6.3}/src/ring/utils/utils.py +0 -0
  95. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_algebra.py +0 -0
  96. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_base.py +0 -0
  97. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_custom_joints.py +0 -0
  98. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_dynamics.py +0 -0
  99. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_generator.py +0 -0
  100. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_jcalc.py +0 -0
  101. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_jit.py +0 -0
  102. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_kinematics.py +0 -0
  103. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_maths.py +0 -0
  104. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_ml_utils.py +0 -0
  105. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_motion_artifacts.py +0 -0
  106. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_pd_control.py +0 -0
  107. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_quickstart_example.py +0 -0
  108. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_random.py +0 -0
  109. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_randomize.py +0 -0
  110. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_rcmg.py +0 -0
  111. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_render.py +0 -0
  112. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_sensors.py +0 -0
  113. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_sim2real.py +0 -0
  114. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_sys_composer.py +0 -0
  115. {imt_ring-1.6.1 → imt_ring-1.6.3}/tests/test_train.py +0 -0
  116. {imt_ring-1.6.1 → imt_ring-1.6.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.6.1
3
+ Version: 1.6.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.6.1"
7
+ version = "1.6.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.6.1
3
+ Version: 1.6.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
@@ -30,6 +30,7 @@ class RCMG:
30
30
  add_X_jointaxes_kwargs: dict = dict(),
31
31
  add_y_relpose: bool = False,
32
32
  add_y_rootincl: bool = False,
33
+ add_y_rootincl_kwargs: dict = dict(),
33
34
  sys_ml: Optional[base.System] = None,
34
35
  randomize_positions: bool = False,
35
36
  randomize_motion_artifacts: bool = False,
@@ -67,6 +68,7 @@ class RCMG:
67
68
  add_X_jointaxes_kwargs=add_X_jointaxes_kwargs,
68
69
  add_y_relpose=add_y_relpose,
69
70
  add_y_rootincl=add_y_rootincl,
71
+ add_y_rootincl_kwargs=add_y_rootincl_kwargs,
70
72
  sys_ml=sys_ml,
71
73
  randomize_positions=randomize_positions,
72
74
  randomize_motion_artifacts=randomize_motion_artifacts,
@@ -232,6 +234,7 @@ def _build_mconfig_batched_generator(
232
234
  add_X_jointaxes_kwargs: dict,
233
235
  add_y_relpose: bool,
234
236
  add_y_rootincl: bool,
237
+ add_y_rootincl_kwargs: dict,
235
238
  sys_ml: base.System,
236
239
  randomize_positions: bool,
237
240
  randomize_motion_artifacts: bool,
@@ -77,12 +77,13 @@ class RelPose:
77
77
 
78
78
 
79
79
  class RootIncl:
80
- def __init__(self, sys: base.System):
80
+ def __init__(self, sys: base.System, **kwargs):
81
81
  self.sys = sys
82
+ self.kwargs = kwargs
82
83
 
83
84
  def __call__(self, Xy, extras):
84
85
  (X, y), (key, q, x, sys_x) = Xy, extras
85
- y_root_incl = sensors.root_incl(self.sys, x, sys_x)
86
+ y_root_incl = sensors.root_incl(self.sys, x, sys_x, **self.kwargs)
86
87
  y = utils.dict_union(y, y_root_incl)
87
88
  return (X, y), (key, q, x, sys_x)
88
89
 
@@ -330,7 +330,10 @@ def rel_pose(
330
330
 
331
331
 
332
332
  def root_incl(
333
- sys: base.System, x: base.Transform, sys_x: base.System
333
+ sys: base.System,
334
+ x: base.Transform,
335
+ sys_x: base.System,
336
+ child_to_parent: bool = False,
334
337
  ) -> dict[str, jax.Array]:
335
338
  # (time, nlinks, 4) -> (nlinks, time, 4)
336
339
  rots = x.rot.transpose((1, 0, 2))
@@ -341,7 +344,10 @@ def root_incl(
341
344
  def f(_, __, name: str, parent: int):
342
345
  if parent != -1:
343
346
  return
344
- y[name] = maths.quat_project(rots[l_map[name]], jnp.array([0.0, 0, 1]))[1]
347
+ q_i = maths.quat_project(rots[l_map[name]], jnp.array([0.0, 0, 1]))[1]
348
+ if child_to_parent:
349
+ q_i = maths.quat_inv(q_i)
350
+ y[name] = q_i
345
351
 
346
352
  sys.scan(f, "ll", sys.link_names, sys.link_parents)
347
353
 
@@ -349,7 +355,10 @@ def root_incl(
349
355
 
350
356
 
351
357
  def root_full(
352
- sys: base.System, x: base.Transform, sys_x: base.System
358
+ sys: base.System,
359
+ x: base.Transform,
360
+ sys_x: base.System,
361
+ child_to_parent: bool = False,
353
362
  ) -> dict[str, jax.Array]:
354
363
  # (time, nlinks, 4) -> (nlinks, time, 4)
355
364
  rots = x.rot.transpose((1, 0, 2))
@@ -360,7 +369,10 @@ def root_full(
360
369
  def f(_, __, name: str, parent: int):
361
370
  if parent != -1:
362
371
  return
363
- y[name] = rots[l_map[name]]
372
+ q_i = rots[l_map[name]]
373
+ if child_to_parent:
374
+ q_i = maths.quat_inv(q_i)
375
+ y[name] = q_i
364
376
 
365
377
  sys.scan(f, "ll", sys.link_names, sys.link_parents)
366
378
 
@@ -119,7 +119,7 @@ def quat_inv(q: jnp.ndarray) -> jnp.ndarray:
119
119
 
120
120
  @partial(jnp.vectorize, signature="(3),(4)->(3)")
121
121
  def rotate(vector: jnp.ndarray, quat: jnp.ndarray):
122
- """Rotates a vector `vector` by a *unit* quaternion `quat`."""
122
+ """Rotates a vector `vector` by a *unit* quaternion `quat`. q x vec x q^*"""
123
123
  qvec = jnp.array([0, *vector])
124
124
  return rotate_quat(qvec, quat)[1:4]
125
125
 
@@ -157,13 +157,16 @@ def _array_to_str(arr: Sequence[float]) -> str:
157
157
  return "".join(["{:.4f} ".format(np.round(value, 4)) for value in arr])[:-1]
158
158
 
159
159
 
160
+ _default_lights = {-1: '<light pos="0 0 4" dir="0 0 -1"/>'}
161
+
162
+
160
163
  class MujocoScene:
161
164
  def __init__(
162
165
  self,
163
166
  height: int = 240,
164
167
  width: int = 320,
165
168
  add_cameras: dict[int, str | Sequence[str]] = {},
166
- add_lights: dict[int, str | Sequence[str]] = {},
169
+ add_lights: dict[int, str | Sequence[str]] = _default_lights,
167
170
  show_stars: bool = True,
168
171
  show_floor: bool = True,
169
172
  debug: 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