mink 0.0.11__py3-none-any.whl → 0.0.13__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/__init__.py +2 -0
- mink/configuration.py +9 -1
- mink/exceptions.py +7 -0
- mink/lie/se3.py +31 -0
- mink/lie/so3.py +23 -1
- mink/limits/collision_avoidance_limit.py +1 -1
- mink/solve_ik.py +25 -6
- mink/tasks/com_task.py +8 -1
- mink/tasks/damping_task.py +12 -12
- mink/tasks/frame_task.py +2 -2
- mink/tasks/kinetic_energy_regularization_task.py +11 -12
- mink/tasks/posture_task.py +6 -5
- {mink-0.0.11.dist-info → mink-0.0.13.dist-info}/METADATA +2 -1
- {mink-0.0.11.dist-info → mink-0.0.13.dist-info}/RECORD +16 -16
- {mink-0.0.11.dist-info → mink-0.0.13.dist-info}/WHEEL +0 -0
- {mink-0.0.11.dist-info → mink-0.0.13.dist-info}/licenses/LICENSE +0 -0
mink/__init__.py
CHANGED
@@ -19,6 +19,7 @@ from .exceptions import (
|
|
19
19
|
InvalidTarget,
|
20
20
|
LimitDefinitionError,
|
21
21
|
MinkError,
|
22
|
+
NoSolutionFound,
|
22
23
|
NotWithinConfigurationLimits,
|
23
24
|
TargetNotSet,
|
24
25
|
TaskDefinitionError,
|
@@ -88,6 +89,7 @@ __all__ = (
|
|
88
89
|
"LimitDefinitionError",
|
89
90
|
"TaskDefinitionError",
|
90
91
|
"IntegrationTimestepNotSet",
|
92
|
+
"NoSolutionFound",
|
91
93
|
"SUPPORTED_FRAMES",
|
92
94
|
"FRAME_TO_ENUM",
|
93
95
|
"FRAME_TO_JAC_FUNC",
|
mink/configuration.py
CHANGED
@@ -30,6 +30,7 @@ class Configuration:
|
|
30
30
|
* Running forward kinematics to update the state.
|
31
31
|
* Checking configuration limits.
|
32
32
|
* Computing Jacobians for different frames.
|
33
|
+
* Computing the joint-space inertia matrix.
|
33
34
|
* Retrieving frame transforms relative to the world frame.
|
34
35
|
* Integrating velocities to update configurations.
|
35
36
|
"""
|
@@ -84,6 +85,10 @@ class Configuration:
|
|
84
85
|
safety_break: If True, stop execution and raise an exception if the current
|
85
86
|
configuration is outside limits. If False, print a warning and continue
|
86
87
|
execution.
|
88
|
+
|
89
|
+
Raises:
|
90
|
+
NotWithinConfigurationLimits: If the current configuration is outside
|
91
|
+
the joint limits.
|
87
92
|
"""
|
88
93
|
for jnt in range(self.model.njnt):
|
89
94
|
jnt_type = self.model.jnt_type[jnt]
|
@@ -245,7 +250,10 @@ class Configuration:
|
|
245
250
|
"""
|
246
251
|
# Run the composite rigid body inertia (CRB) algorithm to populate the joint
|
247
252
|
# space inertia matrix data.qM.
|
248
|
-
mujoco.
|
253
|
+
if mujoco.mj_version() >= 334:
|
254
|
+
mujoco.mj_makeM(self.model, self.data)
|
255
|
+
else:
|
256
|
+
mujoco.mj_crb(self.model, self.data)
|
249
257
|
# data.qM is stored in a custom sparse format and can be converted to dense
|
250
258
|
# format using mujoco.mj_fullM.
|
251
259
|
M = np.empty((self.nv, self.nv), dtype=np.float64)
|
mink/exceptions.py
CHANGED
@@ -9,6 +9,13 @@ class MinkError(Exception):
|
|
9
9
|
"""Base class for Mink exceptions."""
|
10
10
|
|
11
11
|
|
12
|
+
class NoSolutionFound(MinkError):
|
13
|
+
"""Exception raised when the QP solver fails to find a solution."""
|
14
|
+
|
15
|
+
def __init__(self, solver_name: str):
|
16
|
+
super().__init__(f"QP solver {solver_name} failed to find a solution.")
|
17
|
+
|
18
|
+
|
12
19
|
class UnsupportedFrame(MinkError):
|
13
20
|
"""Exception raised when a frame type is unsupported."""
|
14
21
|
|
mink/lie/se3.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
from dataclasses import dataclass
|
4
|
+
from typing import Tuple
|
4
5
|
|
5
6
|
import mujoco
|
6
7
|
import numpy as np
|
@@ -221,6 +222,36 @@ class SE3(MatrixLieGroup):
|
|
221
222
|
ljacinv_se3[3:, 3:] = ljacinv_so3
|
222
223
|
return ljacinv_se3
|
223
224
|
|
225
|
+
def clamp(
|
226
|
+
self,
|
227
|
+
x_translation: Tuple[float, float] = (-np.inf, np.inf),
|
228
|
+
y_translation: Tuple[float, float] = (-np.inf, np.inf),
|
229
|
+
z_translation: Tuple[float, float] = (-np.inf, np.inf),
|
230
|
+
roll_radians: Tuple[float, float] = (-np.inf, np.inf),
|
231
|
+
pitch_radians: Tuple[float, float] = (-np.inf, np.inf),
|
232
|
+
yaw_radians: Tuple[float, float] = (-np.inf, np.inf),
|
233
|
+
) -> SE3:
|
234
|
+
"""Clamp a SE3 within translation and RPY limits.
|
235
|
+
|
236
|
+
Args:
|
237
|
+
x_translation: The (lower, upper) limits for translation along the x axis.
|
238
|
+
y_translation: The (lower, upper) limits for translation along the y axis.
|
239
|
+
z_translation: The (lower, upper) limits for translation along the z axis.
|
240
|
+
roll_radians: The (lower, upper) limits for the roll.
|
241
|
+
pitch_radians: The (lower, upper) limits for the pitch.
|
242
|
+
yaw_radians: The (lower, upper) limits for the yaw.
|
243
|
+
|
244
|
+
Returns:
|
245
|
+
A SE3 within the translation and RPY limits.
|
246
|
+
"""
|
247
|
+
translation_limits = np.array([x_translation, y_translation, z_translation])
|
248
|
+
return SE3.from_rotation_and_translation(
|
249
|
+
rotation=self.rotation().clamp(roll_radians, pitch_radians, yaw_radians),
|
250
|
+
translation=np.clip(
|
251
|
+
self.translation(), translation_limits[:, 0], translation_limits[:, 1]
|
252
|
+
),
|
253
|
+
)
|
254
|
+
|
224
255
|
|
225
256
|
# Eqn 180.
|
226
257
|
def _getQ(c) -> np.ndarray:
|
mink/lie/so3.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
from dataclasses import dataclass
|
4
|
-
from typing import NamedTuple
|
4
|
+
from typing import NamedTuple, Tuple
|
5
5
|
|
6
6
|
import mujoco
|
7
7
|
import numpy as np
|
@@ -260,3 +260,25 @@ class SO3(MatrixLieGroup):
|
|
260
260
|
ljacinv[1, 1] += 1.0
|
261
261
|
ljacinv[2, 2] += 1.0
|
262
262
|
return ljacinv
|
263
|
+
|
264
|
+
def clamp(
|
265
|
+
self,
|
266
|
+
roll_radians: Tuple[float, float] = (-np.inf, np.inf),
|
267
|
+
pitch_radians: Tuple[float, float] = (-np.inf, np.inf),
|
268
|
+
yaw_radians: Tuple[float, float] = (-np.inf, np.inf),
|
269
|
+
) -> SO3:
|
270
|
+
"""Clamp a SO3 within RPY limits.
|
271
|
+
|
272
|
+
Args:
|
273
|
+
roll_radians: The (lower, upper) limits for the roll.
|
274
|
+
pitch_radians: The (lower, upper) limits for the pitch.
|
275
|
+
yaw_radians: The (lower, upper) limits for the yaw.
|
276
|
+
|
277
|
+
Returns:
|
278
|
+
A SO3 within the RPY limits.
|
279
|
+
"""
|
280
|
+
return SO3.from_rpy_radians(
|
281
|
+
roll=np.clip(self.compute_roll_radians(), *roll_radians),
|
282
|
+
pitch=np.clip(self.compute_pitch_radians(), *pitch_radians),
|
283
|
+
yaw=np.clip(self.compute_yaw_radians(), *yaw_radians),
|
284
|
+
)
|
@@ -206,7 +206,7 @@ class CollisionAvoidanceLimit(Limit):
|
|
206
206
|
jac = compute_contact_normal_jacobian(
|
207
207
|
self.model, configuration.data, contact
|
208
208
|
)
|
209
|
-
coefficient_matrix[idx] = -jac
|
209
|
+
coefficient_matrix[idx] = -np.sign(hi_bound_dist) * jac
|
210
210
|
return Constraint(G=coefficient_matrix, h=upper_bound)
|
211
211
|
|
212
212
|
# Private methods.
|
mink/solve_ik.py
CHANGED
@@ -6,6 +6,7 @@ import numpy as np
|
|
6
6
|
import qpsolvers
|
7
7
|
|
8
8
|
from .configuration import Configuration
|
9
|
+
from .exceptions import NoSolutionFound
|
9
10
|
from .limits import ConfigurationLimit, Limit
|
10
11
|
from .tasks import BaseTask, Objective
|
11
12
|
|
@@ -47,7 +48,18 @@ def build_ik(
|
|
47
48
|
damping: float = 1e-12,
|
48
49
|
limits: Optional[Sequence[Limit]] = None,
|
49
50
|
) -> qpsolvers.Problem:
|
50
|
-
"""Build quadratic program
|
51
|
+
r"""Build the quadratic program given the current configuration and tasks.
|
52
|
+
|
53
|
+
The quadratic program is defined as:
|
54
|
+
|
55
|
+
.. math::
|
56
|
+
|
57
|
+
\begin{align*}
|
58
|
+
\min_{\Delta q} & \frac{1}{2} \Delta q^T H \Delta q + c^T \Delta q \\
|
59
|
+
\text{s.t.} \quad & G \Delta q \leq h
|
60
|
+
\end{align*}
|
61
|
+
|
62
|
+
where :math:`\Delta q = v / dt` is the vector of joint displacements.
|
51
63
|
|
52
64
|
Args:
|
53
65
|
configuration: Robot configuration.
|
@@ -77,7 +89,7 @@ def solve_ik(
|
|
77
89
|
limits: Optional[Sequence[Limit]] = None,
|
78
90
|
**kwargs,
|
79
91
|
) -> np.ndarray:
|
80
|
-
"""Solve the differential inverse kinematics problem.
|
92
|
+
r"""Solve the differential inverse kinematics problem.
|
81
93
|
|
82
94
|
Computes a velocity tangent to the current robot configuration. The computed
|
83
95
|
velocity satisfies at (weighted) best the set of provided kinematic tasks.
|
@@ -97,13 +109,20 @@ def solve_ik(
|
|
97
109
|
defaults to a configuration limit.
|
98
110
|
kwargs: Keyword arguments to forward to the backend QP solver.
|
99
111
|
|
112
|
+
Raises:
|
113
|
+
NotWithinConfigurationLimits: If the current configuration is outside
|
114
|
+
the joint limits and `safety_break` is True.
|
115
|
+
NoSolutionFound: If the QP solver fails to find a solution.
|
116
|
+
|
100
117
|
Returns:
|
101
|
-
Velocity
|
118
|
+
Velocity :math:`v` in tangent space.
|
102
119
|
"""
|
103
120
|
configuration.check_limits(safety_break=safety_break)
|
104
121
|
problem = build_ik(configuration, tasks, dt, damping, limits)
|
105
122
|
result = qpsolvers.solve_problem(problem, solver=solver, **kwargs)
|
106
|
-
|
107
|
-
|
108
|
-
|
123
|
+
if not result.found:
|
124
|
+
raise NoSolutionFound(solver)
|
125
|
+
delta_q = result.x
|
126
|
+
assert delta_q is not None
|
127
|
+
v: np.ndarray = delta_q / dt
|
109
128
|
return v
|
mink/tasks/com_task.py
CHANGED
@@ -49,6 +49,12 @@ class ComTask(Task):
|
|
49
49
|
self.set_cost(cost)
|
50
50
|
|
51
51
|
def set_cost(self, cost: npt.ArrayLike) -> None:
|
52
|
+
"""Set the cost of the CoM task.
|
53
|
+
|
54
|
+
Args:
|
55
|
+
cost: A vector of shape (1,) (aka identical cost for all coordinates),
|
56
|
+
or (3,) (aka different costs for each coordinate).
|
57
|
+
"""
|
52
58
|
cost = np.atleast_1d(cost)
|
53
59
|
if cost.ndim != 1 or cost.shape[0] not in (1, self.k):
|
54
60
|
raise TaskDefinitionError(
|
@@ -64,7 +70,8 @@ class ComTask(Task):
|
|
64
70
|
"""Set the target CoM position in the world frame.
|
65
71
|
|
66
72
|
Args:
|
67
|
-
target_com:
|
73
|
+
target_com: A vector of shape (3,) representing the desired
|
74
|
+
center-of-mass position in the world frame.
|
68
75
|
"""
|
69
76
|
target_com = np.atleast_1d(target_com)
|
70
77
|
if target_com.ndim != 1 or target_com.shape[0] != (self.k):
|
mink/tasks/damping_task.py
CHANGED
@@ -11,26 +11,26 @@ from .posture_task import PostureTask
|
|
11
11
|
class DampingTask(PostureTask):
|
12
12
|
r"""L2-regularization on joint velocities (a.k.a. *velocity damping*).
|
13
13
|
|
14
|
-
This
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
This task, typically used with a low priority in the task stack, adds a
|
15
|
+
Levenberg-Marquardt term to the quadratic program, favoring **minimum-norm
|
16
|
+
joint velocities** in redundant or near-singular situations. Formally, it
|
17
|
+
contributes the following term to the quadratic program:
|
18
18
|
|
19
19
|
.. math::
|
20
20
|
\frac{1}{2}\,\Delta \mathbf{q}^\top \Lambda\,\Delta \mathbf{q},
|
21
21
|
|
22
22
|
where :math:`\Delta \mathbf{q}\in\mathbb{R}^{n_v}` is the vector of joint
|
23
23
|
displacements and :math:`\Lambda = \mathrm{diag}(\lambda_1, \ldots, \lambda_{n_v})`
|
24
|
-
is a diagonal matrix of per-DoF weights
|
25
|
-
:math:`\lambda_i` reduces motion in DoF :math:`i
|
26
|
-
tasks the robot remains at rest.
|
27
|
-
|
28
|
-
|
29
|
-
motion. If you need a posture bias, use an explicit :class:`~.PostureTask`.
|
24
|
+
is a diagonal matrix of per-DoF damping weights specified via ``cost``. A larger
|
25
|
+
:math:`\lambda_i` reduces motion in DoF :math:`i`. With no other active
|
26
|
+
tasks, the robot remains at rest. Unlike the `damping` parameter in
|
27
|
+
:func:`~.solve_ik`, which is uniformly applied to all DoFs, this task does
|
28
|
+
not affect the floating-base coordinates.
|
30
29
|
|
31
30
|
.. note::
|
32
31
|
|
33
|
-
|
32
|
+
This task does not favor a particular posture, only small instantaneous motion.
|
33
|
+
If you need a posture bias, use :class:`~.PostureTask` instead.
|
34
34
|
|
35
35
|
Example:
|
36
36
|
|
@@ -53,7 +53,7 @@ class DampingTask(PostureTask):
|
|
53
53
|
r"""Compute the damping task error.
|
54
54
|
|
55
55
|
The damping task does not chase a reference; its desired joint velocity
|
56
|
-
is identically **zero**, so the error
|
56
|
+
is identically **zero**, so the task error is always:
|
57
57
|
|
58
58
|
.. math:: e = \mathbf 0 \in \mathbb R^{n_v}.
|
59
59
|
|
mink/tasks/frame_task.py
CHANGED
@@ -14,13 +14,13 @@ from .task import Task
|
|
14
14
|
|
15
15
|
|
16
16
|
class FrameTask(Task):
|
17
|
-
"""Regulate the position and orientation of a frame
|
17
|
+
"""Regulate the position and orientation of a frame of interest on the robot.
|
18
18
|
|
19
19
|
Attributes:
|
20
20
|
frame_name: Name of the frame to regulate, typically the name of body, geom
|
21
21
|
or site in the robot model.
|
22
22
|
frame_type: The frame type: `body`, `geom` or `site`.
|
23
|
-
|
23
|
+
transform_target_to_world: Target pose of the frame in the world frame.
|
24
24
|
|
25
25
|
Example:
|
26
26
|
|
@@ -12,30 +12,29 @@ from .task import BaseTask, Objective
|
|
12
12
|
|
13
13
|
|
14
14
|
class KineticEnergyRegularizationTask(BaseTask):
|
15
|
-
r"""Kinetic-energy regularization
|
15
|
+
r"""Kinetic-energy regularization.
|
16
16
|
|
17
|
-
This
|
18
|
-
|
17
|
+
This task, often used with a low priority in the task stack, penalizes the system's
|
18
|
+
kinetic energy. Formally, it contributes the following term to the quadratic
|
19
|
+
program:
|
19
20
|
|
20
21
|
.. math::
|
21
22
|
\frac{1}{2}\, \lambda\, \Delta \mathbf{q}^\top M(\mathbf{q})\,\Delta \mathbf{q},
|
22
23
|
|
23
24
|
where :math:`\Delta \mathbf{q}\in\mathbb{R}^{n_v}` is the vector of joint
|
24
|
-
displacements, :math:`M(\mathbf{q})` is the joint-space inertia matrix
|
25
|
-
|
26
|
-
strength of the regularization.
|
25
|
+
displacements, :math:`M(\mathbf{q})` is the joint-space inertia matrix, and
|
26
|
+
:math:`\lambda` is the scalar strength of the regularization.
|
27
27
|
|
28
28
|
.. note::
|
29
29
|
|
30
|
-
This task
|
31
|
-
|
32
|
-
|
30
|
+
This task can be seen as an inertia-weighted version of the
|
31
|
+
:class:`~.DampingTask`. Degrees of freedom with higher inertia will move less
|
32
|
+
for the same cost.
|
33
33
|
|
34
34
|
.. warning::
|
35
35
|
|
36
|
-
The timestep :math:`\Delta t` must be set via :meth:`set_dt`
|
37
|
-
This
|
38
|
-
a runtime error.
|
36
|
+
The integration timestep :math:`\Delta t` must be set via :meth:`set_dt`
|
37
|
+
before use. This ensures the cost is expressed in units of energy (Joules).
|
39
38
|
|
40
39
|
Example:
|
41
40
|
|
mink/tasks/posture_task.py
CHANGED
@@ -15,10 +15,10 @@ from .task import Task
|
|
15
15
|
|
16
16
|
|
17
17
|
class PostureTask(Task):
|
18
|
-
"""Regulate
|
18
|
+
"""Regulate joint angles towards a target posture.
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
Often used with a low priority in the task stack, this task acts like a regularizer,
|
21
|
+
biasing the solution toward a specific joint configuration.
|
22
22
|
|
23
23
|
Attributes:
|
24
24
|
target_q: Target configuration :math:`q^*`, of shape :math:`(n_q,)`. Units are
|
@@ -83,7 +83,8 @@ class PostureTask(Task):
|
|
83
83
|
"""Set the target posture.
|
84
84
|
|
85
85
|
Args:
|
86
|
-
target_q:
|
86
|
+
target_q: A vector of shape (nq,) representing the desired joint
|
87
|
+
configuration.
|
87
88
|
"""
|
88
89
|
target_q = np.atleast_1d(target_q)
|
89
90
|
if target_q.ndim != 1 or target_q.shape[0] != (self.nq):
|
@@ -94,7 +95,7 @@ class PostureTask(Task):
|
|
94
95
|
self.target_q = target_q.copy()
|
95
96
|
|
96
97
|
def set_target_from_configuration(self, configuration: Configuration) -> None:
|
97
|
-
"""Set the target posture from the current configuration.
|
98
|
+
"""Set the target posture by extracting it from the current configuration.
|
98
99
|
|
99
100
|
Args:
|
100
101
|
configuration: Robot configuration :math:`q`.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mink
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.13
|
4
4
|
Summary: mink: MuJoCo inverse kinematics.
|
5
5
|
Keywords: inverse,kinematics,mujoco
|
6
6
|
Author-email: Kevin Zakka <zakka@berkeley.edu>
|
@@ -59,6 +59,7 @@ Features include:
|
|
59
59
|
* Task specification in configuration or operational space;
|
60
60
|
* Limits on joint positions and velocities;
|
61
61
|
* Collision avoidance between any geom pair;
|
62
|
+
* Support for closed-chain kinematics (loop closures) via [equality constraints](https://mujoco.readthedocs.io/en/stable/computation/index.html#coequality);
|
62
63
|
* Lie group interface for rigid body transformations.
|
63
64
|
|
64
65
|
For usage and API reference, see the [documentation](https://kevinzakka.github.io/mink/).
|
@@ -1,9 +1,9 @@
|
|
1
|
-
mink/__init__.py,sha256=
|
2
|
-
mink/configuration.py,sha256=
|
1
|
+
mink/__init__.py,sha256=511PwU7HxnllhOlVaHDF5FtSvx7NzohzYw-KkUWOh9M,2285
|
2
|
+
mink/configuration.py,sha256=QGh99QRVJ4sUEj0rSjz6oJBk05_VAHACWCop2wPe_fI,10136
|
3
3
|
mink/constants.py,sha256=hcWy4zM4hGI7vvJrTmCjJgs2WtOxKJ1IVtYHucWbOAI,813
|
4
|
-
mink/exceptions.py,sha256
|
4
|
+
mink/exceptions.py,sha256=-O4mlcOqLgwTfMG-qmWl35hCPnhiPAufr3ioxMD1yWA,4255
|
5
5
|
mink/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
mink/solve_ik.py,sha256=
|
6
|
+
mink/solve_ik.py,sha256=ZP_z4kiPaa_77PO7hQfRlO6nX5Y4B4qrfzUfR8I1ruU,4622
|
7
7
|
mink/utils.py,sha256=Eok-pr8xR4LjmjEDEOtD7pvZPDCk53K9gWGdth8TxOA,5329
|
8
8
|
mink/.mypy_cache/.gitignore,sha256=amnaZw0RUw038PDP3HvtMLeOpkNOJPenMgi5guKdMiw,34
|
9
9
|
mink/.mypy_cache/CACHEDIR.TAG,sha256=8cE6_FVTWMkDOw8fMKqhd_6IvaQPS4okWYQA1UeHatw,190
|
@@ -333,24 +333,24 @@ mink/contrib/keyboard_teleop/keycodes.py,sha256=1AN3bWpkw99ZjrkIQnu8QdHSz-_boWMY
|
|
333
333
|
mink/contrib/keyboard_teleop/teleop_mocap.py,sha256=2cuauiBHsQb6IVruRbGtCumdHQazEGvt9w2L50eKGzw,8095
|
334
334
|
mink/lie/__init__.py,sha256=7tm3ZFnF3o1SDd9MOFO1In13lHMQJHO0FB-ejI6tsgE,202
|
335
335
|
mink/lie/base.py,sha256=8TGWWEWRvmoBsJP-9y1YXQHkTC-TFfI8JDvBFKxxP-A,4865
|
336
|
-
mink/lie/se3.py,sha256=
|
337
|
-
mink/lie/so3.py,sha256=
|
336
|
+
mink/lie/se3.py,sha256=0nrhSE0zgacRBDGDryGTRNLVd9mff-WU4qmBlK6cbdE,10069
|
337
|
+
mink/lie/so3.py,sha256=3zmuO31DRXspmBBbD8bOlxYXrb3SZWPg72L_Es1aEYs,9246
|
338
338
|
mink/lie/utils.py,sha256=DuEl3pj84daLvMKN84-YBvkXnJfqvc5vpvJ9J-pJ11U,403
|
339
339
|
mink/limits/__init__.py,sha256=-ijdhSGfMRVE1o1pJ-3qTSsSNIIVxhdk2Z511_UzjzU,343
|
340
|
-
mink/limits/collision_avoidance_limit.py,sha256=
|
340
|
+
mink/limits/collision_avoidance_limit.py,sha256=ETbtG-99rY9eBd_wb3K2PTqi8GMPmjPA-ZG0MY9x5kc,11943
|
341
341
|
mink/limits/configuration_limit.py,sha256=y_1mWbEeuprjcuAgJnFOKdWNI-KqxTPA9X0pW9MF9zQ,4377
|
342
342
|
mink/limits/limit.py,sha256=65K4clGFCPxa3TScGaLhYe1rVYgmJnkMnsFg6DCGjI4,1529
|
343
343
|
mink/limits/velocity_limit.py,sha256=drb5tyOymUb_erlghfH7pAZEzfirfvsII1IPrUahSS4,3745
|
344
344
|
mink/tasks/__init__.py,sha256=W-wUUrjbnUO17YQpP8Bodm-8p5GJfwTCALS58AroH5Y,624
|
345
|
-
mink/tasks/com_task.py,sha256=
|
346
|
-
mink/tasks/damping_task.py,sha256=
|
345
|
+
mink/tasks/com_task.py,sha256=JZoRYiT0F1GObIW8V8gEYELUTpOa681HsrFljvp6heU,5768
|
346
|
+
mink/tasks/damping_task.py,sha256=evjHJNibPj8D3Uq3GXuTuGLC03fjeVk8oYBmZm5jtRM,2407
|
347
347
|
mink/tasks/equality_constraint_task.py,sha256=ICC_vN2LB6Sv3T3QxCmbVwQNvhmjtDVaB7-a-PYUNS4,9509
|
348
|
-
mink/tasks/frame_task.py,sha256=
|
349
|
-
mink/tasks/kinetic_energy_regularization_task.py,sha256=
|
350
|
-
mink/tasks/posture_task.py,sha256=
|
348
|
+
mink/tasks/frame_task.py,sha256=2Zd7Sts5C_eGGJ64XYQZ4uZNYvS2PFm347uqSb_Y6Lc,5962
|
349
|
+
mink/tasks/kinetic_energy_regularization_task.py,sha256=VpAVA4fpDAZNY96Gx7R2Nim-CDj665sXk0FkfINb00g,2544
|
350
|
+
mink/tasks/posture_task.py,sha256=14xFUk02ar14gAMUtKr-ZhGDjylcZkCNYUXSFcM7g4A,4643
|
351
351
|
mink/tasks/relative_frame_task.py,sha256=Bu9vBBqzhLKZyBPj1Xc0b69dAa1twkzeLknZDVcRmoA,5120
|
352
352
|
mink/tasks/task.py,sha256=BXz17rL_KXiGBrS_5ITqMj2dQXzoQMUUN3xXfGGtJRA,5319
|
353
|
-
mink-0.0.
|
354
|
-
mink-0.0.
|
355
|
-
mink-0.0.
|
356
|
-
mink-0.0.
|
353
|
+
mink-0.0.13.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
354
|
+
mink-0.0.13.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
355
|
+
mink-0.0.13.dist-info/METADATA,sha256=Pi6Uu9f5FSoj9L2uoq8Z_yO9pNTqKaY9xg-fwatAYpg,5758
|
356
|
+
mink-0.0.13.dist-info/RECORD,,
|
File without changes
|
File without changes
|