sot-talos-balance  2.0.5
Collection of dynamic-graph entities aimed at implementing balance control on talos.
meta_task_pose.py
Go to the documentation of this file.
1 from dynamic_graph import plug
2 from dynamic_graph.sot.core import GainAdaptive, Task
3 from dynamic_graph.sot.core.feature_pose import FeaturePose
4 
5 
6 class MetaTaskPose(object):
7  def opPointExist(self, opPoint):
8  sigsP = filter(
9  lambda x: x.getName().split(":")[-1] == opPoint, self.dyndyn.signals()
10  )
11  sigsJ = filter(
12  lambda x: x.getName().split(":")[-1] == "J" + opPoint, self.dyndyn.signals()
13  )
14  return len(sigsP) == 1 & len(sigsJ) == 1
15 
16  def defineDynEntities(self, dyn):
17  self.dyndyn = dyn
18 
19  def createOpPoint(self, opPoint, opPointRef="right-wrist"):
20  self.opPointopPoint = opPoint
21  if self.opPointExistopPointExist(opPoint):
22  return
23  self.dyndyn.createOpPoint(opPoint, opPointRef)
24 
25  def createFeature(self):
26  self.featurefeature = FeaturePose("feature" + self.namename)
27  self.featurefeature.selec.value = "111111"
28 
29  def createTask(self):
30  self.tasktask = Task("task" + self.namename)
31 
32  def createGain(self):
33  self.gaingain = GainAdaptive("gain" + self.namename)
34  self.gaingain.set(0.1, 0.1, 125e3)
35 
36  def plugEverything(self):
37  plug(self.dyndyn.signal(self.opPointopPoint), self.featurefeature.oMjb)
38  plug(self.dyndyn.signal("J" + self.opPointopPoint), self.featurefeature.jbJjb)
39  self.tasktask.add(self.featurefeature.name)
40  plug(self.tasktask.error, self.gaingain.error)
41  plug(self.gaingain.gain, self.tasktask.controlGain)
42 
43  def keep(self):
44  self.featurefeature.faMfb.recompute(self.dyndyn.position.time)
45  self.featurefeature.faMfbDes.value = self.featurefeature.faMfb.value
46 
47  def __init__(self, name, dyn, opPoint, opPointRef="right-wrist"):
48  self.namename = name
49  self.defineDynEntitiesdefineDynEntities(dyn)
50  self.createOpPointcreateOpPoint(opPoint, opPointRef)
51  self.createFeaturecreateFeature()
52  self.createTaskcreateTask()
53  self.createGaincreateGain()
54  self.plugEverythingplugEverything()
55 
56  @property
57  def ref(self):
58  return self.featurefeature.faMfbDes.value
59 
60  @ref.setter
61  def ref(self, m):
62  self.featurefeature.faMfbDes.value = m
def createOpPoint(self, opPoint, opPointRef="right-wrist")
def __init__(self, name, dyn, opPoint, opPointRef="right-wrist")