mink 0.0.7__py3-none-any.whl → 0.0.8__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.
- mink/lie/base.py +15 -0
- mink/lie/se3.py +5 -0
- mink/lie/so3.py +5 -0
- {mink-0.0.7.dist-info → mink-0.0.8.dist-info}/METADATA +4 -3
- {mink-0.0.7.dist-info → mink-0.0.8.dist-info}/RECORD +7 -7
- {mink-0.0.7.dist-info → mink-0.0.8.dist-info}/WHEEL +0 -0
- {mink-0.0.7.dist-info → mink-0.0.8.dist-info}/licenses/LICENSE +0 -0
mink/lie/base.py
CHANGED
@@ -103,6 +103,21 @@ class MatrixLieGroup(abc.ABC):
|
|
103
103
|
"""Normalize/projects values and returns."""
|
104
104
|
raise NotImplementedError
|
105
105
|
|
106
|
+
def interpolate(self, other: Self, alpha: float = 0.5) -> Self:
|
107
|
+
"""Interpolate between two matrix Lie groups.
|
108
|
+
|
109
|
+
Args:
|
110
|
+
other: The other Lie group, which serves as the end point of interpolation.
|
111
|
+
alpha: The fraction of interpolation between [self, other]. This must
|
112
|
+
be within [0.0, 1.0]. 0.0 = self, 1.0 = other.
|
113
|
+
|
114
|
+
Returns:
|
115
|
+
The interpolated matrix Lie group.
|
116
|
+
"""
|
117
|
+
if alpha < 0.0 or alpha > 1.0:
|
118
|
+
raise ValueError(f"Expected alpha within [0.0, 1.0] but received {alpha}")
|
119
|
+
return self @ self.exp(alpha * (self.inverse() @ other).log())
|
120
|
+
|
106
121
|
# Plus and minus operators.
|
107
122
|
|
108
123
|
# Eqn. 25.
|
mink/lie/se3.py
CHANGED
@@ -32,6 +32,11 @@ class SE3(MatrixLieGroup):
|
|
32
32
|
xyz = np.round(self.wxyz_xyz[4:], 5)
|
33
33
|
return f"{self.__class__.__name__}(wxyz={quat}, xyz={xyz})"
|
34
34
|
|
35
|
+
def __eq__(self, other: object) -> bool:
|
36
|
+
if not isinstance(other, SE3):
|
37
|
+
return NotImplemented
|
38
|
+
return np.array_equal(self.wxyz_xyz, other.wxyz_xyz)
|
39
|
+
|
35
40
|
def copy(self) -> SE3:
|
36
41
|
return SE3(wxyz_xyz=np.array(self.wxyz_xyz))
|
37
42
|
|
mink/lie/so3.py
CHANGED
@@ -45,6 +45,11 @@ class SO3(MatrixLieGroup):
|
|
45
45
|
wxyz = np.round(self.wxyz, 5)
|
46
46
|
return f"{self.__class__.__name__}(wxyz={wxyz})"
|
47
47
|
|
48
|
+
def __eq__(self, other: object) -> bool:
|
49
|
+
if not isinstance(other, SO3):
|
50
|
+
return NotImplemented
|
51
|
+
return np.array_equal(self.wxyz, other.wxyz)
|
52
|
+
|
48
53
|
def parameters(self) -> np.ndarray:
|
49
54
|
return self.wxyz
|
50
55
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mink
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.8
|
4
4
|
Summary: mink: MuJoCo inverse kinematics.
|
5
5
|
Keywords: inverse,kinematics,mujoco
|
6
6
|
Author-email: Kevin Zakka <zakka@berkeley.edu>
|
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
19
19
|
Classifier: Topic :: Scientific/Engineering
|
20
20
|
License-File: LICENSE
|
21
21
|
Requires-Dist: mujoco >= 3.1.6
|
22
|
-
Requires-Dist: qpsolvers[
|
22
|
+
Requires-Dist: qpsolvers[daqp] >= 4.3.1
|
23
23
|
Requires-Dist: typing_extensions
|
24
24
|
Requires-Dist: numpy < 2.0.0
|
25
25
|
Requires-Dist: mink[examples, dev] ; extra == "all"
|
@@ -29,7 +29,8 @@ Requires-Dist: mypy ; extra == "dev"
|
|
29
29
|
Requires-Dist: ruff ; extra == "dev"
|
30
30
|
Requires-Dist: dm_control >= 1.0.20 ; extra == "examples"
|
31
31
|
Requires-Dist: loop-rate-limiters >= 0.1.0 ; extra == "examples"
|
32
|
-
Requires-Dist: qpsolvers[
|
32
|
+
Requires-Dist: qpsolvers[daqp] >= 4.3.1 ; extra == "examples"
|
33
|
+
Requires-Dist: osqp >=0.6.2,<1 ; extra == "examples"
|
33
34
|
Requires-Dist: absl-py ; extra == "test"
|
34
35
|
Requires-Dist: coveralls ; extra == "test"
|
35
36
|
Requires-Dist: pytest ; extra == "test"
|
@@ -332,9 +332,9 @@ mink/contrib/keyboard_teleop/__init__.py,sha256=wtG_0D-RurdQiGTPjLYVXXt44ieh6ITT
|
|
332
332
|
mink/contrib/keyboard_teleop/keycodes.py,sha256=1AN3bWpkw99ZjrkIQnu8QdHSz-_boWMYWI2LlZOp5uw,1644
|
333
333
|
mink/contrib/keyboard_teleop/teleop_mocap.py,sha256=2cuauiBHsQb6IVruRbGtCumdHQazEGvt9w2L50eKGzw,8095
|
334
334
|
mink/lie/__init__.py,sha256=7tm3ZFnF3o1SDd9MOFO1In13lHMQJHO0FB-ejI6tsgE,202
|
335
|
-
mink/lie/base.py,sha256=
|
336
|
-
mink/lie/se3.py,sha256=
|
337
|
-
mink/lie/so3.py,sha256
|
335
|
+
mink/lie/base.py,sha256=8TGWWEWRvmoBsJP-9y1YXQHkTC-TFfI8JDvBFKxxP-A,4865
|
336
|
+
mink/lie/se3.py,sha256=mmPjbljB0ddPrV0b47OV8GP9rqU6f-bpW8TQPW_p-9A,8050
|
337
|
+
mink/lie/so3.py,sha256=IqXqalM5NG0cTi1ZZcuXA2lcAk7A3Jnt_1O2n-ae0DE,7474
|
338
338
|
mink/lie/utils.py,sha256=DuEl3pj84daLvMKN84-YBvkXnJfqvc5vpvJ9J-pJ11U,403
|
339
339
|
mink/limits/__init__.py,sha256=hX5Dgpri9AE6YtUCkW79AXMBuNAuBhniR9kQ6Rxwv3Y,416
|
340
340
|
mink/limits/collision_avoidance_limit.py,sha256=MJXesSjvm_2O6RUEz2e4D8uTVOHyTsH9j4UxkPemcn8,11918
|
@@ -351,7 +351,7 @@ mink/tasks/frame_task.py,sha256=DeNg-bEJxqnrRI0FaJK4UHyb8CyF4A7uPF9G-CdN0sg,5307
|
|
351
351
|
mink/tasks/posture_task.py,sha256=sVDZyalCh5DP8zmCuX5kYuZxiMxRut_mTZUjv5y3b5M,3998
|
352
352
|
mink/tasks/relative_frame_task.py,sha256=9rIiYocI1eEESt0bLZZpQR7K6ggVRZH8iEhdhzkfZa0,5119
|
353
353
|
mink/tasks/task.py,sha256=F16YZT1L9ueNOcKoOhbCyEnZw0DOgrmjqADl0jahVQI,4838
|
354
|
-
mink-0.0.
|
355
|
-
mink-0.0.
|
356
|
-
mink-0.0.
|
357
|
-
mink-0.0.
|
354
|
+
mink-0.0.8.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
355
|
+
mink-0.0.8.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
356
|
+
mink-0.0.8.dist-info/METADATA,sha256=SoXK-YNeZsu55hyaqB2hPAPjtWXR7xH7wL9cc2vBTBU,5614
|
357
|
+
mink-0.0.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|