9 import pinocchio
as pin
20 from dynamic_graph
import plug
27 from dynamic_graph.sot.core.sot
import SOT
28 from dynamic_graph.sot.dynamic_pinocchio
import fromSotToPinocchio
29 from dynamic_graph.sot.dynamic_pinocchio.humanoid_robot
import HumanoidRobot
35 urdfPath =
"/PATH/TO/talos-data/robots/talos_full_collision.urdf"
36 urdfDir = [
"/PATH/TO/talos-data"]
38 OperationalPointsMap = {
39 "left-wrist":
"arm_left_7_joint",
40 "right-wrist":
"arm_right_7_joint",
41 "left-ankle":
"leg_left_5_joint",
42 "right-ankle":
"leg_right_5_joint",
43 "gaze":
"head_2_joint",
44 "waist":
"root_joint",
45 "chest":
"torso_2_joint",
104 pinocchioRobot =
RobotWrapper(urdfPath, urdfDir, pin.JointModelFreeFlyer())
106 pinocchioRobot.initDisplay(loadModel=
True)
109 robot = HumanoidRobot(
111 pinocchioRobot.model,
114 OperationalPointsMap,
118 sot.setSize(robot.dynamic.getDimension())
119 plug(sot.control, robot.device.control)
124 taskRH = MetaTaskKine6d(
125 "rh", robot.dynamic,
"rh", robot.OperationalPointsMap[
"right-wrist"]
128 handMgrip[0:3, 3] = (0.1, 0, 0)
129 taskRH.opmodif = matrixToTuple(handMgrip)
130 taskRH.feature.frame(
"desired")
133 robot.dynamic.com.recompute(0)
134 taskCom.featureDes.errorIN.value = robot.dynamic.com.value
135 taskCom.task.controlGain.value = 10
140 [
"LF", robot.OperationalPointsMap[
"left-ankle"]],
141 [
"RF", robot.OperationalPointsMap[
"right-ankle"]],
143 contact = MetaTaskKine6d(
"contact" + name, robot.dynamic, name, joint)
144 contact.feature.frame(
"desired")
145 contact.gain.setConstant(10)
147 locals()[
"contact" + name] = contact
149 target = (0.5, -0.2, 1.0)
154 gotoNd(taskRH, target,
"111", (4.9, 0.9, 0.01, 0.9))
155 sot.push(contactRF.task.name)
156 sot.push(contactLF.task.name)
157 sot.push(taskCom.task.name)
158 sot.push(taskRH.task.name)
167 robot.device.increment(dt)