imt-ring 1.2.2__tar.gz → 1.3.0__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 (110) hide show
  1. {imt_ring-1.2.2 → imt_ring-1.3.0}/PKG-INFO +1 -1
  2. {imt_ring-1.2.2 → imt_ring-1.3.0}/pyproject.toml +1 -1
  3. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/imt_ring.egg-info/PKG-INFO +1 -1
  4. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/jcalc.py +112 -0
  5. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/exclude/standard_sys.xml +40 -40
  6. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +40 -40
  7. imt_ring-1.3.0/src/ring/ml/__init__.py +61 -0
  8. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/ml/base.py +3 -3
  9. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/ml/callbacks.py +4 -0
  10. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/rendering/base_render.py +1 -1
  11. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_jcalc.py +5 -0
  12. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_randomize.py +28 -28
  13. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_sys_composer.py +7 -7
  14. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_train.py +30 -3
  15. imt_ring-1.2.2/src/ring/ml/__init__.py +0 -33
  16. {imt_ring-1.2.2 → imt_ring-1.3.0}/readme.md +0 -0
  17. {imt_ring-1.2.2 → imt_ring-1.3.0}/setup.cfg +0 -0
  18. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/imt_ring.egg-info/SOURCES.txt +0 -0
  19. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/imt_ring.egg-info/dependency_links.txt +0 -0
  20. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/imt_ring.egg-info/requires.txt +0 -0
  21. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/imt_ring.egg-info/top_level.txt +0 -0
  22. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/__init__.py +0 -0
  23. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algebra.py +0 -0
  24. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/__init__.py +0 -0
  25. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/_random.py +0 -0
  26. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/custom_joints/__init__.py +0 -0
  27. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
  28. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
  29. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/custom_joints/suntay.py +0 -0
  30. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/dynamics.py +0 -0
  31. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/generator/__init__.py +0 -0
  32. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/generator/base.py +0 -0
  33. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/generator/batch.py +0 -0
  34. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
  35. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/generator/pd_control.py +0 -0
  36. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/generator/randomize.py +0 -0
  37. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/generator/transforms.py +0 -0
  38. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/generator/types.py +0 -0
  39. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/kinematics.py +0 -0
  40. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/algorithms/sensors.py +0 -0
  41. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/base.py +0 -0
  42. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/__init__.py +0 -0
  43. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/branched.xml +0 -0
  44. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
  45. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/inv_pendulum.xml +0 -0
  46. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
  47. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/spherical_stiff.xml +0 -0
  48. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/symmetric.xml +0 -0
  49. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_all_1.xml +0 -0
  50. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_all_2.xml +0 -0
  51. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
  52. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_control.xml +0 -0
  53. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_double_pendulum.xml +0 -0
  54. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_free.xml +0 -0
  55. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_kinematics.xml +0 -0
  56. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
  57. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
  58. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_randomize_position.xml +0 -0
  59. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_sensors.xml +0 -0
  60. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
  61. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/examples.py +0 -0
  62. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/test_examples.py +0 -0
  63. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/xml/__init__.py +0 -0
  64. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/xml/abstract.py +0 -0
  65. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/xml/from_xml.py +0 -0
  66. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/xml/test_from_xml.py +0 -0
  67. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/xml/test_to_xml.py +0 -0
  68. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/io/xml/to_xml.py +0 -0
  69. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/maths.py +0 -0
  70. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/ml/ml_utils.py +0 -0
  71. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/ml/optimizer.py +0 -0
  72. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
  73. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/ml/ringnet.py +0 -0
  74. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/ml/train.py +0 -0
  75. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/ml/training_loop.py +0 -0
  76. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/rendering/__init__.py +0 -0
  77. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/rendering/mujoco_render.py +0 -0
  78. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/rendering/vispy_render.py +0 -0
  79. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/rendering/vispy_visuals.py +0 -0
  80. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/sim2real/__init__.py +0 -0
  81. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/sim2real/sim2real.py +0 -0
  82. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/spatial.py +0 -0
  83. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/sys_composer/__init__.py +0 -0
  84. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/sys_composer/delete_sys.py +0 -0
  85. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/sys_composer/inject_sys.py +0 -0
  86. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/sys_composer/morph_sys.py +0 -0
  87. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/utils/__init__.py +0 -0
  88. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/utils/batchsize.py +0 -0
  89. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/utils/colab.py +0 -0
  90. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/utils/hdf5.py +0 -0
  91. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/utils/normalizer.py +0 -0
  92. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/utils/path.py +0 -0
  93. {imt_ring-1.2.2 → imt_ring-1.3.0}/src/ring/utils/utils.py +0 -0
  94. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_algebra.py +0 -0
  95. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_base.py +0 -0
  96. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_custom_joints.py +0 -0
  97. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_dynamics.py +0 -0
  98. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_generator.py +0 -0
  99. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_jit.py +0 -0
  100. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_kinematics.py +0 -0
  101. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_maths.py +0 -0
  102. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_ml_utils.py +0 -0
  103. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_motion_artifacts.py +0 -0
  104. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_pd_control.py +0 -0
  105. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_random.py +0 -0
  106. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_rcmg.py +0 -0
  107. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_render.py +0 -0
  108. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_sensors.py +0 -0
  109. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_sim2real.py +0 -0
  110. {imt_ring-1.2.2 → imt_ring-1.3.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imt-ring
3
- Version: 1.2.2
3
+ Version: 1.3.0
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.2.2"
7
+ version = "1.3.0"
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.2.2
3
+ Version: 1.3.0
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
@@ -88,6 +88,118 @@ class MotionConfig:
88
88
  assert nomotion_config.is_feasible()
89
89
  return nomotion_config
90
90
 
91
+ @staticmethod
92
+ def from_register(name: str) -> "MotionConfig":
93
+ return _registered_motion_configs[name]
94
+
95
+
96
+ _registered_motion_configs = {
97
+ "hinUndHer": MotionConfig(
98
+ t_min=0.3,
99
+ t_max=1.5,
100
+ dang_max=3.0,
101
+ delta_ang_min=0.5,
102
+ pos_min=-1.5,
103
+ pos_max=1.5,
104
+ randomized_interpolation_angle=True,
105
+ cor=True,
106
+ ),
107
+ "langsam": MotionConfig(
108
+ t_min=0.2,
109
+ t_max=1.25,
110
+ dang_max=2.0,
111
+ randomized_interpolation_angle=True,
112
+ dang_max_free_spherical=2.0,
113
+ cdf_bins_min=1,
114
+ cdf_bins_max=3,
115
+ pos_min=-1.5,
116
+ pos_max=1.5,
117
+ cor=True,
118
+ ),
119
+ "standard": MotionConfig(
120
+ randomized_interpolation_angle=True,
121
+ cdf_bins_min=1,
122
+ cdf_bins_max=5,
123
+ cor=True,
124
+ ),
125
+ "expFast": MotionConfig(
126
+ t_min=0.4,
127
+ t_max=1.1,
128
+ dang_max=jnp.deg2rad(180),
129
+ delta_ang_min=jnp.deg2rad(60),
130
+ delta_ang_max=jnp.deg2rad(110),
131
+ pos_min=-1.5,
132
+ pos_max=1.5,
133
+ range_of_motion_hinge_method="sigmoid",
134
+ randomized_interpolation_angle=True,
135
+ cdf_bins_min=1,
136
+ cdf_bins_max=3,
137
+ cor=True,
138
+ ),
139
+ "expSlow": MotionConfig(
140
+ t_min=0.75,
141
+ t_max=3.0,
142
+ dang_min=0.1,
143
+ dang_max=1.0,
144
+ dang_min_free_spherical=0.1,
145
+ delta_ang_min=0.4,
146
+ dang_max_free_spherical=1.0,
147
+ delta_ang_max_free_spherical=1.0,
148
+ dpos_max=0.3,
149
+ cor_dpos_max=0.3,
150
+ range_of_motion_hinge_method="sigmoid",
151
+ randomized_interpolation_angle=True,
152
+ cdf_bins_min=1,
153
+ cdf_bins_max=5,
154
+ cor=True,
155
+ ),
156
+ "expFastNoSig": MotionConfig(
157
+ t_min=0.4,
158
+ t_max=1.1,
159
+ dang_max=jnp.deg2rad(180),
160
+ delta_ang_min=jnp.deg2rad(60),
161
+ delta_ang_max=jnp.deg2rad(110),
162
+ pos_min=-1.5,
163
+ pos_max=1.5,
164
+ randomized_interpolation_angle=True,
165
+ cdf_bins_min=1,
166
+ cdf_bins_max=3,
167
+ cor=True,
168
+ ),
169
+ "expSlowNoSig": MotionConfig(
170
+ t_min=0.75,
171
+ t_max=3.0,
172
+ dang_min=0.1,
173
+ dang_max=1.0,
174
+ dang_min_free_spherical=0.1,
175
+ delta_ang_min=0.4,
176
+ dang_max_free_spherical=1.0,
177
+ delta_ang_max_free_spherical=1.0,
178
+ dpos_max=0.3,
179
+ cor_dpos_max=0.3,
180
+ randomized_interpolation_angle=True,
181
+ cdf_bins_min=1,
182
+ cdf_bins_max=3,
183
+ cor=True,
184
+ ),
185
+ "verySlow": MotionConfig(
186
+ t_min=1.5,
187
+ t_max=5.0,
188
+ dang_min=jnp.deg2rad(1),
189
+ dang_max=jnp.deg2rad(30),
190
+ delta_ang_min=jnp.deg2rad(20),
191
+ dang_min_free_spherical=jnp.deg2rad(1),
192
+ dang_max_free_spherical=jnp.deg2rad(10),
193
+ delta_ang_min_free_spherical=jnp.deg2rad(5),
194
+ dpos_max=0.3,
195
+ cor_dpos_max=0.3,
196
+ randomized_interpolation_angle=True,
197
+ cdf_bins_min=1,
198
+ cdf_bins_max=3,
199
+ cor=True,
200
+ ),
201
+ }
202
+
91
203
 
92
204
  def _is_feasible_config1(c: MotionConfig) -> bool:
93
205
  t_min, t_max = c.t_min, _to_float(c.t_max, 0.0)
@@ -2,101 +2,101 @@
2
2
  <x_xy model="arm_1Seg">
3
3
  <options dt="0.01" gravity="0.0 0.0 9.81"/>
4
4
  <worldbody>
5
- <body joint="free" name="seg2_1Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
5
+ <body joint="free" name="seg3_1Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
6
6
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_blue" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
7
7
  <geom pos="0.05 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
8
8
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
9
- <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="1"/>
10
- <body joint="frozen" name="imu2_1Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
9
+ <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="1"/>
10
+ <body joint="frozen" name="imu3_1Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
11
11
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
12
- <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="1"/>
12
+ <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
13
13
  </body>
14
14
  </body>
15
- <body joint="free" name="seg2_2Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
15
+ <body joint="free" name="seg3_2Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
16
16
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_blue" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
17
17
  <geom pos="0.05 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
18
18
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
19
- <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="1"/>
20
- <body joint="frozen" name="imu2_2Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
19
+ <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="1"/>
20
+ <body joint="frozen" name="imu3_2Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
21
21
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
22
- <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="1"/>
22
+ <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
23
23
  </body>
24
- <body joint="ry" name="seg3_2Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0">
24
+ <body joint="ry" name="seg4_2Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0">
25
25
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
26
26
  <geom pos="0.1 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
27
27
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
28
- <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="2"/>
29
- <body joint="frozen" name="imu3_2Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
28
+ <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="2"/>
29
+ <body joint="frozen" name="imu4_2Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
30
30
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
31
- <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="2"/>
31
+ <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
32
32
  </body>
33
33
  </body>
34
34
  </body>
35
- <body joint="free" name="seg2_3Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
35
+ <body joint="free" name="seg3_3Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
36
36
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_blue" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
37
37
  <geom pos="0.05 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
38
38
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
39
- <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="1"/>
40
- <body joint="frozen" name="imu2_3Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
39
+ <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="1"/>
40
+ <body joint="frozen" name="imu3_3Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
41
41
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
42
- <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="1"/>
42
+ <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
43
43
  </body>
44
- <body joint="ry" name="seg3_3Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0">
44
+ <body joint="ry" name="seg4_3Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0">
45
45
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
46
46
  <geom pos="0.1 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
47
47
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
48
- <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="2"/>
49
- <body joint="frozen" name="imu3_3Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
48
+ <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="2"/>
49
+ <body joint="frozen" name="imu4_3Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
50
50
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
51
- <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="2"/>
51
+ <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
52
52
  </body>
53
- <body joint="rz" name="seg4_3Seg" pos="0.19999999 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0">
53
+ <body joint="rz" name="seg5_3Seg" pos="0.19999999 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0">
54
54
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
55
55
  <geom pos="0.03 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
56
56
  <geom pos="0.17 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
57
- <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="4"/>
58
- <body joint="frozen" name="imu4_3Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15000004 0.05 0.05">
57
+ <omc pos="0.0 0.0 -0.02" name="seg5" pos_marker="4"/>
58
+ <body joint="frozen" name="imu5_3Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15000004 0.05 0.05">
59
59
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
60
- <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="4"/>
60
+ <omc pos="0.1 0.0 0.015" name="seg5" pos_marker="4"/>
61
61
  </body>
62
62
  </body>
63
63
  </body>
64
64
  </body>
65
- <body joint="free" name="seg5_4Seg" pos="0.2 0.0 0.0" pos_min="0.15 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
65
+ <body joint="free" name="seg2_4Seg" pos="0.2 0.0 0.0" pos_min="0.15 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
66
66
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
67
67
  <geom pos="0.03 -0.05 0.0" mass="0.1" color="dustin_exp_white" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
68
68
  <geom pos="0.17 -0.05 0.0" mass="0.1" color="dustin_exp_white" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
69
- <omc pos="0.0 0.0 -0.02" name="seg5" pos_marker="2"/>
70
- <body joint="frozen" name="imu5_4Seg" pos="0.10000001 0.0 0.035" pos_min="0.049999997 -0.05 -0.05" pos_max="0.15000002 0.05 0.05">
69
+ <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="2"/>
70
+ <body joint="frozen" name="imu2_4Seg" pos="0.10000001 0.0 0.035" pos_min="0.049999997 -0.05 -0.05" pos_max="0.15000002 0.05 0.05">
71
71
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
72
- <omc pos="0.1 0.0 0.015" name="seg5" pos_marker="2"/>
72
+ <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="2"/>
73
73
  </body>
74
- <body joint="rx" name="seg2_4Seg" pos="0.2 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0">
74
+ <body joint="rx" name="seg3_4Seg" pos="0.2 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0">
75
75
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_blue" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
76
76
  <geom pos="0.05 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
77
77
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
78
- <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="1"/>
79
- <body joint="frozen" name="imu2_4Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
78
+ <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="1"/>
79
+ <body joint="frozen" name="imu3_4Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
80
80
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
81
- <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="1"/>
81
+ <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
82
82
  </body>
83
- <body joint="ry" name="seg3_4Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0">
83
+ <body joint="ry" name="seg4_4Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0">
84
84
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
85
85
  <geom pos="0.1 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
86
86
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
87
- <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="2"/>
88
- <body joint="frozen" name="imu3_4Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
87
+ <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="2"/>
88
+ <body joint="frozen" name="imu4_4Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
89
89
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
90
- <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="2"/>
90
+ <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
91
91
  </body>
92
- <body joint="rz" name="seg4_4Seg" pos="0.19999999 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0">
92
+ <body joint="rz" name="seg5_4Seg" pos="0.19999999 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0">
93
93
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
94
94
  <geom pos="0.03 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
95
95
  <geom pos="0.17 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
96
- <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="4"/>
97
- <body joint="frozen" name="imu4_4Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15000004 0.05 0.05">
96
+ <omc pos="0.0 0.0 -0.02" name="seg5" pos_marker="4"/>
97
+ <body joint="frozen" name="imu5_4Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15000004 0.05 0.05">
98
98
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
99
- <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="4"/>
99
+ <omc pos="0.1 0.0 0.015" name="seg5" pos_marker="4"/>
100
100
  </body>
101
101
  </body>
102
102
  </body>
@@ -2,101 +2,101 @@
2
2
  <x_xy model="arm_1Seg">
3
3
  <options dt="0.01" gravity="0.0 0.0 9.81"/>
4
4
  <worldbody>
5
- <body joint="free" name="seg2_1Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
5
+ <body joint="free" name="seg3_1Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
6
6
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_blue" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
7
7
  <geom pos="0.05 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
8
8
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
9
- <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="1"/>
10
- <body joint="frozen" name="imu2_1Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
9
+ <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="1"/>
10
+ <body joint="frozen" name="imu3_1Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
11
11
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
12
- <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="1"/>
12
+ <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
13
13
  </body>
14
14
  </body>
15
- <body joint="free" name="seg2_2Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
15
+ <body joint="free" name="seg3_2Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
16
16
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_blue" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
17
17
  <geom pos="0.05 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
18
18
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
19
- <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="1"/>
20
- <body joint="frozen" name="imu2_2Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
19
+ <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="1"/>
20
+ <body joint="frozen" name="imu3_2Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
21
21
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
22
- <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="1"/>
22
+ <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
23
23
  </body>
24
- <body joint="rr_imp" name="seg3_2Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0 3.0">
24
+ <body joint="rr_imp" name="seg4_2Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0 3.0">
25
25
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
26
26
  <geom pos="0.1 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
27
27
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
28
- <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="2"/>
29
- <body joint="frozen" name="imu3_2Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
28
+ <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="2"/>
29
+ <body joint="frozen" name="imu4_2Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
30
30
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
31
- <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="2"/>
31
+ <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
32
32
  </body>
33
33
  </body>
34
34
  </body>
35
- <body joint="free" name="seg2_3Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
35
+ <body joint="free" name="seg3_3Seg" pos="0.4 0.0 0.0" pos_min="0.2 -0.05 -0.05" pos_max="0.55 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
36
36
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_blue" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
37
37
  <geom pos="0.05 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
38
38
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
39
- <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="1"/>
40
- <body joint="frozen" name="imu2_3Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
39
+ <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="1"/>
40
+ <body joint="frozen" name="imu3_3Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
41
41
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
42
- <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="1"/>
42
+ <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
43
43
  </body>
44
- <body joint="rr_imp" name="seg3_3Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0 3.0">
44
+ <body joint="rr_imp" name="seg4_3Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0 3.0">
45
45
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
46
46
  <geom pos="0.1 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
47
47
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
48
- <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="2"/>
49
- <body joint="frozen" name="imu3_3Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
48
+ <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="2"/>
49
+ <body joint="frozen" name="imu4_3Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
50
50
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
51
- <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="2"/>
51
+ <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
52
52
  </body>
53
- <body joint="rr_imp" name="seg4_3Seg" pos="0.19999999 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0 3.0">
53
+ <body joint="rr_imp" name="seg5_3Seg" pos="0.19999999 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0 3.0">
54
54
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
55
55
  <geom pos="0.03 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
56
56
  <geom pos="0.17 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
57
- <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="4"/>
58
- <body joint="frozen" name="imu4_3Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15000004 0.05 0.05">
57
+ <omc pos="0.0 0.0 -0.02" name="seg5" pos_marker="4"/>
58
+ <body joint="frozen" name="imu5_3Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15000004 0.05 0.05">
59
59
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
60
- <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="4"/>
60
+ <omc pos="0.1 0.0 0.015" name="seg5" pos_marker="4"/>
61
61
  </body>
62
62
  </body>
63
63
  </body>
64
64
  </body>
65
- <body joint="free" name="seg5_4Seg" pos="0.2 0.0 0.0" pos_min="0.15 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
65
+ <body joint="free" name="seg2_4Seg" pos="0.2 0.0 0.0" pos_min="0.15 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="5.0 5.0 5.0 25.0 25.0 25.0">
66
66
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
67
67
  <geom pos="0.03 -0.05 0.0" mass="0.1" color="dustin_exp_white" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
68
68
  <geom pos="0.17 -0.05 0.0" mass="0.1" color="dustin_exp_white" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
69
- <omc pos="0.0 0.0 -0.02" name="seg5" pos_marker="2"/>
70
- <body joint="frozen" name="imu5_4Seg" pos="0.10000001 0.0 0.035" pos_min="0.049999997 -0.05 -0.05" pos_max="0.15000002 0.05 0.05">
69
+ <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="2"/>
70
+ <body joint="frozen" name="imu2_4Seg" pos="0.10000001 0.0 0.035" pos_min="0.049999997 -0.05 -0.05" pos_max="0.15000002 0.05 0.05">
71
71
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
72
- <omc pos="0.1 0.0 0.015" name="seg5" pos_marker="2"/>
72
+ <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="2"/>
73
73
  </body>
74
- <body joint="rr_imp" name="seg2_4Seg" pos="0.2 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0 3.0">
74
+ <body joint="rr_imp" name="seg3_4Seg" pos="0.2 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0 3.0">
75
75
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_blue" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
76
76
  <geom pos="0.05 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
77
77
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
78
- <omc pos="0.0 0.0 -0.02" name="seg2" pos_marker="1"/>
79
- <body joint="frozen" name="imu2_4Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
78
+ <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="1"/>
79
+ <body joint="frozen" name="imu3_4Seg" pos="0.099999994 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15 0.05 0.05">
80
80
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
81
- <omc pos="0.1 0.0 0.015" name="seg2" pos_marker="1"/>
81
+ <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
82
82
  </body>
83
- <body joint="rr_imp" name="seg3_4Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0 3.0">
83
+ <body joint="rr_imp" name="seg4_4Seg" pos="0.20000002 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35 0.05 0.05" damping="3.0 3.0">
84
84
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
85
85
  <geom pos="0.1 0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
86
86
  <geom pos="0.15 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
87
- <omc pos="0.0 0.0 -0.02" name="seg3" pos_marker="2"/>
88
- <body joint="frozen" name="imu3_4Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
87
+ <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="2"/>
88
+ <body joint="frozen" name="imu4_4Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.14999998 0.05 0.05">
89
89
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
90
- <omc pos="0.1 0.0 0.015" name="seg3" pos_marker="2"/>
90
+ <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
91
91
  </body>
92
- <body joint="rr_imp" name="seg4_4Seg" pos="0.19999999 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0 3.0">
92
+ <body joint="rr_imp" name="seg5_4Seg" pos="0.19999999 0.0 0.0" pos_min="0.0 -0.05 -0.05" pos_max="0.35000002 0.05 0.05" damping="3.0 3.0">
93
93
  <geom pos="0.1 0.0 0.0" mass="1.0" color="dustin_exp_white" edge_color="black" type="box" dim="0.2 0.05 0.05"/>
94
94
  <geom pos="0.03 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
95
95
  <geom pos="0.17 -0.05 0.0" mass="0.1" color="black" edge_color="black" type="box" dim="0.01 0.1 0.01"/>
96
- <omc pos="0.0 0.0 -0.02" name="seg4" pos_marker="4"/>
97
- <body joint="frozen" name="imu4_4Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15000004 0.05 0.05">
96
+ <omc pos="0.0 0.0 -0.02" name="seg5" pos_marker="4"/>
97
+ <body joint="frozen" name="imu5_4Seg" pos="0.100000024 0.0 0.035" pos_min="0.050000012 -0.05 -0.05" pos_max="0.15000004 0.05 0.05">
98
98
  <geom mass="0.1" color="dustin_exp_orange" edge_color="black" type="box" dim="0.05 0.03 0.02"/>
99
- <omc pos="0.1 0.0 0.015" name="seg4" pos_marker="4"/>
99
+ <omc pos="0.1 0.0 0.015" name="seg5" pos_marker="4"/>
100
100
  </body>
101
101
  </body>
102
102
  </body>
@@ -0,0 +1,61 @@
1
+ from . import base
2
+ from . import callbacks
3
+ from . import ml_utils
4
+ from . import optimizer
5
+ from . import ringnet
6
+ from . import train
7
+ from . import training_loop
8
+ from .base import AbstractFilter
9
+ from .ml_utils import on_cluster
10
+ from .ml_utils import unique_id
11
+ from .optimizer import make_optimizer
12
+ from .ringnet import RING
13
+ from .train import train_fn
14
+
15
+
16
+ def RING_ICML24(params=None, eval: bool = True, **kwargs):
17
+ """Create the RING network used in the icml24 paper.
18
+
19
+ X[..., :3] = acc
20
+ X[..., 3:6] = gyr
21
+ X[..., 6:9] = jointaxis
22
+ X[..., 9:] = dt
23
+ """
24
+ from pathlib import Path
25
+
26
+ if params is None:
27
+ params = Path(__file__).parent.joinpath("params/0x13e3518065c21cd8.pickle")
28
+
29
+ ringnet = RING(params=params, **kwargs) # noqa: F811
30
+ ringnet = base.ScaleX_FilterWrapper(ringnet)
31
+ if eval:
32
+ ringnet = base.LPF_FilterWrapper(ringnet, 10.0, samp_freq=None)
33
+ ringnet = base.GroundTruthHeading_FilterWrapper(ringnet)
34
+ return ringnet
35
+
36
+
37
+ def RNNO(
38
+ output_dim: int,
39
+ return_quats: bool = False,
40
+ params=None,
41
+ eval: bool = True,
42
+ **kwargs,
43
+ ):
44
+ assert "message_dim" not in kwargs
45
+ assert "link_output_normalize" not in kwargs
46
+ assert "link_output_dim" not in kwargs
47
+
48
+ ringnet = RING( # noqa: F811
49
+ params=params,
50
+ message_dim=0,
51
+ link_output_normalize=False,
52
+ link_output_dim=output_dim,
53
+ **kwargs,
54
+ )
55
+ ringnet = base.NoGraph_FilterWrapper(ringnet, quat_normalize=return_quats)
56
+ ringnet = base.ScaleX_FilterWrapper(ringnet)
57
+ if eval and return_quats:
58
+ ringnet = base.LPF_FilterWrapper(ringnet, 10.0, samp_freq=None)
59
+ if return_quats:
60
+ ringnet = base.GroundTruthHeading_FilterWrapper(ringnet)
61
+ return ringnet
@@ -34,9 +34,9 @@ class AbstractFilter(ABC):
34
34
  def _apply_batched(self, X, params, state, y, lam):
35
35
  pass
36
36
 
37
- @abstractmethod
38
37
  def init(self, bs, X, lam, seed: int):
39
- pass
38
+ params = state = None
39
+ return params, state
40
40
 
41
41
  def apply(self, X, params=None, state=None, y=None, lam=None):
42
42
  "X.shape = (B, T, N, F) or (T, N, F)"
@@ -286,7 +286,7 @@ class NoGraph_FilterWrapper(AbstractFilterWrapper):
286
286
  yhat = yhat.reshape((T, N, -1))
287
287
 
288
288
  if self._quat_normalize:
289
- assert yhat.shape[-1] == 4
289
+ assert yhat.shape[-1] == 4, f"yhat.shape={yhat.shape}"
290
290
  yhat = ring.maths.safe_normalize(yhat)
291
291
 
292
292
  return yhat, state
@@ -108,6 +108,10 @@ class EvalXyTrainingLoopCallback(training_loop.TrainingLoopCallback):
108
108
  if (i_episode % self.eval_every) == 0:
109
109
  point_estimates = self.eval_fn(params)
110
110
  self.last_metrices = {self.metric_identifier: point_estimates}
111
+
112
+ assert (
113
+ self.metric_identifier not in metrices
114
+ ), f"`{self.metric_identifier}` is already in `{metrices.keys()}`"
111
115
  metrices.update(self.last_metrices)
112
116
 
113
117
 
@@ -229,7 +229,7 @@ def _color_to_rgba(geom: base.Geometry) -> base.Geometry:
229
229
  def _xyz_to_three_capsules(xyz: base.XYZ) -> list[base.Geometry]:
230
230
  capsules = []
231
231
  length = xyz.size
232
- radius = length / 6
232
+ radius = length / 7
233
233
  colors = ["red", "green", "blue"]
234
234
  rot_axis = [1, 0, 2]
235
235
 
@@ -3,6 +3,7 @@ import jax
3
3
  import jax.numpy as jnp
4
4
  import numpy as np
5
5
  import pytest
6
+
6
7
  import ring
7
8
  from ring.algorithms.jcalc import _find_interval
8
9
 
@@ -59,3 +60,7 @@ def test_find_interval():
59
60
  assert _find_interval(1.5, jnp.array([0.0, 1.0, 2.0])) == 2
60
61
  assert _find_interval(0.5, jnp.array([0.0])) == 1
61
62
  assert _find_interval(-0.5, jnp.array([0.0])) == 0
63
+
64
+
65
+ def test_motion_config_register():
66
+ ring.MotionConfig.from_register("expSlow")
@@ -11,21 +11,21 @@ def _load_1Seg2Seg3Seg4Seg_system(
11
11
  ):
12
12
  """
13
13
  4Seg:
14
- Four anchors : ["seg5", "seg2", "seg3", "seg4"]
15
- Two anchors : ["seg5", "seg4"]
14
+ Four anchors : ["seg2", "seg3", "seg4", "seg5"]
15
+ Two anchors : ["seg2", "seg5"]
16
16
  3Seg:
17
- Three anchors: ["seg2", "seg3", "seg4"]
18
- Two anchors : ["seg2", "seg4"]
17
+ Three anchors: ["seg3", "seg4", "seg5"]
18
+ Two anchors : ["seg3", "seg5"]
19
19
  2Seg:
20
- Two anchors: ["seg2", "seg3"]
20
+ Two anchors: ["seg3", "seg4"]
21
21
  1Seg:
22
22
  Single anchor: Any of the five segments.
23
23
  """
24
24
  delete_4Seg = ["seg1"]
25
- delete_3Seg = ["seg5"]
26
- delete_2Seg = ["seg5", "seg4"]
25
+ delete_3Seg = ["seg2"]
26
+ delete_2Seg = ["seg2", "seg5"]
27
27
  delete_1Seg = list(
28
- set(["seg1", "seg5", "seg2", "seg3", "seg4"]) - set([anchor_1Seg])
28
+ set(["seg1", "seg2", "seg3", "seg4", "seg5"]) - set([anchor_1Seg])
29
29
  )
30
30
 
31
31
  assert not (
@@ -90,12 +90,12 @@ def _new_load_standard_system():
90
90
  _load_sys(
91
91
  1,
92
92
  )
93
- .morph_system(new_anchor="seg5")
93
+ .morph_system(new_anchor="seg2")
94
94
  .delete_system("seg1")
95
95
  )
96
- sys_3Seg = sys_4Seg.morph_system(new_anchor="seg2").delete_system("seg5")
97
- sys_2Seg = sys_3Seg.delete_system("seg4")
98
- sys_1Seg = sys_2Seg.delete_system("seg3")
96
+ sys_3Seg = sys_4Seg.morph_system(new_anchor="seg3").delete_system("seg2")
97
+ sys_2Seg = sys_3Seg.delete_system("seg5")
98
+ sys_1Seg = sys_2Seg.delete_system("seg4")
99
99
 
100
100
  def add_suffix(sys, suffix):
101
101
  return sys.change_model_name(suffix=suffix).add_prefix_suffix(suffix=suffix)
@@ -115,10 +115,10 @@ def test_new_load_standard_system():
115
115
  assert ring.utils.sys_compare(
116
116
  sys,
117
117
  _load_1Seg2Seg3Seg4Seg_system(
118
+ "seg3",
119
+ "seg3",
120
+ "seg3",
118
121
  "seg2",
119
- "seg2",
120
- "seg2",
121
- "seg5",
122
122
  ),
123
123
  )
124
124
 
@@ -126,24 +126,24 @@ def test_new_load_standard_system():
126
126
 
127
127
 
128
128
  def SKIP_test_randomize_anchors_long():
129
- anchors_2Seg = ["seg2", "seg3"]
130
- anchors_3Seg = ["seg2", "seg4"]
131
- anchors_4Seg = ["seg5", "seg2", "seg3", "seg4"]
129
+ anchors_2Seg = ["seg3", "seg4"]
130
+ anchors_3Seg = ["seg3", "seg5"]
131
+ anchors_4Seg = ["seg2", "seg3", "seg4", "seg5"]
132
132
 
133
133
  sys_data = []
134
134
  for a2S in anchors_2Seg:
135
135
  for a3S in anchors_3Seg:
136
136
  for a4S in anchors_4Seg:
137
- sys_data.append(_load_1Seg2Seg3Seg4Seg_system("seg2", a2S, a3S, a4S))
137
+ sys_data.append(_load_1Seg2Seg3Seg4Seg_system("seg3", a2S, a3S, a4S))
138
138
  anchors = [
139
- "seg2_2Seg",
140
139
  "seg3_2Seg",
141
- "seg2_3Seg",
142
- "seg4_3Seg",
143
- "seg5_4Seg",
140
+ "seg4_2Seg",
141
+ "seg3_3Seg",
142
+ "seg5_3Seg",
144
143
  "seg2_4Seg",
145
144
  "seg3_4Seg",
146
145
  "seg4_4Seg",
146
+ "seg5_4Seg",
147
147
  ]
148
148
  sys_data_new = ring.algorithms.generator.randomize_anchors(
149
149
  ring.io.load_example("exclude/standard_sys"), anchors
@@ -154,18 +154,18 @@ def SKIP_test_randomize_anchors_long():
154
154
 
155
155
 
156
156
  def test_randomize_anchors():
157
- anchors_2Seg = ["seg2", "seg3"]
158
- anchors_3Seg = ["seg2", "seg4"]
157
+ anchors_2Seg = ["seg3", "seg4"]
158
+ anchors_3Seg = ["seg3", "seg5"]
159
159
 
160
160
  sys_data = []
161
161
  for a2S in anchors_2Seg:
162
162
  for a3S in anchors_3Seg:
163
163
  sys_data.append(_load_1Seg2Seg3Seg4Seg_system(None, a2S, a3S, None))
164
164
  anchors = [
165
- "seg2_2Seg",
166
165
  "seg3_2Seg",
167
- "seg2_3Seg",
168
- "seg4_3Seg",
166
+ "seg4_2Seg",
167
+ "seg3_3Seg",
168
+ "seg5_3Seg",
169
169
  ]
170
170
  sys_data_new = ring.algorithms.generator.randomize_anchors(sys_data[0], anchors)
171
171
 
@@ -77,9 +77,9 @@ def test_delete_subsystem_cut_twice_versus_cut_once():
77
77
  delete_subsystem(sys, ["seg1", "seg2"]), delete_subsystem(sys, ["seg2"])
78
78
  )
79
79
 
80
- sys = _compat._load_sys(1).morph_system(new_anchor="seg3")
80
+ sys = _compat._load_sys(1).morph_system(new_anchor="seg4")
81
81
  assert sys_compare(
82
- delete_subsystem(sys, ["seg5", "seg2"]), delete_subsystem(sys, ["seg2"])
82
+ delete_subsystem(sys, ["seg2", "seg3"]), delete_subsystem(sys, ["seg3"])
83
83
  )
84
84
 
85
85
 
@@ -208,17 +208,17 @@ def test_morph_new_anchor():
208
208
  morph_system(
209
209
  sys,
210
210
  new_parents=[
211
- "seg5",
211
+ "seg2",
212
212
  "seg1",
213
+ "seg3",
213
214
  "seg2",
214
- "seg5",
215
215
  -1,
216
- "seg2",
217
- "seg2",
218
216
  "seg3",
219
217
  "seg3",
220
218
  "seg4",
219
+ "seg4",
220
+ "seg5",
221
221
  ],
222
222
  ),
223
- morph_system(sys, new_anchor="seg2"),
223
+ morph_system(sys, new_anchor="seg3"),
224
224
  )
@@ -1,12 +1,15 @@
1
+ from pathlib import Path
2
+
1
3
  import numpy as np
2
4
  import optax
5
+ import tree_utils
6
+
3
7
  import ring
4
8
  from ring import ml
5
9
  from ring import utils
6
- import tree_utils
7
10
 
8
11
 
9
- def test_ring():
12
+ def _load_gen_lam():
10
13
  example = "test_three_seg_seg2"
11
14
  sys = ring.io.load_example(example)
12
15
  sys_noimu = sys.make_sys_noimu()[0]
@@ -19,15 +22,39 @@ def test_ring():
19
22
  use_link_number_in_Xy=1,
20
23
  ).to_lazy_gen()
21
24
  gen = ring.algorithms.GeneratorTrafoExpandFlatten(gen)
25
+ lam = sys_noimu.link_parents
26
+ return gen, lam
27
+
28
+
29
+ def test_rnno():
30
+ gen, lam = _load_gen_lam()
31
+
32
+ N = len(lam)
33
+ ml.train_fn(
34
+ gen,
35
+ 5,
36
+ ml.RNNO(N * 4, return_quats=True, eval=False, hidden_state_dim=20),
37
+ )
38
+
39
+
40
+ def test_ring():
41
+ gen, lam = _load_gen_lam()
22
42
 
23
43
  ml.train_fn(
24
44
  gen,
25
45
  5,
26
- ml.RING(hidden_state_dim=20, message_dim=10, lam=sys_noimu.link_parents),
46
+ ml.RING(hidden_state_dim=20, message_dim=10, lam=lam),
27
47
  )
28
48
 
29
49
 
50
+ def _remove_file_if_exists(path: str) -> None:
51
+ Path(path).expanduser().unlink(missing_ok=True)
52
+
53
+
30
54
  def test_checkpointing():
55
+ _remove_file_if_exists("~/params/test_checkpointing_nopause.pickle")
56
+ _remove_file_if_exists("~/params/test_checkpointing_pause.pickle")
57
+
31
58
  optimizer = optax.adam(0.1)
32
59
 
33
60
  ring.setup(unique_id="test_checkpointing_nopause")
@@ -1,33 +0,0 @@
1
- from . import base
2
- from . import callbacks
3
- from . import ml_utils
4
- from . import optimizer
5
- from . import ringnet
6
- from . import train
7
- from . import training_loop
8
- from .base import AbstractFilter
9
- from .ml_utils import on_cluster
10
- from .ml_utils import unique_id
11
- from .optimizer import make_optimizer
12
- from .ringnet import RING
13
- from .train import train_fn
14
-
15
-
16
- def RING_ICML24(params=None, **kwargs):
17
- """Create the RING network used in the icml24 paper.
18
-
19
- X[..., :3] = acc
20
- X[..., 3:6] = gyr
21
- X[..., 6:9] = jointaxis
22
- X[..., 9:] = dt
23
- """
24
- from pathlib import Path
25
-
26
- if params is None:
27
- params = Path(__file__).parent.joinpath("params/0x13e3518065c21cd8.pickle")
28
-
29
- ringnet = RING(params=params, **kwargs) # noqa: F811
30
- ringnet = base.ScaleX_FilterWrapper(ringnet)
31
- ringnet = base.LPF_FilterWrapper(ringnet, 10.0, samp_freq=None)
32
- ringnet = base.GroundTruthHeading_FilterWrapper(ringnet)
33
- return ringnet
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