4 from dynamic_graph
import plug
5 from dynamic_graph.sot.core
import SOT, Derivator_of_Vector
6 from dynamic_graph.sot.core.meta_tasks_kine
import (
11 from dynamic_graph.sot.dynamic_pinocchio
import DynamicPinocchio
12 from dynamic_graph.tracer_real_time
import TracerRealTime
14 import dynamic_graph.sot_talos_balance.talos.base_estimator_conf
as base_estimator_conf
15 import dynamic_graph.sot_talos_balance.talos.control_manager_conf
as cm_conf
16 import dynamic_graph.sot_talos_balance.talos.ft_calibration_conf
as ft_conf
17 import dynamic_graph.sot_talos_balance.talos.parameter_server_conf
as param_server_conf
20 robot.timeStep = robot.device.getTimeStep()
29 robotDim = robot.dynamic.getDimension()
30 mass = robot.dynamic.data.mass[0]
31 h = robot.dynamic.com.value[2]
45 e2q = EulerToQuat(
"e2q")
46 plug(robot.base_estimator.q, e2q.euler)
50 robot.rdynamic = DynamicPinocchio(
"real_dynamics")
51 robot.rdynamic.setModel(robot.dynamic.model)
52 robot.rdynamic.setData(robot.rdynamic.model.createData())
53 plug(robot.base_estimator.q, robot.rdynamic.position)
54 robot.rdynamic.velocity.value = [0.0] * robotDim
55 robot.rdynamic.acceleration.value = [0.0] * robotDim
58 cdc_estimator = DcmEstimator(
"cdc_estimator")
59 cdc_estimator.init(dt, robot_name)
60 plug(robot.e2q.quaternion, cdc_estimator.q)
61 plug(robot.base_estimator.v, cdc_estimator.v)
62 robot.cdc_estimator = cdc_estimator
65 estimator = DummyDcmEstimator(
"dummy")
66 estimator.omega.value = omega
67 estimator.mass.value = 1.0
68 plug(robot.cdc_estimator.c, estimator.com)
69 plug(robot.cdc_estimator.dc, estimator.momenta)
71 robot.estimator = estimator
77 zmp_estimator = SimpleZmpEstimator(
"zmpEst")
78 robot.rdynamic.createOpPoint(
"sole_LF",
"left_sole_link")
79 robot.rdynamic.createOpPoint(
"sole_RF",
"right_sole_link")
80 plug(robot.rdynamic.sole_LF, zmp_estimator.poseLeft)
81 plug(robot.rdynamic.sole_RF, zmp_estimator.poseRight)
82 plug(robot.ftc.left_foot_force_out, zmp_estimator.wrenchLeft)
83 plug(robot.ftc.right_foot_force_out, zmp_estimator.wrenchRight)
85 robot.zmp_estimator = zmp_estimator
89 robot.cm.addCtrlMode(
"sot_input")
90 robot.cm.setCtrlMode(
"all",
"sot_input")
91 robot.cm.addEmergencyStopSIN(
"zmp")
97 robot.contactLF = MetaTaskKine6d(
98 "contactLF", robot.dynamic,
"LF", robot.OperationalPointsMap[
"left-ankle"]
100 robot.contactLF.feature.frame(
"desired")
101 robot.contactLF.gain.setConstant(100)
102 robot.contactLF.keep()
103 locals()[
"contactLF"] = robot.contactLF
105 robot.contactRF = MetaTaskKine6d(
106 "contactRF", robot.dynamic,
"RF", robot.OperationalPointsMap[
"right-ankle"]
108 robot.contactRF.feature.frame(
"desired")
109 robot.contactRF.gain.setConstant(100)
110 robot.contactRF.keep()
111 locals()[
"contactRF"] = robot.contactRF
114 robot.taskCom = MetaTaskKineCom(robot.dynamic)
115 robot.dynamic.com.recompute(0)
116 robot.taskCom.featureDes.errorIN.value = robot.dynamic.com.value
117 robot.taskCom.task.controlGain.value = 10
120 robot.sot = SOT(
"sot")
121 robot.sot.setSize(robot.dynamic.getDimension())
124 plug(robot.sot.control, robot.cm.ctrl_sot_input)
125 plug(robot.cm.u_safe, robot.device.control)
127 plug(robot.comTrajGen.x, robot.taskCom.featureDes.errorIN)
129 robot.sot.push(robot.contactRF.task.name)
130 robot.sot.push(robot.contactLF.task.name)
131 robot.sot.push(robot.taskCom.task.name)
132 robot.device.control.recompute(0)
135 plug(robot.device.velocity, robot.dynamic.velocity)
136 robot.dvdt = Derivator_of_Vector(
"dv_dt")
137 robot.dvdt.dt.value = dt
138 plug(robot.device.velocity, robot.dvdt.sin)
139 plug(robot.dvdt.sout, robot.dynamic.acceleration)
147 robot.publisher, robot.cdc_estimator,
"c", robot=robot, data_type=
"vector"
150 robot.publisher, robot.cdc_estimator,
"dc", robot=robot, data_type=
"vector"
153 robot.publisher, robot.estimator,
"dcm", robot=robot, data_type=
"vector"
157 robot.publisher, robot.zmp_estimator,
"zmp", robot=robot, data_type=
"vector"
167 robot.publisher, robot.dynamic,
"com", robot=robot, data_type=
"vector"
170 robot.publisher, robot.dynamic,
"zmp", robot=robot, data_type=
"vector"
173 robot.publisher, robot.device,
"forceLLEG", robot=robot, data_type=
"vector"
176 robot.publisher, robot.device,
"forceRLEG", robot=robot, data_type=
"vector"
186 robot.publisher, robot.ftc,
"left_foot_force_out", robot=robot, data_type=
"vector"
189 robot.publisher, robot.ftc,
"right_foot_force_out", robot=robot, data_type=
"vector"