bindings/python/pinocchio/utils.py
Go to the documentation of this file.
1 #
2 # Copyright (c) 2015-2022 CNRS INRIA
3 #
4 
5 from __future__ import print_function, division
6 
7 import sys
8 
9 import numpy as np
10 import numpy.linalg as npl
11 
12 from . import pinocchio_pywrap_default as pin
13 from .pinocchio_pywrap_default.rpy import matrixToRpy, rpyToMatrix, rotate
14 
15 
16 def npToTTuple(M):
17  L = M.tolist()
18  for i in range(len(L)):
19  L[i] = tuple(L[i])
20  return tuple(L)
21 
22 
23 def npToTuple(M):
24  if len(M.shape) == 1:
25  return tuple(M.tolist())
26  if M.shape[0] == 1:
27  return tuple(M.tolist()[0])
28  if M.shape[1] == 1:
29  return tuple(M.T.tolist()[0])
30  return npToTTuple(M)
31 
32 
33 def eye(n):
34  res = np.eye(n)
35  return res
36 
37 
38 def zero(n):
39  return np.zeros(n)
40 
41 
42 def rand(n):
43  return np.random.rand(n) if isinstance(n, int) else np.random.rand(n[0], n[1])
44 
45 
46 def isapprox(a, b, epsilon=1e-6):
47  if "np" in a.__class__.__dict__:
48  a = a.np
49  if "np" in b.__class__.__dict__:
50  b = b.np
51  if isinstance(a, (np.ndarray, list)) and isinstance(b, (np.ndarray, list)):
52  a = np.squeeze(np.array(a))
53  b = np.squeeze(np.array(b))
54  return np.allclose(a, b, epsilon)
55  return abs(a - b) < epsilon
56 
57 
58 def mprint(M, name="ans", eps=1e-15):
59  """
60  Matlab-style pretty matrix print.
61  """
62  if isinstance(M, pin.SE3):
63  M = M.homogeneous
64  if len(M.shape) == 1:
65  M = np.expand_dims(M, axis=0)
66  ncol = M.shape[1]
67  NC = 6
68  print(name, " = ")
69  print()
70 
71  Mmin = lambda M: M.min()
72  Mmax = lambda M: M.max()
73  Mm = Mmin(abs(M[np.nonzero(M)]))
74  MM = Mmax(abs(M[np.nonzero(M)]))
75 
76  fmt = "% 10.3e" if Mm < 1e-5 or MM > 1e6 or MM / Mm > 1e3 else "% 1.5f"
77 
78  for i in range((ncol - 1) // NC + 1):
79  cmin = i * 6
80  cmax = (i + 1) * 6
81  cmax = ncol if ncol < cmax else cmax
82  print("Columns %s through %s" % (cmin, cmax - 1))
83  print()
84  for r in range(M.shape[0]):
85  sys.stdout.write(" ")
86  for c in range(cmin, cmax):
87  if abs(M[r, c]) > eps:
88  sys.stdout.write(fmt % M[r, c] + " ")
89  else:
90  sys.stdout.write(" 0" + " " * 9)
91  print()
92  print()
93 
94 
96  vector = pin.StdVec_StdString()
97  vector.extend(item for item in items)
98  return vector
99 
100 
101 __all__ = [
102  "np",
103  "npl",
104  "eye",
105  "zero",
106  "rand",
107  "isapprox",
108  "mprint",
109  "npToTTuple",
110  "npToTuple",
111  "rotate",
112  "rpyToMatrix",
113  "matrixToRpy",
114  "fromListToVectorOfString",
115 ]
pinocchio.utils.fromListToVectorOfString
def fromListToVectorOfString(items)
Definition: bindings/python/pinocchio/utils.py:95
pinocchio.utils.npToTTuple
def npToTTuple(M)
Definition: bindings/python/pinocchio/utils.py:16
pinocchio.utils.isapprox
def isapprox(a, b, epsilon=1e-6)
Definition: bindings/python/pinocchio/utils.py:46
pinocchio.utils.mprint
def mprint(M, name="ans", eps=1e-15)
Definition: bindings/python/pinocchio/utils.py:58
pinocchio.utils.eye
def eye(n)
Definition: bindings/python/pinocchio/utils.py:33
pinocchio.utils.npToTuple
def npToTuple(M)
Definition: bindings/python/pinocchio/utils.py:23
pinocchio.utils.rand
def rand(n)
Definition: bindings/python/pinocchio/utils.py:42
pinocchio.utils.zero
def zero(n)
Definition: bindings/python/pinocchio/utils.py:38


pinocchio
Author(s):
autogenerated on Fri Jun 7 2024 02:40:50