sot-talos-balance  2.0.5
Collection of dynamic-graph entities aimed at implementing balance control on talos.
meta_task_joint.py
Go to the documentation of this file.
1 from dynamic_graph import plug
2 from dynamic_graph.sot.core import FeatureGeneric, GainAdaptive, Task
3 from dynamic_graph.sot.core.matrix_util import matrixToTuple
4 from dynamic_graph.sot.core.operator import Selec_of_vector
5 from numpy import identity
6 
7 
8 class MetaTaskJoint(object):
9  def __init__(self, dyn, joint, name=None):
10  if name is None:
11  name = "joint" + str(joint)
12  self.dyndyn = dyn
13  self.namename = name
14  self.jointjoint = joint
15 
16  self.featurefeature = FeatureGeneric("feature" + name)
17  self.featureDesfeatureDes = FeatureGeneric("featureDes" + name)
18  self.gaingain = GainAdaptive("gain" + name)
19 
20  self.selecselec = Selec_of_vector("selec" + name)
21  self.selecselec.selec(joint, joint + 1)
22  plug(dyn.position, self.selecselec.sin)
23  plug(self.selecselec.sout, self.featurefeature.errorIN)
24 
25  robotDim = len(dyn.position.value)
26  Id = identity(robotDim)
27  J = Id[joint : joint + 1]
28  self.featurefeature.jacobianIN.value = matrixToTuple(J)
29  self.featurefeature.setReference(self.featureDesfeatureDes.name)
30 
31  def plugTask(self):
32  self.task.add(self.featurefeature.name)
33  plug(self.task.error, self.gaingain.error)
34  plug(self.gaingain.gain, self.task.controlGain)
35 
36  @property
37  def ref(self):
38  return self.featureDesfeatureDes.errorIN.value
39 
40  @ref.setter
41  def ref(self, v):
42  self.featureDesfeatureDes.errorIN.value = v
43 
44 
46  def __init__(self, dyn, joint, name=None):
47  MetaTaskJoint.__init__(self, dyn, joint, name)
48  self.tasktask = Task("task" + self.namename)
49  self.plugTaskplugTask()
def __init__(self, dyn, joint, name=None)