2 from dynamic_graph
import plug
3 from dynamic_graph.sot.core
import SOT, Derivator_of_Vector
4 from dynamic_graph.sot.core.meta_tasks_kine
import (
9 from dynamic_graph.tracer_real_time
import TracerRealTime
11 import dynamic_graph.sot_talos_balance.talos.control_manager_conf
as cm_conf
12 import dynamic_graph.sot_talos_balance.talos.ft_calibration_conf
as ft_conf
13 import dynamic_graph.sot_talos_balance.talos.parameter_server_conf
as param_server_conf
16 robot.timeStep = robot.device.getTimeStep()
32 plug(robot.device.forceRLEG, filters.ft_RF_filter.x)
33 plug(robot.device.forceLLEG, filters.ft_LF_filter.x)
34 robot.device_filters = filters
40 zmp_estimator = SimpleZmpEstimator(
"zmpEst")
41 robot.dynamic.createOpPoint(
"sole_LF",
"left_sole_link")
42 robot.dynamic.createOpPoint(
"sole_RF",
"right_sole_link")
43 plug(robot.dynamic.sole_LF, zmp_estimator.poseLeft)
44 plug(robot.dynamic.sole_RF, zmp_estimator.poseRight)
45 plug(robot.ftc.left_foot_force_out, zmp_estimator.wrenchLeft)
46 plug(robot.ftc.right_foot_force_out, zmp_estimator.wrenchRight)
48 robot.zmp_estimator = zmp_estimator
52 robot.cm.addCtrlMode(
"sot_input")
53 robot.cm.setCtrlMode(
"all",
"sot_input")
54 robot.cm.addEmergencyStopSIN(
"zmp")
60 robot.contactLF = MetaTaskKine6d(
61 "contactLF", robot.dynamic,
"LF", robot.OperationalPointsMap[
"left-ankle"]
63 robot.contactLF.feature.frame(
"desired")
64 robot.contactLF.gain.setConstant(100)
65 robot.contactLF.keep()
66 locals()[
"contactLF"] = robot.contactLF
68 robot.contactRF = MetaTaskKine6d(
69 "contactRF", robot.dynamic,
"RF", robot.OperationalPointsMap[
"right-ankle"]
71 robot.contactRF.feature.frame(
"desired")
72 robot.contactRF.gain.setConstant(100)
73 robot.contactRF.keep()
74 locals()[
"contactRF"] = robot.contactRF
77 robot.taskCom = MetaTaskKineCom(robot.dynamic)
78 robot.dynamic.com.recompute(0)
79 robot.taskCom.featureDes.errorIN.value = robot.dynamic.com.value
80 robot.taskCom.task.controlGain.value = 10
83 robot.sot = SOT(
"sot")
84 robot.sot.setSize(robot.dynamic.getDimension())
87 plug(robot.sot.control, robot.cm.ctrl_sot_input)
88 plug(robot.cm.u_safe, robot.device.control)
90 plug(robot.comTrajGen.x, robot.taskCom.featureDes.errorIN)
92 robot.sot.push(robot.contactRF.task.name)
93 robot.sot.push(robot.contactLF.task.name)
94 robot.sot.push(robot.taskCom.task.name)
95 robot.device.control.recompute(0)
98 plug(robot.device.velocity, robot.dynamic.velocity)
99 robot.dvdt = Derivator_of_Vector(
"dv_dt")
100 robot.dvdt.dt.value = dt
101 plug(robot.device.velocity, robot.dvdt.sin)
102 plug(robot.dvdt.sout, robot.dynamic.acceleration)
110 robot.publisher, robot.zmp_estimator,
"zmp", robot=robot, data_type=
"vector"
120 robot.publisher, robot.dynamic,
"com", robot=robot, data_type=
"vector"
123 robot.publisher, robot.dynamic,
"zmp", robot=robot, data_type=
"vector"
126 robot.publisher, robot.device,
"forceLLEG", robot=robot, data_type=
"vector"
129 robot.publisher, robot.device,
"forceRLEG", robot=robot, data_type=
"vector"
139 robot.publisher, robot.ftc,
"left_foot_force_out", robot=robot, data_type=
"vector"
142 robot.publisher, robot.ftc,
"right_foot_force_out", robot=robot, data_type=
"vector"
146 robot.tracer = TracerRealTime(
"zmp_tracer")
147 robot.tracer.setBufferSize(80 * (2**20))
148 robot.tracer.open(
"/tmp",
"dg_",
".dat")
149 robot.device.after.addSignal(
"{0}.triger".format(robot.tracer.name))
151 addTrace(robot.tracer, robot.zmp_estimator,
"zmp")
152 addTrace(robot.tracer, robot.dynamic,
"com")
153 addTrace(robot.tracer, robot.dynamic,
"zmp")
154 addTrace(robot.tracer, robot.device,
"forceLLEG")
155 addTrace(robot.tracer, robot.device,
"forceRLEG")