imt-ring 1.6.16__tar.gz → 1.6.18__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.16 → imt_ring-1.6.18}/PKG-INFO +1 -1
  2. {imt_ring-1.6.16 → imt_ring-1.6.18}/pyproject.toml +1 -1
  3. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/imt_ring.egg-info/PKG-INFO +1 -1
  4. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/imt_ring.egg-info/SOURCES.txt +2 -0
  5. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/__init__.py +4 -0
  6. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/custom_joints/__init__.py +1 -0
  7. imt_ring-1.6.18/src/ring/algorithms/custom_joints/rsaddle_joint.py +40 -0
  8. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/generator/finalize_fns.py +1 -0
  9. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/jcalc.py +29 -0
  10. imt_ring-1.6.18/src/ring/utils/dataloader_torch.py +62 -0
  11. {imt_ring-1.6.16 → imt_ring-1.6.18}/readme.md +0 -0
  12. {imt_ring-1.6.16 → imt_ring-1.6.18}/setup.cfg +0 -0
  13. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/imt_ring.egg-info/dependency_links.txt +0 -0
  14. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/imt_ring.egg-info/requires.txt +0 -0
  15. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/imt_ring.egg-info/top_level.txt +0 -0
  16. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algebra.py +0 -0
  17. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/__init__.py +0 -0
  18. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/_random.py +0 -0
  19. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
  20. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
  21. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/custom_joints/suntay.py +0 -0
  22. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/dynamics.py +0 -0
  23. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/generator/__init__.py +0 -0
  24. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/generator/base.py +0 -0
  25. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/generator/batch.py +0 -0
  26. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
  27. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/generator/pd_control.py +0 -0
  28. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/generator/setup_fns.py +0 -0
  29. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/generator/types.py +0 -0
  30. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/kinematics.py +0 -0
  31. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/algorithms/sensors.py +0 -0
  32. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/base.py +0 -0
  33. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/__init__.py +0 -0
  34. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/branched.xml +0 -0
  35. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
  36. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
  37. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
  38. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/inv_pendulum.xml +0 -0
  39. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
  40. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/spherical_stiff.xml +0 -0
  41. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/symmetric.xml +0 -0
  42. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_all_1.xml +0 -0
  43. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_all_2.xml +0 -0
  44. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
  45. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_control.xml +0 -0
  46. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_double_pendulum.xml +0 -0
  47. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_free.xml +0 -0
  48. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_kinematics.xml +0 -0
  49. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
  50. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
  51. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_randomize_position.xml +0 -0
  52. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_sensors.xml +0 -0
  53. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
  54. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/examples.py +0 -0
  55. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/test_examples.py +0 -0
  56. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/xml/__init__.py +0 -0
  57. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/xml/abstract.py +0 -0
  58. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/xml/from_xml.py +0 -0
  59. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/xml/test_from_xml.py +0 -0
  60. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/xml/test_to_xml.py +0 -0
  61. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/io/xml/to_xml.py +0 -0
  62. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/maths.py +0 -0
  63. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/__init__.py +0 -0
  64. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/base.py +0 -0
  65. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/callbacks.py +0 -0
  66. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/ml_utils.py +0 -0
  67. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/optimizer.py +0 -0
  68. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
  69. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/params/0x1d76628065a71e0f.pickle +0 -0
  70. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/ringnet.py +0 -0
  71. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/rnno_v1.py +0 -0
  72. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/train.py +0 -0
  73. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/ml/training_loop.py +0 -0
  74. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/rendering/__init__.py +0 -0
  75. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/rendering/base_render.py +0 -0
  76. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/rendering/mujoco_render.py +0 -0
  77. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/rendering/vispy_render.py +0 -0
  78. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/rendering/vispy_visuals.py +0 -0
  79. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/sim2real/__init__.py +0 -0
  80. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/sim2real/sim2real.py +0 -0
  81. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/spatial.py +0 -0
  82. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/sys_composer/__init__.py +0 -0
  83. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/sys_composer/delete_sys.py +0 -0
  84. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/sys_composer/inject_sys.py +0 -0
  85. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/sys_composer/morph_sys.py +0 -0
  86. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/__init__.py +0 -0
  87. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/backend.py +0 -0
  88. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/batchsize.py +0 -0
  89. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/colab.py +0 -0
  90. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/dataloader.py +0 -0
  91. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/hdf5.py +0 -0
  92. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/normalizer.py +0 -0
  93. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/path.py +0 -0
  94. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/randomize_sys.py +0 -0
  95. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/register_gym_envs/__init__.py +0 -0
  96. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/register_gym_envs/saddle.py +0 -0
  97. {imt_ring-1.6.16 → imt_ring-1.6.18}/src/ring/utils/utils.py +0 -0
  98. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_algebra.py +0 -0
  99. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_base.py +0 -0
  100. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_custom_joints.py +0 -0
  101. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_dynamics.py +0 -0
  102. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_generator.py +0 -0
  103. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_jcalc.py +0 -0
  104. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_jit.py +0 -0
  105. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_kinematics.py +0 -0
  106. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_maths.py +0 -0
  107. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_ml_utils.py +0 -0
  108. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_motion_artifacts.py +0 -0
  109. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_pd_control.py +0 -0
  110. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_quickstart_example.py +0 -0
  111. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_random.py +0 -0
  112. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_randomize.py +0 -0
  113. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_rcmg.py +0 -0
  114. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_render.py +0 -0
  115. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_sensors.py +0 -0
  116. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_sim2real.py +0 -0
  117. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_sys_composer.py +0 -0
  118. {imt_ring-1.6.16 → imt_ring-1.6.18}/tests/test_train.py +0 -0
  119. {imt_ring-1.6.16 → imt_ring-1.6.18}/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.16
3
+ Version: 1.6.18
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.16"
7
+ version = "1.6.18"
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.16
3
+ Version: 1.6.18
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
@@ -20,6 +20,7 @@ src/ring/algorithms/sensors.py
20
20
  src/ring/algorithms/custom_joints/__init__.py
21
21
  src/ring/algorithms/custom_joints/rr_imp_joint.py
22
22
  src/ring/algorithms/custom_joints/rr_joint.py
23
+ src/ring/algorithms/custom_joints/rsaddle_joint.py
23
24
  src/ring/algorithms/custom_joints/suntay.py
24
25
  src/ring/algorithms/generator/__init__.py
25
26
  src/ring/algorithms/generator/base.py
@@ -85,6 +86,7 @@ src/ring/utils/backend.py
85
86
  src/ring/utils/batchsize.py
86
87
  src/ring/utils/colab.py
87
88
  src/ring/utils/dataloader.py
89
+ src/ring/utils/dataloader_torch.py
88
90
  src/ring/utils/hdf5.py
89
91
  src/ring/utils/normalizer.py
90
92
  src/ring/utils/path.py
@@ -121,6 +121,7 @@ _UNIQUE_ID = None
121
121
  def setup(
122
122
  rr_joint_kwargs: None | dict = dict(),
123
123
  rr_imp_joint_kwargs: None | dict = dict(),
124
+ rsaddle_joint_kwargs: None | dict = dict(),
124
125
  suntay_joint_kwargs: None | dict = None,
125
126
  train_timing_start: None | float = None,
126
127
  unique_id: None | str = None,
@@ -138,6 +139,9 @@ def setup(
138
139
  if rr_imp_joint_kwargs is not None:
139
140
  custom_joints.register_rr_imp_joint(**rr_imp_joint_kwargs)
140
141
 
142
+ if rsaddle_joint_kwargs is not None:
143
+ custom_joints.register_rsaddle_joint(**rsaddle_joint_kwargs)
144
+
141
145
  if suntay_joint_kwargs is not None:
142
146
  custom_joints.register_suntay(**suntay_joint_kwargs)
143
147
 
@@ -1,5 +1,6 @@
1
1
  from .rr_imp_joint import register_rr_imp_joint
2
2
  from .rr_joint import register_rr_joint
3
+ from .rsaddle_joint import register_rsaddle_joint
3
4
  from .suntay import ConstantValue_DrawnFnPair
4
5
  from .suntay import GP_DrawFnPair
5
6
  from .suntay import MLP_DrawnFnPair
@@ -0,0 +1,40 @@
1
+ import jax.numpy as jnp
2
+
3
+ import ring
4
+ from ring import maths
5
+ from ring.algorithms.jcalc import _draw_saddle
6
+ from ring.algorithms.jcalc import _p_control_term_rxyz
7
+ from ring.algorithms.jcalc import _qd_from_q_cartesian
8
+
9
+
10
+ def register_rsaddle_joint():
11
+ def _transform(q, params):
12
+ axes = params["joint_axes"]
13
+ rot1 = maths.quat_rot_axis(axes[0], q[0])
14
+ rot2 = maths.quat_rot_axis(axes[1], q[1])
15
+ rot = maths.quat_mul(rot2, rot1)
16
+ return ring.Transform.create(rot=rot)
17
+
18
+ def _motion_fn_gen(i: int):
19
+ def _motion_fn(params):
20
+ axis = params["joint_axes"][i]
21
+ return ring.base.Motion.create(ang=axis)
22
+
23
+ return _motion_fn
24
+
25
+ joint_model = ring.JointModel(
26
+ _transform,
27
+ motion=[_motion_fn_gen(i) for i in range(2)],
28
+ rcmg_draw_fn=_draw_saddle,
29
+ p_control_term=_p_control_term_rxyz,
30
+ qd_from_q=_qd_from_q_cartesian,
31
+ init_joint_params=_draw_random_joint_axes,
32
+ )
33
+
34
+ ring.register_new_joint_type("rsaddle", joint_model, 2, overwrite=True)
35
+
36
+
37
+ def _draw_random_joint_axes(key):
38
+ return dict(
39
+ joint_axes=maths.rotate(jnp.array([1.0, 0, 0]), maths.quat_random(key, (2,)))
40
+ )
@@ -160,6 +160,7 @@ _P_gains = {
160
160
  "spherical": jnp.array(3 * [P_rot]),
161
161
  "p3d": jnp.array(3 * [P_pos]),
162
162
  "saddle": jnp.array([P_rot, P_rot]),
163
+ "rsaddle": jnp.array([P_rot, P_rot]),
163
164
  "frozen": jnp.array([]),
164
165
  "suntay": jnp.array([P_rot]),
165
166
  }
@@ -1,3 +1,4 @@
1
+ from collections import defaultdict
1
2
  from dataclasses import asdict
2
3
  from dataclasses import dataclass
3
4
  from dataclasses import field
@@ -87,11 +88,39 @@ class MotionConfig:
87
88
  assert nomotion_config.is_feasible()
88
89
  return nomotion_config
89
90
 
91
+ @staticmethod
92
+ def overwrite_for_joint_type(joint_type: str, **changes) -> None:
93
+ """Changes values of the `MotionConfig` used by the draw_fn for only a specific
94
+ joint.
95
+ """
96
+ previous_changes = _overwrite_for_joint_type_changes[joint_type]
97
+ for change in changes:
98
+ assert change not in previous_changes, f"For jointtype={joint_type} you "
99
+ f"previously changed the value={change}. You can't change it again, this "
100
+ "is not supported."
101
+ previous_changes.update(changes)
102
+
103
+ jm = get_joint_model(joint_type)
104
+
105
+ def draw_fn(config, *args):
106
+ return jm.rcmg_draw_fn(replace(config, **changes), *args)
107
+
108
+ register_new_joint_type(
109
+ joint_type,
110
+ replace(jm, rcmg_draw_fn=draw_fn),
111
+ base.Q_WIDTHS[joint_type],
112
+ base.QD_WIDTHS[joint_type],
113
+ overwrite=True,
114
+ )
115
+
90
116
  @staticmethod
91
117
  def from_register(name: str) -> "MotionConfig":
92
118
  return _registered_motion_configs[name]
93
119
 
94
120
 
121
+ _overwrite_for_joint_type_changes: dict[str, dict] = defaultdict(lambda: dict())
122
+
123
+
95
124
  _registered_motion_configs = {
96
125
  "hinUndHer": MotionConfig(
97
126
  t_min=0.3,
@@ -0,0 +1,62 @@
1
+ import os
2
+
3
+ import jax
4
+ import torch
5
+ from torch.utils.data import DataLoader
6
+ from torch.utils.data import Dataset
7
+ from tree_utils import PyTree
8
+
9
+ from ring.utils import parse_path
10
+ from ring.utils import pickle_load
11
+
12
+
13
+ class FolderOfPickleFilesDataset(Dataset):
14
+ def __init__(self, path, transform=None):
15
+ self.files = self.listdir(path)
16
+ self.transform = transform
17
+ self.N = len(self.files)
18
+
19
+ def __len__(self):
20
+ return self.N
21
+
22
+ def __getitem__(self, idx: int):
23
+ element = pickle_load(self.files[idx])
24
+ if self.transform is not None:
25
+ element = self.transform(element)
26
+ return element
27
+
28
+ @staticmethod
29
+ def listdir(path: str) -> list:
30
+ return [parse_path(path, file) for file in os.listdir(path)]
31
+
32
+
33
+ def dataset_to_generator(
34
+ dataset: Dataset,
35
+ batch_size: int,
36
+ shuffle=True,
37
+ seed: int = 1,
38
+ **kwargs,
39
+ ):
40
+ torch.manual_seed(seed)
41
+
42
+ dl = DataLoader(
43
+ dataset,
44
+ batch_size=batch_size,
45
+ shuffle=shuffle,
46
+ multiprocessing_context="spawn" if kwargs.get("num_workers", 0) > 0 else None,
47
+ **kwargs,
48
+ )
49
+ dl_iter = iter(dl)
50
+
51
+ def to_numpy(tree: PyTree[torch.Tensor]):
52
+ return jax.tree_map(lambda tensor: tensor.numpy(), tree)
53
+
54
+ def generator(_):
55
+ nonlocal dl, dl_iter
56
+ try:
57
+ return to_numpy(next(dl_iter))
58
+ except StopIteration:
59
+ dl_iter = iter(dl)
60
+ return to_numpy(next(dl_iter))
61
+
62
+ return generator
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