8 from dynamic_graph.sot.dynamic_pinocchio
import DynamicPinocchio
9 from dynamic_graph.sot.dynamic_pinocchio.humanoid_robot
import AbstractHumanoidRobot
11 from example_robot_data
import load_full
14 class Robot(AbstractHumanoidRobot):
15 def __init__(self, name, urdfString=None, urdfFile=None):
16 if urdfString
is not None:
17 self.loadModelFromString(urdfString)
18 elif urdfFile
is not None:
19 self.loadModelFromUrdf(urdfFile)
21 raise RuntimeError(
"You should provide either a URDF file or a URDF string")
23 AbstractHumanoidRobot.__init__(self, name,
None)
29 class HumanoidRobotTest(unittest.TestCase):
32 _, _, urdf, _ = load_full(self.
name)
36 class NonInstanciableRobot(AbstractHumanoidRobot):
39 self.assertRaises(TypeError, NonInstanciableRobot,
"non_instanciable_robot")
43 urdfString = urdf.read()
44 arobot =
Robot(
"test_build_robot_from_string", urdfString=urdfString)
47 arobot.dynamic = DynamicPinocchio(self.
name +
"_dynamic")
48 arobot.dynamic.setModel(arobot.pinocchioModel)
49 arobot.dynamic.setData(arobot.pinocchioData)
50 arobot.dynamic.add_signals()
56 loc_lowerJl = np.array(get(arobot.dynamic.lowerJl))
57 pin_lowerJl = np.array(
58 arobot.pinocchioModel.lowerPositionLimit[
59 1 : len(arobot.pinocchioModel.lowerPositionLimit)
63 for i
in range(0, len(loc_lowerJl), 1):
64 if not loc_lowerJl[i] == pin_lowerJl[i]:
65 self.assertTrue(
False,
"lowerJl is not working")
71 if __name__ ==
"__main__":