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 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.7
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[quadprog] >= 4.3.1
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[quadprog, osqp] >= 4.3.1 ; extra == "examples"
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=ummp2-yROMrcYCtsNCoKEiKoJ7wLF0nSjnOOD95aXaY,4220
336
- mink/lie/se3.py,sha256=DudNNLNKgSsS7nMbbpzK-ZdR2z9O_k_AOxzM7yZubpE,7870
337
- mink/lie/so3.py,sha256=-XWy8qMZ16WdhcscsA4ow-D7CTxUgbnsIU45GGOn9P0,7302
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.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
355
- mink-0.0.7.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
356
- mink-0.0.7.dist-info/METADATA,sha256=ZcQbHajE_Mda5DlByQ23XGpSn7vh4NXiUOJAidbXkvI,5575
357
- mink-0.0.7.dist-info/RECORD,,
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