imt-ring 1.6.7__py3-none-any.whl → 1.6.9__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- {imt_ring-1.6.7.dist-info → imt_ring-1.6.9.dist-info}/METADATA +1 -1
- {imt_ring-1.6.7.dist-info → imt_ring-1.6.9.dist-info}/RECORD +8 -8
- {imt_ring-1.6.7.dist-info → imt_ring-1.6.9.dist-info}/WHEEL +1 -1
- ring/algorithms/sensors.py +2 -2
- ring/base.py +12 -5
- ring/maths.py +1 -1
- ring/ml/base.py +8 -0
- {imt_ring-1.6.7.dist-info → imt_ring-1.6.9.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,14 @@
|
|
1
1
|
ring/__init__.py,sha256=k7tL-XgggUwWxHCXyv60rQn-OcXHPg82QcIUkKLEd-c,5057
|
2
2
|
ring/algebra.py,sha256=F0GwbP8LQP5qGVkoMUYJmkp9Hn2nKAVIkCVYDEjNjGU,3128
|
3
|
-
ring/base.py,sha256=
|
4
|
-
ring/maths.py,sha256=
|
3
|
+
ring/base.py,sha256=MkkziQx01sdMOpB8MFUDFgFlZUrXCFjpb8hS9yKHUyM,33751
|
4
|
+
ring/maths.py,sha256=qPHH6TpHCK3TgExI98gNEySoSRKOwteN9McUlyUFipI,12207
|
5
5
|
ring/spatial.py,sha256=nmZ-UhRanhyM34bez8uCS4wMwaKqLkuEbgKGP5XNH60,2351
|
6
6
|
ring/algorithms/__init__.py,sha256=IiK9EN5Xgs3dB075-A-H-Yad0Z7vzvKIJF2g6X_-C_8,1224
|
7
7
|
ring/algorithms/_random.py,sha256=fc26yEQjSjtf0NluZ41CyeGIRci0ldrRlThueHR9H7U,14007
|
8
8
|
ring/algorithms/dynamics.py,sha256=GOedL1STj6oXcXgMA7dB4PabvCQxPBbirJQhXBRuKqE,10929
|
9
9
|
ring/algorithms/jcalc.py,sha256=bM8VARgqEiVPy7632geKYGk4MZddZfI8XHdW5kXF3HI,28594
|
10
10
|
ring/algorithms/kinematics.py,sha256=DOboHI517Vx0pRJUFZtZPmK_qFaiKiQe-37B-M0aC-c,7422
|
11
|
-
ring/algorithms/sensors.py,sha256=
|
11
|
+
ring/algorithms/sensors.py,sha256=0zLjd9TzOkU5W5GJU6Dk4QwYjwqs9AUlzUKU8aSX_dc,18126
|
12
12
|
ring/algorithms/custom_joints/__init__.py,sha256=fzeE7TdUhmGgbbFAyis1tKcyQ4Fo8LigDwD3hUVnH_w,316
|
13
13
|
ring/algorithms/custom_joints/rr_imp_joint.py,sha256=_YJK0p8_0MHFtr1NuGnNZoxTbwaMQyUjYv7EtsPiU3A,2402
|
14
14
|
ring/algorithms/custom_joints/rr_joint.py,sha256=jnRtjtOCALMaq2_0bcu2d7qgfQ6etXpoh43MioRaDmY,1000
|
@@ -51,7 +51,7 @@ ring/io/xml/test_from_xml.py,sha256=bckVrVVmEhCwujd_OF9FGYnX3zU3BgztpqGxxmd0htM,
|
|
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
53
|
ring/ml/__init__.py,sha256=8SZTCs9rJ1kzR0Psh7lUzFhIMhKRPIK41mVfxJAGyMo,1471
|
54
|
-
ring/ml/base.py,sha256
|
54
|
+
ring/ml/base.py,sha256=lfwEZLBDglOSRWChUHoH1kezefhttPV9TMEpNIqsMNw,9972
|
55
55
|
ring/ml/callbacks.py,sha256=W19QF6_uvaNCjs8ObsjNXD7mv9gFgJBixdRSbB_BynE,13301
|
56
56
|
ring/ml/ml_utils.py,sha256=GooyH5uxA6cJM7ZcWDUfSkSKq6dg7kCIbhkbjJs_rLw,6674
|
57
57
|
ring/ml/optimizer.py,sha256=fWyF__ezUltrA16SLfOC1jvS3zBh9NJsMYa6-V0frhs,4709
|
@@ -83,7 +83,7 @@ ring/utils/randomize_sys.py,sha256=G_vBIo0OwQkXL2u0djwbaoaeb02C4LQCTNNloOYIU2M,3
|
|
83
83
|
ring/utils/utils.py,sha256=oGC7kh19s5zvmnUvWy8B3fBl9loVU58ppz91osk2m3w,6550
|
84
84
|
ring/utils/register_gym_envs/__init__.py,sha256=PtPIRBQJ16339xZ9G9VpvqrvcGbQ_Pk_SUz4tQPa9nQ,94
|
85
85
|
ring/utils/register_gym_envs/saddle.py,sha256=tA5CyW_akSXyDm0xJ83CtOrUMVElH0f9vZtEDDJQalI,4422
|
86
|
-
imt_ring-1.6.
|
87
|
-
imt_ring-1.6.
|
88
|
-
imt_ring-1.6.
|
89
|
-
imt_ring-1.6.
|
86
|
+
imt_ring-1.6.9.dist-info/METADATA,sha256=kFg-Ht8PsdnYA5lvEQ-KgMxlQSqiX_PtP8M8Q0vjVag,3820
|
87
|
+
imt_ring-1.6.9.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
|
88
|
+
imt_ring-1.6.9.dist-info/top_level.txt,sha256=EiT790-lAyi8iwTzJArH3f2k77rwhDn00q-4PlmvDQo,5
|
89
|
+
imt_ring-1.6.9.dist-info/RECORD,,
|
ring/algorithms/sensors.py
CHANGED
@@ -130,8 +130,8 @@ def magnetometer(rot: jax.Array, magvec: jax.Array) -> jax.Array:
|
|
130
130
|
# - acc: m/s/s
|
131
131
|
# - gyr: rad/s
|
132
132
|
# - mag: a.u.
|
133
|
-
NOISE_LEVELS = {"acc": 0.
|
134
|
-
BIAS_LEVELS = {"acc": 0.
|
133
|
+
NOISE_LEVELS = {"acc": 0.048, "gyr": jnp.deg2rad(0.7), "mag": 0.01}
|
134
|
+
BIAS_LEVELS = {"acc": 0.5, "gyr": jnp.deg2rad(3.6), "mag": 0.0}
|
135
135
|
|
136
136
|
|
137
137
|
def add_noise_bias(
|
ring/base.py
CHANGED
@@ -590,12 +590,14 @@ class System(_Base):
|
|
590
590
|
|
591
591
|
return sys
|
592
592
|
|
593
|
-
def findall_imus(self) -> list[str]:
|
594
|
-
|
593
|
+
def findall_imus(self, names: bool = True) -> list[str] | list[int]:
|
594
|
+
bodies = [name for name in self.link_names if name[:3] == "imu"]
|
595
|
+
return bodies if names else [self.name_to_idx(n) for n in bodies]
|
595
596
|
|
596
|
-
def findall_segments(self) -> list[str]:
|
597
|
-
imus = self.findall_imus()
|
598
|
-
|
597
|
+
def findall_segments(self, names: bool = True) -> list[str] | list[int]:
|
598
|
+
imus = self.findall_imus(names=True)
|
599
|
+
bodies = [name for name in self.link_names if name not in imus]
|
600
|
+
return bodies if names else [self.name_to_idx(n) for n in bodies]
|
599
601
|
|
600
602
|
def _bodies_indices_to_bodies_name(self, bodies: list[int]) -> list[str]:
|
601
603
|
return [self.idx_to_name(i) for i in bodies]
|
@@ -615,6 +617,11 @@ class System(_Base):
|
|
615
617
|
bodies = [i for i, _typ in enumerate(self.link_types) if _typ == typ]
|
616
618
|
return self._bodies_indices_to_bodies_name(bodies) if names else bodies
|
617
619
|
|
620
|
+
def children(self, name: str, names: bool = False) -> list[int] | list[str]:
|
621
|
+
p = self.name_to_idx(name)
|
622
|
+
bodies = [i for i in range(self.num_links()) if self.link_parents[i] == p]
|
623
|
+
return bodies if (not names) else [self.idx_to_name(i) for i in bodies]
|
624
|
+
|
618
625
|
def scan(self, f: Callable, in_types: str, *args, reverse: bool = False):
|
619
626
|
"""Scan `f` along each link in system whilst carrying along state.
|
620
627
|
|
ring/maths.py
CHANGED
@@ -312,7 +312,7 @@ def quat_project(q: jax.Array, k: jax.Array) -> tuple[jax.Array, jax.Array]:
|
|
312
312
|
k (jax.Array): Primary axis direction.
|
313
313
|
|
314
314
|
Returns:
|
315
|
-
tuple
|
315
|
+
tuple(jax.Array, jax.Array): Primary quaternion, residual quaternion
|
316
316
|
"""
|
317
317
|
phi_pri = 2 * jnp.arctan2(q[1:] @ k, q[0])
|
318
318
|
# NOTE: CONVENTION
|
ring/ml/base.py
CHANGED
@@ -77,6 +77,10 @@ class AbstractFilter(ABC):
|
|
77
77
|
def search_attr(self, attr: str):
|
78
78
|
return getattr(self, attr)
|
79
79
|
|
80
|
+
@property
|
81
|
+
def unwrapped_deep(self):
|
82
|
+
return self
|
83
|
+
|
80
84
|
|
81
85
|
class AbstractFilterUnbatched(AbstractFilter):
|
82
86
|
@abstractmethod
|
@@ -136,6 +140,10 @@ class AbstractFilterWrapper(AbstractFilter):
|
|
136
140
|
def name(self):
|
137
141
|
return self.unwrapped.name + " ->\n" + super().name
|
138
142
|
|
143
|
+
@property
|
144
|
+
def unwrapped_deep(self) -> AbstractFilter:
|
145
|
+
return self.unwrapped.unwrapped_deep
|
146
|
+
|
139
147
|
|
140
148
|
class LPF_FilterWrapper(AbstractFilterWrapper):
|
141
149
|
def __init__(
|
File without changes
|