7 import pinocchio
as pin
12 geom_model = pin.GeometryModel()
15 joint_placement = pin.SE3.Identity()
19 shape0 = fcl.Sphere(body_radius)
20 geom0_obj = pin.GeometryObject(
"base", 0, pin.SE3.Identity(), shape0)
21 geom0_obj.meshColor = np.array([1.0, 0.1, 0.1, 1.0])
22 geom_model.addGeometryObject(geom0_obj)
25 joint_name =
"joint_" + str(k + 1)
26 joint_id = model.addJoint(
27 parent_id, pin.JointModelRY(), joint_placement, joint_name
30 body_inertia = pin.Inertia.FromSphere(body_mass, body_radius)
31 body_placement = joint_placement.copy()
32 body_placement.translation[2] = 1.0
33 model.appendBodyToJoint(joint_id, body_inertia, body_placement)
35 geom1_name =
"ball_" + str(k + 1)
36 shape1 = fcl.Sphere(body_radius)
37 geom1_obj = pin.GeometryObject(geom1_name, joint_id, body_placement, shape1)
38 geom1_obj.meshColor = np.ones(4)
39 geom_model.addGeometryObject(geom1_obj)
41 geom2_name =
"bar_" + str(k + 1)
42 shape2 = fcl.Cylinder(body_radius / 4.0, body_placement.translation[2])
43 shape2_placement = body_placement.copy()
44 shape2_placement.translation[2] /= 2.0
46 geom2_obj = pin.GeometryObject(geom2_name, joint_id, shape2_placement, shape2)
47 geom2_obj.meshColor = np.array([0.0, 0.0, 0.0, 1.0])
48 geom_model.addGeometryObject(geom2_obj)
51 joint_placement = body_placement.copy()
54 visual_model = geom_model
60 except ImportError
as err:
62 "Error while initializing the viewer. "
63 "It seems you should install gepetto-viewer"
69 viz.loadViewerModel(
"pinocchio")
70 except AttributeError
as err:
72 "Error while loading the viewer model. "
73 "It seems you should start gepetto-viewer"
79 q0 = pin.neutral(model)
86 N = math.floor(T / dt)
88 model.lowerPositionLimit.fill(-math.pi)
89 model.upperPositionLimit.fill(+math.pi)
90 q = pin.randomConfiguration(model)
91 v = np.zeros(model.nv)
94 data_sim = model.createData()
96 tau_control = np.zeros(model.nv)
97 a = pin.aba(model, data_sim, q, v, tau_control)
101 q = pin.integrate(model, q, v * dt)