bindings_force.py
Go to the documentation of this file.
1 import unittest
2 import pinocchio as pin
3 import numpy as np
4 from pinocchio.utils import zero, rand
5 
6 
7 class TestForceBindings(unittest.TestCase):
8  def test_zero_getters(self):
9  f = pin.Force.Zero()
10  self.assertTrue(np.allclose(zero(3), f.linear))
11  self.assertTrue(np.allclose(zero(3), f.angular))
12  self.assertTrue(np.allclose(zero(6), f.vector))
13 
14  # TODO: this is not nice, since a random vector can *in theory* be zero
15  def test_setRandom(self):
16  f = pin.Force.Zero()
17  f.setRandom()
18  self.assertFalse(np.allclose(zero(3), f.linear))
19  self.assertFalse(np.allclose(zero(3), f.angular))
20  self.assertFalse(np.allclose(zero(6), f.vector))
21 
22  def test_setZero(self):
23  f = pin.Force.Zero()
24  f.setRandom()
25  f.setZero()
26  self.assertTrue(np.allclose(zero(3), f.linear))
27  self.assertTrue(np.allclose(zero(3), f.angular))
28  self.assertTrue(np.allclose(zero(6), f.vector))
29 
30  def test_set_linear(self):
31  f = pin.Force.Zero()
32  lin = rand(3)
33  f.linear = lin
34  self.assertTrue(np.allclose(f.linear, lin))
35 
36  f.linear[1] = 1.0
37  self.assertTrue(f.linear[1] == 1.0)
38 
39  def test_set_angular(self):
40  f = pin.Force.Zero()
41  ang = rand(3)
42  f.angular = ang
43  self.assertTrue(np.allclose(f.angular, ang))
44 
45  f.angular[1] = 1.0
46  self.assertTrue(f.angular[1] == 1.0)
47 
48  def test_set_vector(self):
49  f = pin.Force.Zero()
50  vec = rand(6)
51  f.vector = vec
52  self.assertTrue(np.allclose(f.vector, vec))
53 
54  def test_internal_sums(self):
55  f1 = pin.Force.Random()
56  f2 = pin.Force.Random()
57  self.assertTrue(np.allclose((f1 + f2).vector, f1.vector + f2.vector))
58  self.assertTrue(np.allclose((f1 - f2).vector, f1.vector - f2.vector))
59 
60  def test_se3_action(self):
61  f = pin.Force.Random()
62  m = pin.SE3.Random()
63  self.assertTrue(
64  np.allclose((m * f).vector, np.linalg.inv(m.action.T).dot(f.vector))
65  )
66  self.assertTrue(
67  np.allclose(m.act(f).vector, np.linalg.inv(m.action.T).dot(f.vector))
68  )
69  self.assertTrue(np.allclose((m.actInv(f)).vector, m.action.T.dot(f.vector)))
70  v = pin.Motion(np.concatenate([f.vector[3:], f.vector[:3]]))
71  self.assertTrue(np.allclose((v ^ f).vector, zero(6)))
72 
73  def test_conversion(self):
74  f = pin.Force.Random()
75  f_array = np.array(f)
76 
77  f_from_array = pin.Force(f_array)
78 
79  self.assertTrue(f_from_array == f)
80 
81  def test_several_init(self):
82  for _ in range(100000):
83  f = pin.Force.Zero() + pin.Force.Zero()
84  self.assertTrue(np.allclose(f.vector, zero(6)))
85 
86 
87 if __name__ == "__main__":
88  unittest.main()
bindings_force.TestForceBindings
Definition: bindings_force.py:7
bindings_force.TestForceBindings.test_set_vector
def test_set_vector(self)
Definition: bindings_force.py:48
bindings_force.TestForceBindings.test_internal_sums
def test_internal_sums(self)
Definition: bindings_force.py:54
bindings_force.TestForceBindings.test_conversion
def test_conversion(self)
Definition: bindings_force.py:73
bindings_force.TestForceBindings.test_setZero
def test_setZero(self)
Definition: bindings_force.py:22
bindings_force.TestForceBindings.test_set_linear
def test_set_linear(self)
Definition: bindings_force.py:30
pinocchio.utils
Definition: bindings/python/pinocchio/utils.py:1
bindings_force.TestForceBindings.test_zero_getters
def test_zero_getters(self)
Definition: bindings_force.py:8
bindings_force.TestForceBindings.test_several_init
def test_several_init(self)
Definition: bindings_force.py:81
bindings_force.TestForceBindings.test_se3_action
def test_se3_action(self)
Definition: bindings_force.py:60
bindings_force.TestForceBindings.test_set_angular
def test_set_angular(self)
Definition: bindings_force.py:39
bindings_force.TestForceBindings.test_setRandom
def test_setRandom(self)
Definition: bindings_force.py:15
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 Sun Jun 16 2024 02:43:06