1 from pathlib
import Path
4 import pinocchio
as se3
12 filename = str(Path(__file__).resolve().parent)
14 path = filename +
"/../../models/romeo"
15 urdf = path +
"/urdf/romeo.urdf"
16 vector = se3.StdVec_StdString()
17 vector.extend(item
for item
in path)
18 robot = tsid.RobotWrapper(urdf, vector, se3.JointModelFreeFlyer(),
False)
25 frameName =
"RAnkleRoll"
26 contactNormal = np.zeros(3)
27 contactNormal[2] = 1.0
29 contact = tsid.ContactPoint(
30 "contactPoint", robot, frameName, contactNormal, mu, fMin, fMax
33 assert contact.n_motion == 3
34 assert contact.n_force == 3
41 assert np.linalg.norm(contact.Kp - Kp, 2) < tol
42 assert np.linalg.norm(contact.Kd - Kd, 2) < tol
44 q = model.neutralConfiguration
45 v = np.zeros(robot.nv)
46 robot.computeAllTerms(data, q, v)
48 H_ref = robot.position(data, robot.model().getJointId(frameName))
49 contact.setReference(H_ref)
52 contact.computeMotionTask(t, q, v, data)
53 forceIneq = contact.computeForceTask(t, q, v, data)
57 assert (forceIneq.matrix * f <= forceIneq.upperBound).all()
58 assert (forceIneq.matrix * f >= forceIneq.lowerBound).all()
60 forceGenMat = contact.getForceGeneratorMatrix
61 assert forceGenMat.shape[0] == 3
and forceGenMat.shape[1] == 3
62 contact.computeForceRegularizationTask(t, q, v, data)
64 print(
"All test is done")