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.dyn.signals()
10  )
11  sigsJ = filter(
12  lambda x: x.getName().split(":")[-1] == "J" + opPoint, self.dyn.signals()
13  )
14  return len(sigsP) == 1 & len(sigsJ) == 1
15 
16  def defineDynEntities(self, dyn):
17  self.dyn = dyn
18 
19  def createOpPoint(self, opPoint, opPointRef="right-wrist"):
20  self.opPoint = opPoint
21  if self.opPointExist(opPoint):
22  return
23  self.dyn.createOpPoint(opPoint, opPointRef)
24 
25  def createFeature(self):
26  self.feature = FeaturePose("feature" + self.name)
27  self.feature.selec.value = "111111"
28 
29  def createTask(self):
30  self.task = Task("task" + self.name)
31 
32  def createGain(self):
33  self.gain = GainAdaptive("gain" + self.name)
34  self.gain.set(0.1, 0.1, 125e3)
35 
36  def plugEverything(self):
37  plug(self.dyn.signal(self.opPoint), self.feature.oMjb)
38  plug(self.dyn.signal("J" + self.opPoint), self.feature.jbJjb)
39  self.task.add(self.feature.name)
40  plug(self.task.error, self.gain.error)
41  plug(self.gain.gain, self.task.controlGain)
42 
43  def keep(self):
44  self.feature.faMfb.recompute(self.dyn.position.time)
45  self.feature.faMfbDes.value = self.feature.faMfb.value
46 
47  def __init__(self, name, dyn, opPoint, opPointRef="right-wrist"):
48  self.name = name
49  self.defineDynEntities(dyn)
50  self.createOpPoint(opPoint, opPointRef)
51  self.createFeature()
52  self.createTask()
53  self.createGain()
54  self.plugEverything()
55 
56  @property
57  def ref(self):
58  return self.feature.faMfbDes.value
59 
60  @ref.setter
61  def ref(self, m):
62  self.feature.faMfbDes.value = m
sot_talos_balance.meta_task_pose.MetaTaskPose.keep
def keep(self)
Definition: meta_task_pose.py:43
sot_talos_balance.meta_task_pose.MetaTaskPose.createTask
def createTask(self)
Definition: meta_task_pose.py:29
sot_talos_balance.meta_task_pose.MetaTaskPose.opPointExist
def opPointExist(self, opPoint)
Definition: meta_task_pose.py:7
sot_talos_balance.meta_task_pose.MetaTaskPose.createGain
def createGain(self)
Definition: meta_task_pose.py:32
sot_talos_balance.meta_task_pose.MetaTaskPose.feature
feature
Definition: meta_task_pose.py:26
sot_talos_balance.meta_task_pose.MetaTaskPose.name
name
Definition: meta_task_pose.py:48
sot_talos_balance.meta_task_pose.MetaTaskPose.task
task
Definition: meta_task_pose.py:30
sot_talos_balance.meta_task_pose.MetaTaskPose.__init__
def __init__(self, name, dyn, opPoint, opPointRef="right-wrist")
Definition: meta_task_pose.py:47
sot_talos_balance.meta_task_pose.MetaTaskPose.createOpPoint
def createOpPoint(self, opPoint, opPointRef="right-wrist")
Definition: meta_task_pose.py:19
sot_talos_balance.meta_task_pose.MetaTaskPose.plugEverything
def plugEverything(self)
Definition: meta_task_pose.py:36
sot_talos_balance.meta_task_pose.MetaTaskPose.gain
gain
Definition: meta_task_pose.py:33
sot_talos_balance.meta_task_pose.MetaTaskPose.ref
def ref(self)
Definition: meta_task_pose.py:57
sot_talos_balance.meta_task_pose.MetaTaskPose.dyn
dyn
Definition: meta_task_pose.py:17
sot_talos_balance.meta_task_pose.MetaTaskPose.opPoint
opPoint
Definition: meta_task_pose.py:20
sot_talos_balance.meta_task_pose.MetaTaskPose.createFeature
def createFeature(self)
Definition: meta_task_pose.py:25
sot_talos_balance.meta_task_pose.MetaTaskPose
Definition: meta_task_pose.py:6
sot_talos_balance.meta_task_pose.MetaTaskPose.defineDynEntities
def defineDynEntities(self, dyn)
Definition: meta_task_pose.py:16