lambdas.py
Go to the documentation of this file.
1 #
2 # Copyright (c) 2016 CNRS
3 #
4 
5 import numpy as np
6 from pinocchio import Motion, Force, skew
7 from pinocchio.utils import zero
8 
9 
10 def jFromIdx(idxv, robot):
11  """Return the joint index from the velocity index"""
12  for j in range(1, robot.model.njoint):
13  if idxv in range(
14  robot.model.joints[j].idx_v,
15  robot.model.joints[j].idx_v + robot.model.joints[j].nv,
16  ):
17  return j
18 
19 
20 parent = lambda i, robot: robot.model.parents[i]
21 iv = lambda i, robot: list(
22  range(
23  robot.model.joints[i].idx_v,
24  robot.model.joints[i].idx_v + robot.model.joints[i].nv,
25  )
26 )
27 ancestors = (
28  lambda j, robot, res=[]: res
29  if j == 0
30  else ancestors(
31  robot.model.parents[j],
32  robot,
33  [
34  j,
35  ]
36  + res,
37  )
38 )
39 
40 
41 class ancestorOf:
42  def __init__(self, i, robot):
43  self.dec = i
44  self.robot = robot
45 
46  def __contains__(self, anc):
47  dec = self.dec
48  while dec > 0:
49  if anc == dec:
50  return True
51  else:
52  dec = self.robot.model.parents[dec]
53 
54 
55 # descendants = lambda root,robot: filter( lambda i: root in ancestorOf(i,robot), range(root,robot.model.njoints) )
56 descendants = lambda root, robot: robot.model.subtrees[root]
57 
58 
59 def setRobotArgs(robot):
60  ancestors.__defaults__ = (robot,) + ancestors.__defaults__
61  descendants.__defaults__ = (robot,)
62  # ancestorsOf.__init__.__defaults__ = (robot,)
63  iv.__defaults__ = (robot,)
64  parent.__defaults__ = (robot,)
65  jFromIdx.__defaults__ = (robot,)
66 
67 
68 # --- SE3 operators
69 Mcross = lambda x, y: Motion(x).cross(Motion(y)).vector
70 Mcross.__doc__ = "Motion cross product"
71 
72 Fcross = lambda x, y: Motion(x).cross(Force(y)).vector
73 Fcross.__doc__ = "Force cross product"
74 
75 MCross = lambda V, v: np.bmat([Mcross(V[:, i], v) for i in range(V.shape[1])])
76 FCross = lambda V, f: np.bmat([Fcross(V[:, i], f) for i in range(V.shape[1])])
77 
78 
79 adj = lambda nu: np.bmat([[skew(nu[3:]), skew(nu[:3])], [zero([3, 3]), skew(nu[3:])]])
80 adj.__doc__ = "Motion pre-cross product (ie adjoint, lie bracket operator)"
81 
82 adjdual = lambda nu: np.bmat(
83  [[skew(nu[3:]), zero([3, 3])], [skew(nu[:3]), skew(nu[3:])]]
84 )
85 adjdual.__doc__ = "Force pre-cross product adjdual(a) = -adj(a)' "
86 
87 td = np.tensordot
88 quad = lambda H, v: np.array(td(td(H, v, [2, 0]), v, [1, 0]))
89 quad.__doc__ = """Tensor product v'*H*v, with H.shape = [ nop, nv, nv ]"""
90 
91 
92 def np_prettyprint(sarg="{: 0.5f}", eps=5e-7):
93  mformat = (
94  lambda x, sarg=sarg, eps=eps: sarg.format(x) if abs(x) > eps else " 0. "
95  )
96  np.set_printoptions(formatter={"float": mformat})
lambdas.ancestors
tuple ancestors
Definition: lambdas.py:27
pinocchio::python::context::Force
ForceTpl< Scalar, Options > Force
Definition: bindings/python/context/generic.hpp:55
pinocchio::python::context::Motion
MotionTpl< Scalar, Options > Motion
Definition: bindings/python/context/generic.hpp:54
lambdas.ancestorOf.__init__
def __init__(self, i, robot)
Definition: lambdas.py:42
lambdas.np_prettyprint
def np_prettyprint(sarg="{: 0.5f}", eps=5e-7)
Definition: lambdas.py:92
lambdas.Fcross
Fcross
Definition: lambdas.py:72
lambdas.ancestorOf
Definition: lambdas.py:41
pinocchio.utils
Definition: bindings/python/pinocchio/utils.py:1
lambdas.ancestorOf.__contains__
def __contains__(self, anc)
Definition: lambdas.py:46
pinocchio::python::skew
Eigen::Matrix< typename Vector3::Scalar, 3, 3, Vector3::Options > skew(const Vector3 &v)
Definition: expose-skew.cpp:19
lambdas.Mcross
Mcross
Definition: lambdas.py:69
lambdas.ancestorOf.robot
robot
Definition: lambdas.py:44
pinocchio::cross
void cross(const Eigen::MatrixBase< Vector3 > &v, const Eigen::MatrixBase< Matrix3xIn > &Min, const Eigen::MatrixBase< Matrix3xOut > &Mout)
Applies the cross product onto the columns of M.
Definition: skew.hpp:228
lambdas.jFromIdx
def jFromIdx(idxv, robot)
Definition: lambdas.py:10
lambdas.setRobotArgs
def setRobotArgs(robot)
Definition: lambdas.py:59
lambdas.td
td
Definition: lambdas.py:87
pinocchio.utils.zero
def zero(n)
Definition: bindings/python/pinocchio/utils.py:38
lambdas.ancestorOf.dec
dec
Definition: lambdas.py:43


pinocchio
Author(s):
autogenerated on Tue May 28 2024 02:41:42