2 from dynamic_graph
import plug
3 from dynamic_graph.sot.core
import SOT
4 from dynamic_graph.sot.core.meta_tasks_kine
import (
11 create_joint_admittance_controller,
13 from dynamic_graph.sot_talos_balance.meta_task_joint
import MetaTaskKineJoint
16 N_CONFIG = N_JOINTS + 6
18 robot.timeStep = robot.device.getTimeStep()
27 robot.taskJoint = MetaTaskKineJoint(robot.dynamic, QJOINT)
28 robot.taskJoint.featureDes.errorIN.value = [0.0]
29 robot.taskJoint.task.controlGain.value = 0
30 robot.taskJoint.task.setWithDerivative(
True)
35 plug(robot.admittance_control.qRef, robot.taskJoint.featureDes.errorIN)
36 plug(robot.admittance_control.dqRef, robot.taskJoint.featureDes.errordotIN)
40 robot.contactLF = MetaTaskKine6d(
41 "contactLF", robot.dynamic,
"LF", robot.OperationalPointsMap[
"left-ankle"]
43 robot.contactLF.feature.frame(
"desired")
44 robot.contactLF.gain.setConstant(100)
45 robot.contactLF.keep()
46 locals()[
"contactLF"] = robot.contactLF
48 robot.contactRF = MetaTaskKine6d(
49 "contactRF", robot.dynamic,
"RF", robot.OperationalPointsMap[
"right-ankle"]
51 robot.contactRF.feature.frame(
"desired")
52 robot.contactRF.gain.setConstant(100)
53 robot.contactRF.keep()
54 locals()[
"contactRF"] = robot.contactRF
56 robot.sot = SOT(
"sot")
57 robot.sot.setSize(robot.dynamic.getDimension())
58 plug(robot.sot.control, robot.device.control)
60 robot.sot.push(robot.contactRF.task.name)
61 robot.sot.push(robot.contactLF.task.name)
62 robot.device.control.recompute(0)