contact-cholesky.py
Go to the documentation of this file.
1 import pinocchio as pin
2 import numpy as np
3 
4 from numpy.linalg import norm, inv
5 from os.path import join, dirname, abspath
6 from math import sqrt
7 
8 pinocchio_model_dir = join(dirname(dirname(str(abspath(__file__)))), "models")
9 urdf_filename = (
10  pinocchio_model_dir
11  + "/example-robot-data/robots/anymal_b_simple_description/robots/anymal.urdf"
12 )
13 model = pin.buildModelFromUrdf(urdf_filename)
14 data = model.createData()
15 
16 q0 = pin.neutral(model)
17 
18 # Add feet frames
19 feet_names = ["LH_FOOT", "RH_FOOT", "LF_FOOT", "RF_FOOT"]
20 feet_frame_ids = []
21 for foot_name in feet_names:
22  frame_id = model.getFrameId(foot_name)
23  feet_frame_ids.append(frame_id)
24 
25 contact_models = []
26 for fid in feet_frame_ids:
27  frame = model.frames[fid]
28  cmodel = pin.RigidConstraintModel(
29  pin.ContactType.CONTACT_3D,
30  frame.parent,
31  frame.placement,
32  pin.LOCAL_WORLD_ALIGNED,
33  )
34  contact_models.append(cmodel)
35 
36 contact_data = [cmodel.createData() for cmodel in contact_models]
37 
38 pin.initConstraintDynamics(model, data, contact_models)
39 pin.crba(model, data, q0)
40 
41 data.contact_chol.compute(model, data, contact_models, contact_data)
42 
43 delassus_matrix = data.contact_chol.getInverseOperationalSpaceInertiaMatrix()
44 delassus_matrix_inv = data.contact_chol.getOperationalSpaceInertiaMatrix()
path


pinocchio
Author(s):
autogenerated on Wed Jun 19 2024 02:41:12