imt-ring 1.2.1__py3-none-any.whl → 1.3.0__py3-none-any.whl
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.
- {imt_ring-1.2.1.dist-info → imt_ring-1.3.0.dist-info}/METADATA +1 -1
- {imt_ring-1.2.1.dist-info → imt_ring-1.3.0.dist-info}/RECORD +14 -14
- ring/algorithms/custom_joints/suntay.py +17 -1
- ring/algorithms/generator/motion_artifacts.py +27 -7
- ring/algorithms/generator/transforms.py +1 -0
- ring/algorithms/jcalc.py +112 -0
- ring/io/examples/exclude/standard_sys.xml +40 -40
- ring/io/examples/exclude/standard_sys_rr_imp.xml +40 -40
- ring/ml/__init__.py +30 -2
- ring/ml/base.py +3 -3
- ring/ml/callbacks.py +5 -1
- ring/rendering/base_render.py +1 -1
- {imt_ring-1.2.1.dist-info → imt_ring-1.3.0.dist-info}/WHEEL +0 -0
- {imt_ring-1.2.1.dist-info → imt_ring-1.3.0.dist-info}/top_level.txt +0 -0
@@ -6,20 +6,20 @@ ring/spatial.py,sha256=nmZ-UhRanhyM34bez8uCS4wMwaKqLkuEbgKGP5XNH60,2351
|
|
6
6
|
ring/algorithms/__init__.py,sha256=t3YXcgqMJxadUjFiILVD0HlQRPLdrQyc8aKiB36w0vE,1701
|
7
7
|
ring/algorithms/_random.py,sha256=6EG0GHYe6tCq0qUt4Jes8W1EaqqaLa0sSZhnwBbEjCE,13340
|
8
8
|
ring/algorithms/dynamics.py,sha256=nqq5I0RYSbHNlGiLMlohz08IfL9Njsrid4upDnwkGbI,10629
|
9
|
-
ring/algorithms/jcalc.py,sha256=
|
9
|
+
ring/algorithms/jcalc.py,sha256=oqSiwz3Be1VfIpmJXEFTNM_9_o3tyuTtyZt2aqttyN4,28213
|
10
10
|
ring/algorithms/kinematics.py,sha256=DOboHI517Vx0pRJUFZtZPmK_qFaiKiQe-37B-M0aC-c,7422
|
11
11
|
ring/algorithms/sensors.py,sha256=Y3Wo9qj3BWKoIHB0V04QwyD-Z5m4BrAjfBX8Pn6y9Lg,18005
|
12
12
|
ring/algorithms/custom_joints/__init__.py,sha256=33WBnaBJMtq3vVcpMm7zmyeMrLY9PyV_8-wk5oSF65g,227
|
13
13
|
ring/algorithms/custom_joints/rr_imp_joint.py,sha256=a3JT0w7pB94kZ95eBR8ZO853eSeyjFoiXmhYlaXoHDE,2392
|
14
14
|
ring/algorithms/custom_joints/rr_joint.py,sha256=jnRtjtOCALMaq2_0bcu2d7qgfQ6etXpoh43MioRaDmY,1000
|
15
|
-
ring/algorithms/custom_joints/suntay.py,sha256=
|
15
|
+
ring/algorithms/custom_joints/suntay.py,sha256=d0Z54tIXiepMixE40W5H8JKxrT5U6VskPm2L2kKnQPw,13680
|
16
16
|
ring/algorithms/generator/__init__.py,sha256=p4ucl0zQtp5NwNoXIRjmTzGGRu2WOAWFfNmYRPwQles,912
|
17
17
|
ring/algorithms/generator/base.py,sha256=QDmzMAgtaK5M9WDl39qjXYfBa99d83vCPWEkYYmsplk,14952
|
18
18
|
ring/algorithms/generator/batch.py,sha256=MZurZmQDH1vncoNbCspVNGNlfP0R87J6_HC7MMIqQ6A,8478
|
19
|
-
ring/algorithms/generator/motion_artifacts.py,sha256
|
19
|
+
ring/algorithms/generator/motion_artifacts.py,sha256=aKdkZU5OF4_aKyL4Yo-ftZRwrDCve1LuuREGAUlTqtI,8551
|
20
20
|
ring/algorithms/generator/pd_control.py,sha256=3pOaYig26vmp8gippDfy2KNJRZO3kr0rGd_PBIuEROM,5759
|
21
21
|
ring/algorithms/generator/randomize.py,sha256=G_vBIo0OwQkXL2u0djwbaoaeb02C4LQCTNNloOYIU2M,3699
|
22
|
-
ring/algorithms/generator/transforms.py,sha256=
|
22
|
+
ring/algorithms/generator/transforms.py,sha256=nvNDvM20tEw9Zd0ra0TxA25uf01L40Y2UKvtQmOrlGo,12782
|
23
23
|
ring/algorithms/generator/types.py,sha256=CAhvDK5qiHnrGtkCVccB07doiz_D6lHJ35B7sW0pyZA,1110
|
24
24
|
ring/io/__init__.py,sha256=1gEJdyDCbldbbm8QeZbLmhzSKmaQ-UqTmQgu4DBH2Z4,328
|
25
25
|
ring/io/examples.py,sha256=KLf2iCagvRfjs9MCnQsLUlfGBjrQKrD-Qv8U0TtX6Ek,1114
|
@@ -40,8 +40,8 @@ ring/io/examples/test_randomize_position.xml,sha256=h6Yo5tT8QJBOJEwhE0cpppF-rvbO
|
|
40
40
|
ring/io/examples/test_sensors.xml,sha256=urI_19gzwpDyWjtnse1Iy7CWCB0ezbsDP7FMLFlNw_4,494
|
41
41
|
ring/io/examples/test_three_seg_seg2.xml,sha256=g85tx4V6PahkSbYXKWqk5vqurLos15WB6tBm1dQ_V_o,1022
|
42
42
|
ring/io/examples/exclude/knee_trans_dof.xml,sha256=4Cuv6c7Yqa4T-RirRbrJKTT_41vRTuDlLPRLE_NopjU,1379
|
43
|
-
ring/io/examples/exclude/standard_sys.xml,sha256=
|
44
|
-
ring/io/examples/exclude/standard_sys_rr_imp.xml,sha256=
|
43
|
+
ring/io/examples/exclude/standard_sys.xml,sha256=1QxyN01TaFPKdzyacomQeA_8elcB2XRQp5D4NTUYNJw,8967
|
44
|
+
ring/io/examples/exclude/standard_sys_rr_imp.xml,sha256=1K8aLe4n97qFMQaytXdHVHDfshDhoZf78QzEe-gLjiU,9015
|
45
45
|
ring/io/examples/test_morph_system/four_seg_seg1.xml,sha256=XJvGtEnvedejs_OmCVfQULWJNK8MLDQQ3raqPNRCJbA,1283
|
46
46
|
ring/io/examples/test_morph_system/four_seg_seg3.xml,sha256=HktN7_a_Ly3YflWit5W-WncxApWGMORAGnRXyMEqnoA,1265
|
47
47
|
ring/io/xml/__init__.py,sha256=-3k6ffvFyc4zm0oTyVz3ez-o3Lb9bPp2sjwSub_K1AA,242
|
@@ -50,9 +50,9 @@ ring/io/xml/from_xml.py,sha256=8b44sPVWgoY8JGJZLpJ8M_eLfcfu3IsMtBzSytPTPmw,9234
|
|
50
50
|
ring/io/xml/test_from_xml.py,sha256=bckVrVVmEhCwujd_OF9FGYnX3zU3BgztpqGxxmd0htM,1562
|
51
51
|
ring/io/xml/test_to_xml.py,sha256=NGn4VSiFdwhYN5YTBduWMiY9B5dwtxZhCQAR_PXeqKU,946
|
52
52
|
ring/io/xml/to_xml.py,sha256=fohb-jWMf2cxVdT5dmknsGyrNMseICSbKEz_urbaWbQ,3407
|
53
|
-
ring/ml/__init__.py,sha256=
|
54
|
-
ring/ml/base.py,sha256=
|
55
|
-
ring/ml/callbacks.py,sha256=
|
53
|
+
ring/ml/__init__.py,sha256=hHQUeYAdqRoEFtpKW4zXyNkAdeH2cPh17vc29hXcWWw,1746
|
54
|
+
ring/ml/base.py,sha256=PQ72VasEqlecBZgWP5HE5rWYyLiLq7nCVLymXo9f0dw,8959
|
55
|
+
ring/ml/callbacks.py,sha256=DkSy5c7IRqAAks2dx8acEBExYxUv-xiUFwZn4odPYq4,13253
|
56
56
|
ring/ml/ml_utils.py,sha256=hQEmeZoahdJyFrz0NZXYi1Yijl7GvPBdqwzZBzlUIUM,7638
|
57
57
|
ring/ml/optimizer.py,sha256=OP70P70YcX-2Z-cuoMluFk-L5Vhh_MmqiHdM9OZqyhI,4703
|
58
58
|
ring/ml/ringnet.py,sha256=OWRDu2COmptzbpJWlRLbPIn_ioKZCAd_iu-eiY_aPjk,8521
|
@@ -60,7 +60,7 @@ ring/ml/train.py,sha256=ftt2MOSSNGCdL7ZoAXcbIgeHW1Wkpgp6XYyLIBUIClI,10872
|
|
60
60
|
ring/ml/training_loop.py,sha256=CEokvPQuuk_WCd-J60ZDodJYcPVvyxLfgXDr_DnbzRI,3359
|
61
61
|
ring/ml/params/0x13e3518065c21cd8.pickle,sha256=Zh2k1zK-TNxJl5F7nyTeQ9001qqRE_dfvaq1HWV287A,9355838
|
62
62
|
ring/rendering/__init__.py,sha256=Zf7qOdzK3t2hljIrs5P4zFhzHljLSMRyDDZO2YlZk4k,75
|
63
|
-
ring/rendering/base_render.py,sha256=
|
63
|
+
ring/rendering/base_render.py,sha256=L2x83oWC2KkneuA5Lubg2qoDInDFBfH5wYlATymP9-0,8764
|
64
64
|
ring/rendering/mujoco_render.py,sha256=aluzQJp3jrDdPfAyNmQuXIHRfgfBTCCZQqxKOx_0D2s,7770
|
65
65
|
ring/rendering/vispy_render.py,sha256=QmRyA7Hqk3uS1SKjcncwc4_vd1m4yWryW2X0i4jRvCw,10260
|
66
66
|
ring/rendering/vispy_visuals.py,sha256=ooBZqppnebeL0ANe6V6zUgnNTtDcdkOsa4vZuM4sx-I,7873
|
@@ -77,7 +77,7 @@ ring/utils/hdf5.py,sha256=BzXwVypZmEZeHVgeGZ78YYdi10NEQtnPhdrb8dQAXo0,5856
|
|
77
77
|
ring/utils/normalizer.py,sha256=67L2BU1MRsMT4pD41ta3JJMppLN0ozFmnwrmXDtnqrQ,1698
|
78
78
|
ring/utils/path.py,sha256=hAfSlqRi-ew536RnjDDM7IKapdMJc-EvhrR0Y-BCFWc,1265
|
79
79
|
ring/utils/utils.py,sha256=AzOzR95oOyfdtJhjt5iIb35u611NlTb1Ds4QDKrGMOM,4967
|
80
|
-
imt_ring-1.
|
81
|
-
imt_ring-1.
|
82
|
-
imt_ring-1.
|
83
|
-
imt_ring-1.
|
80
|
+
imt_ring-1.3.0.dist-info/METADATA,sha256=fYndGMXxYVbuBmGAqpzGezBcD6-ruTt3VOAMdLxTwDE,3104
|
81
|
+
imt_ring-1.3.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
82
|
+
imt_ring-1.3.0.dist-info/top_level.txt,sha256=EiT790-lAyi8iwTzJArH3f2k77rwhDn00q-4PlmvDQo,5
|
83
|
+
imt_ring-1.3.0.dist-info/RECORD,,
|
@@ -8,6 +8,7 @@ from tree_utils import PyTree
|
|
8
8
|
|
9
9
|
import ring
|
10
10
|
from ring import maths
|
11
|
+
from ring.algorithms import jcalc
|
11
12
|
from ring.algorithms._random import random_angle_over_time
|
12
13
|
|
13
14
|
Params = PyTree
|
@@ -258,6 +259,9 @@ def register_suntay(sconfig: SuntayConfig, name: str = "suntay"):
|
|
258
259
|
mconfig.cdf_bins_max,
|
259
260
|
mconfig.interpolation_method,
|
260
261
|
)
|
262
|
+
return _apply_rom(qs_flexion)
|
263
|
+
|
264
|
+
def _apply_rom(qs_flexion):
|
261
265
|
return restrict(
|
262
266
|
qs_flexion,
|
263
267
|
sconfig.flexion_rot_min,
|
@@ -267,16 +271,26 @@ def register_suntay(sconfig: SuntayConfig, name: str = "suntay"):
|
|
267
271
|
method=sconfig.flexion_rot_restrict_method,
|
268
272
|
)
|
269
273
|
|
274
|
+
def coordinate_vector_to_q_suntay(q_flexion):
|
275
|
+
q_flexion = ring.maths.wrap_to_pi(q_flexion)
|
276
|
+
return _apply_rom(q_flexion)
|
277
|
+
|
270
278
|
joint_model = ring.JointModel(
|
271
279
|
transform=_transform_suntay,
|
280
|
+
motion=[jcalc.mrx],
|
272
281
|
rcmg_draw_fn=_draw_flexion_angle,
|
282
|
+
p_control_term=jcalc._p_control_term_rxyz,
|
283
|
+
qd_from_q=jcalc._qd_from_q_cartesian,
|
284
|
+
coordinate_vector_to_q=coordinate_vector_to_q_suntay,
|
285
|
+
inv_kin=None,
|
273
286
|
init_joint_params=_init_joint_params_suntay,
|
274
287
|
utilities=dict(
|
275
288
|
Q_S_H_alpha_beta_gamma=_utils_Q_S_H_alpha_beta_gamma,
|
276
289
|
find_suntay_joint=_utils_find_suntay_joint,
|
290
|
+
sconfig=sconfig,
|
277
291
|
),
|
278
292
|
)
|
279
|
-
ring.register_new_joint_type(name, joint_model, 1,
|
293
|
+
ring.register_new_joint_type(name, joint_model, 1, overwrite=True)
|
280
294
|
|
281
295
|
|
282
296
|
def MLP_DrawnFnPair(
|
@@ -291,6 +305,8 @@ def MLP_DrawnFnPair(
|
|
291
305
|
|
292
306
|
if flexion_center is None:
|
293
307
|
flexion_center = (flexion_mn + flexion_mx) / 2
|
308
|
+
else:
|
309
|
+
flexion_center = jnp.array(flexion_center)
|
294
310
|
|
295
311
|
@hk.without_apply_rng
|
296
312
|
@hk.transform
|
@@ -2,9 +2,10 @@ import warnings
|
|
2
2
|
|
3
3
|
import jax
|
4
4
|
import jax.numpy as jnp
|
5
|
+
import tree_utils
|
6
|
+
|
5
7
|
from ring import base
|
6
8
|
from ring import io
|
7
|
-
import tree_utils
|
8
9
|
|
9
10
|
|
10
11
|
def imu_reference_link_name(imu_link_name: str) -> str:
|
@@ -15,11 +16,21 @@ def unactuated_subsystem(sys) -> list[str]:
|
|
15
16
|
return [imu_reference_link_name(name) for name in sys.findall_imus()]
|
16
17
|
|
17
18
|
|
18
|
-
def _subsystem_factory(
|
19
|
+
def _subsystem_factory(
|
20
|
+
imu_name: str,
|
21
|
+
pos_min_max: float,
|
22
|
+
translational_stif: float,
|
23
|
+
translational_damp: float,
|
24
|
+
) -> base.System:
|
19
25
|
assert pos_min_max >= 0
|
20
26
|
pos = f'pos_min="-{pos_min_max} -{pos_min_max} -{pos_min_max}" pos_max="{pos_min_max} {pos_min_max} {pos_min_max}"' # noqa: E501
|
21
|
-
stiff =
|
22
|
-
|
27
|
+
stiff = (
|
28
|
+
f'spring_stiff="{translational_stif} {translational_stif} {translational_stif}"'
|
29
|
+
)
|
30
|
+
translational_damp = translational_stif * translational_damp
|
31
|
+
damping = (
|
32
|
+
f'damping="{translational_damp} {translational_damp} {translational_damp}"'
|
33
|
+
)
|
23
34
|
return io.load_sys_from_str(
|
24
35
|
f"""
|
25
36
|
<x_xy>
|
@@ -34,12 +45,16 @@ def _subsystem_factory(imu_name: str, pos_min_max: float) -> base.System:
|
|
34
45
|
def inject_subsystems(
|
35
46
|
sys: base.System,
|
36
47
|
pos_min_max: float = 0.0,
|
48
|
+
rotational_stif: float = 0.3,
|
49
|
+
rotational_damp: float = 0.1,
|
50
|
+
translational_stif: float = 50.0,
|
51
|
+
translational_damp: float = 0.1,
|
37
52
|
**kwargs,
|
38
53
|
) -> base.System:
|
39
54
|
imu_idx_to_name_map = {sys.name_to_idx(imu): imu for imu in sys.findall_imus()}
|
40
55
|
|
41
|
-
default_spher_stif = jnp.ones((3,)) *
|
42
|
-
default_spher_damp = default_spher_stif *
|
56
|
+
default_spher_stif = jnp.ones((3,)) * rotational_stif
|
57
|
+
default_spher_damp = default_spher_stif * rotational_damp
|
43
58
|
for imu in sys.findall_imus():
|
44
59
|
sys = sys.unfreeze(imu, "spherical")
|
45
60
|
# set default stiffness and damping of spherical joint
|
@@ -51,7 +66,12 @@ def inject_subsystems(
|
|
51
66
|
|
52
67
|
_imu = imu_reference_link_name(imu)
|
53
68
|
sys = sys.change_link_name(imu, _imu)
|
54
|
-
sys = sys.inject_system(
|
69
|
+
sys = sys.inject_system(
|
70
|
+
_subsystem_factory(
|
71
|
+
imu, pos_min_max, translational_stif, translational_damp
|
72
|
+
),
|
73
|
+
_imu,
|
74
|
+
)
|
55
75
|
|
56
76
|
# attach geoms to newly injected link
|
57
77
|
new_geoms = []
|
ring/algorithms/jcalc.py
CHANGED
@@ -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="
|
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="
|
10
|
-
<body joint="frozen" name="
|
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="
|
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="
|
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="
|
20
|
-
<body joint="frozen" name="
|
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="
|
22
|
+
<omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
|
23
23
|
</body>
|
24
|
-
<body joint="ry" name="
|
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="
|
29
|
-
<body joint="frozen" name="
|
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="
|
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="
|
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="
|
40
|
-
<body joint="frozen" name="
|
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="
|
42
|
+
<omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
|
43
43
|
</body>
|
44
|
-
<body joint="ry" name="
|
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="
|
49
|
-
<body joint="frozen" name="
|
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="
|
51
|
+
<omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
|
52
52
|
</body>
|
53
|
-
<body joint="rz" name="
|
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="
|
58
|
-
<body joint="frozen" name="
|
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="
|
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="
|
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="
|
70
|
-
<body joint="frozen" name="
|
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="
|
72
|
+
<omc pos="0.1 0.0 0.015" name="seg2" pos_marker="2"/>
|
73
73
|
</body>
|
74
|
-
<body joint="rx" name="
|
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="
|
79
|
-
<body joint="frozen" name="
|
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="
|
81
|
+
<omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
|
82
82
|
</body>
|
83
|
-
<body joint="ry" name="
|
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="
|
88
|
-
<body joint="frozen" name="
|
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="
|
90
|
+
<omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
|
91
91
|
</body>
|
92
|
-
<body joint="rz" name="
|
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="
|
97
|
-
<body joint="frozen" name="
|
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="
|
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="
|
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="
|
10
|
-
<body joint="frozen" name="
|
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="
|
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="
|
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="
|
20
|
-
<body joint="frozen" name="
|
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="
|
22
|
+
<omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
|
23
23
|
</body>
|
24
|
-
<body joint="rr_imp" name="
|
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="
|
29
|
-
<body joint="frozen" name="
|
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="
|
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="
|
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="
|
40
|
-
<body joint="frozen" name="
|
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="
|
42
|
+
<omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
|
43
43
|
</body>
|
44
|
-
<body joint="rr_imp" name="
|
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="
|
49
|
-
<body joint="frozen" name="
|
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="
|
51
|
+
<omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
|
52
52
|
</body>
|
53
|
-
<body joint="rr_imp" name="
|
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="
|
58
|
-
<body joint="frozen" name="
|
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="
|
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="
|
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="
|
70
|
-
<body joint="frozen" name="
|
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="
|
72
|
+
<omc pos="0.1 0.0 0.015" name="seg2" pos_marker="2"/>
|
73
73
|
</body>
|
74
|
-
<body joint="rr_imp" name="
|
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="
|
79
|
-
<body joint="frozen" name="
|
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="
|
81
|
+
<omc pos="0.1 0.0 0.015" name="seg3" pos_marker="1"/>
|
82
82
|
</body>
|
83
|
-
<body joint="rr_imp" name="
|
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="
|
88
|
-
<body joint="frozen" name="
|
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="
|
90
|
+
<omc pos="0.1 0.0 0.015" name="seg4" pos_marker="2"/>
|
91
91
|
</body>
|
92
|
-
<body joint="rr_imp" name="
|
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="
|
97
|
-
<body joint="frozen" name="
|
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="
|
99
|
+
<omc pos="0.1 0.0 0.015" name="seg5" pos_marker="4"/>
|
100
100
|
</body>
|
101
101
|
</body>
|
102
102
|
</body>
|
ring/ml/__init__.py
CHANGED
@@ -13,7 +13,7 @@ from .ringnet import RING
|
|
13
13
|
from .train import train_fn
|
14
14
|
|
15
15
|
|
16
|
-
def RING_ICML24(params=None, **kwargs):
|
16
|
+
def RING_ICML24(params=None, eval: bool = True, **kwargs):
|
17
17
|
"""Create the RING network used in the icml24 paper.
|
18
18
|
|
19
19
|
X[..., :3] = acc
|
@@ -28,6 +28,34 @@ def RING_ICML24(params=None, **kwargs):
|
|
28
28
|
|
29
29
|
ringnet = RING(params=params, **kwargs) # noqa: F811
|
30
30
|
ringnet = base.ScaleX_FilterWrapper(ringnet)
|
31
|
-
|
31
|
+
if eval:
|
32
|
+
ringnet = base.LPF_FilterWrapper(ringnet, 10.0, samp_freq=None)
|
32
33
|
ringnet = base.GroundTruthHeading_FilterWrapper(ringnet)
|
33
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
|
ring/ml/base.py
CHANGED
@@ -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
|
-
|
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
|
ring/ml/callbacks.py
CHANGED
@@ -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
|
|
@@ -245,7 +249,7 @@ class SaveParamsTrainingLoopCallback(training_loop.TrainingLoopCallback):
|
|
245
249
|
extension="pickle",
|
246
250
|
)
|
247
251
|
|
248
|
-
pickle_save(ele.params, filename, overwrite=
|
252
|
+
pickle_save(ele.params, filename, overwrite=False)
|
249
253
|
if self.upload:
|
250
254
|
success = False
|
251
255
|
for logger in self._loggers:
|
ring/rendering/base_render.py
CHANGED
@@ -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 /
|
232
|
+
radius = length / 7
|
233
233
|
colors = ["red", "green", "blue"]
|
234
234
|
rot_axis = [1, 0, 2]
|
235
235
|
|
File without changes
|
File without changes
|