Skip to content

Commit aebbf0b

Browse files
committed
[Python] add Flags()
1 parent 4dfb5be commit aebbf0b

File tree

5 files changed

+41
-85
lines changed

5 files changed

+41
-85
lines changed

src/dynamic_graph/sot/core/feature_position.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#
44

55
from dynamic_graph import plug
6+
from dynamic_graph.sot.core import Flags
67
from dynamic_graph.entity import Entity
78
from dynamic_graph.sot.core.feature_point6d import FeaturePoint6d
89

@@ -42,7 +43,7 @@ def __init__(self,
4243
if signalJacobian:
4344
plug(signalJacobian, self._feature.signal('Jq'))
4445
self._feature.setReference(self._reference.name)
45-
self._feature.signal('selec').value = '111111'
46+
self._feature.signal('selec').value = Flags('111111')
4647
self._feature.frame('current')
4748

4849
# Signals stored in members

src/dynamic_graph/sot/core/feature_position_relative.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77
from dynamic_graph import plug
88
from dynamic_graph.entity import Entity
99
from dynamic_graph.signal_base import SignalBase
10-
from dynamic_graph.sot.core.feature_point6d_relative \
11-
import FeaturePoint6dRelative
10+
from dynamic_graph.sot.core import Flags
11+
from dynamic_graph.sot.core.feature_point6d_relative import FeaturePoint6dRelative
1212

1313
# Identity matrix of order 4
14-
I4 = reduce(lambda m, i: m + (i * (0., ) + (1., ) + (3 - i) * (0., ), ),
15-
range(4), ())
14+
I4 = reduce(lambda m, i: m + (i * (0., ) + (1., ) + (3 - i) * (0., ), ), range(4), ())
1615

1716

1817
class FeaturePositionRelative(Entity):
@@ -99,7 +98,7 @@ def __init__(self,
9998
if JqOther:
10099
plug(JqOther, self._feature.signal('Jq'))
101100
self._feature.setReference(self._reference.name)
102-
self._feature.signal('selec').value = '111111'
101+
self._feature.signal('selec').value = Flags('111111')
103102
self._feature.frame('current')
104103

105104
# Signals stored in members

src/dynamic_graph/sot/core/meta_task_6d.py

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from dynamic_graph import plug
2+
from dynamic_graph.sot.core import Flags
23
from dynamic_graph.sot.core.feature_point6d import FeaturePoint6d
34
from dynamic_graph.sot.core.gain_adaptive import GainAdaptive
45
from dynamic_graph.sot.core.op_point_modifier import OpPointModifier
@@ -18,7 +19,7 @@ def toFlags(arr):
1819
res = ''
1920
for i in lres:
2021
res += str(i)
21-
return res
22+
return Flags(res)
2223

2324

2425
class MetaTask6d(object):
@@ -30,14 +31,8 @@ class MetaTask6d(object):
3031
featureDes = 0
3132

3233
def opPointExist(self, opPoint):
33-
sigsP = [
34-
x for x in self.dyn.signals()
35-
if x.getName().split(':')[-1] == opPoint
36-
]
37-
sigsJ = [
38-
x for x in self.dyn.signals()
39-
if x.getName().split(':')[-1] == 'J' + opPoint
40-
]
34+
sigsP = [x for x in self.dyn.signals() if x.getName().split(':')[-1] == opPoint]
35+
sigsJ = [x for x in self.dyn.signals() if x.getName().split(':')[-1] == 'J' + opPoint]
4136
return len(sigsP) == 1 & len(sigsJ) == 1
4237

4338
def defineDynEntities(self, dyn):
@@ -51,18 +46,14 @@ def createOpPoint(self, opPoint, opPointRef='right-wrist'):
5146

5247
def createOpPointModif(self):
5348
self.opPointModif = OpPointModifier('opmodif' + self.name)
54-
plug(
55-
self.dyn.signal(self.opPoint),
56-
self.opPointModif.signal('positionIN'))
57-
plug(
58-
self.dyn.signal('J' + self.opPoint),
59-
self.opPointModif.signal('jacobianIN'))
49+
plug(self.dyn.signal(self.opPoint), self.opPointModif.signal('positionIN'))
50+
plug(self.dyn.signal('J' + self.opPoint), self.opPointModif.signal('jacobianIN'))
6051
self.opPointModif.activ = False
6152

6253
def createFeatures(self):
6354
self.feature = FeaturePoint6d('feature' + self.name)
6455
self.featureDes = FeaturePoint6d('feature' + self.name + '_ref')
65-
self.feature.selec.value = '111111'
56+
self.feature.selec.value = Flags('111111')
6657
self.feature.frame('current')
6758

6859
def createTask(self):
@@ -112,16 +103,12 @@ def opmodif(self):
112103
@opmodif.setter
113104
def opmodif(self, m):
114105
if isinstance(m, bool) and not m:
115-
plug(
116-
self.dyn.signal(self.opPoint), self.feature.signal('position'))
117-
plug(
118-
self.dyn.signal('J' + self.opPoint), self.feature.signal('Jq'))
106+
plug(self.dyn.signal(self.opPoint), self.feature.signal('position'))
107+
plug(self.dyn.signal('J' + self.opPoint), self.feature.signal('Jq'))
119108
self.opPointModif.activ = False
120109
else:
121110
if not self.opPointModif.activ:
122-
plug(
123-
self.opPointModif.signal('position'),
124-
self.feature.position)
111+
plug(self.opPointModif.signal('position'), self.feature.position)
125112
plug(self.opPointModif.signal('jacobian'), self.feature.Jq)
126113
self.opPointModif.setTransformation(m)
127114
self.opPointModif.activ = True

src/dynamic_graph/sot/core/meta_tasks.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
from numpy import array, eye, matrix, ndarray
2+
13
from dynamic_graph import plug
4+
from dynamic_graph.sot.core import Flags
25
from dynamic_graph.sot.core.feature_generic import FeatureGeneric
36
from dynamic_graph.sot.core.gain_adaptive import GainAdaptive
47
from dynamic_graph.sot.core.matrix_util import matrixToTuple, rpy2tr
58
from dynamic_graph.sot.core.meta_task_6d import toFlags
6-
from numpy import array, eye, matrix, ndarray
79

810

911
class MetaTaskCom(object):
@@ -55,8 +57,7 @@ def generic6dReference(p):
5557
M[0:3, 3] = p
5658
elif isinstance(p, (matrix, ndarray)) and p.shape == (4, 4):
5759
M = p
58-
elif isinstance(p, (matrix, tuple)) and len(p) == 4 == len(p[0]) == len(
59-
p[1]) == len(p[2]) == len(p[3]):
60+
elif isinstance(p, (matrix, tuple)) and len(p) == 4 == len(p[0]) == len(p[1]) == len(p[2]) == len(p[3]):
6061
M = matrix(p)
6162
elif isinstance(p, (matrix, ndarray, tuple)) and len(p) == 6:
6263
M = array(rpy2tr(*p[3:7]))
@@ -69,22 +70,20 @@ def generic6dReference(p):
6970
def goto6d(task, position, gain=None, resetJacobian=True):
7071
M = generic6dReference(position)
7172
task.featureDes.position.value = array(M)
72-
task.feature.selec.value = "111111"
73+
task.feature.selec.value = Flags("111111")
7374
setGain(task.gain, gain)
74-
if 'resetJacobianDerivative' in task.task.__class__.__dict__.keys(
75-
) and resetJacobian:
75+
if 'resetJacobianDerivative' in task.task.__class__.__dict__.keys() and resetJacobian:
7676
task.task.resetJacobianDerivative()
7777

7878

7979
def gotoNd(task, position, selec=None, gain=None, resetJacobian=True):
8080
M = generic6dReference(position)
8181
if selec is not None:
8282
if isinstance(selec, str):
83-
task.feature.selec.value = selec
83+
task.feature.selec.value = Flags(selec)
8484
else:
8585
task.feature.selec.value = toFlags(selec)
8686
task.featureDes.position.value = array(M)
8787
setGain(task.gain, gain)
88-
if 'resetJacobianDerivative' in task.task.__class__.__dict__.keys(
89-
) and resetJacobian:
88+
if 'resetJacobianDerivative' in task.task.__class__.__dict__.keys() and resetJacobian:
9089
task.task.resetJacobianDerivative()

src/dynamic_graph/sot/core/meta_tasks_kine_relative.py

Lines changed: 17 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from dynamic_graph import plug
2-
from dynamic_graph.sot.core.feature_point6d_relative import \
3-
FeaturePoint6dRelative
2+
from dynamic_graph.sot.core import Flags
3+
from dynamic_graph.sot.core.feature_point6d_relative import FeaturePoint6dRelative
44
from dynamic_graph.sot.core.matrix_util import matrixToTuple
55
from dynamic_graph.sot.core.meta_task_6d import MetaTask6d, toFlags
66
from dynamic_graph.sot.core.meta_tasks import generic6dReference, setGain
@@ -19,31 +19,22 @@ def createOpPointBase(self, opPointBase, opPointRefBase='left-wrist'):
1919

2020
def createOpPointModifBase(self):
2121
self.opPointModifBase = OpPointModifier('opmodifBase' + self.name)
22-
plug(
23-
self.dyn.signal(self.opPointBase),
24-
self.opPointModifBase.signal('positionIN'))
25-
plug(
26-
self.dyn.signal('J' + self.opPointBase),
27-
self.opPointModifBase.signal('jacobianIN'))
22+
plug(self.dyn.signal(self.opPointBase), self.opPointModifBase.signal('positionIN'))
23+
plug(self.dyn.signal('J' + self.opPointBase), self.opPointModifBase.signal('jacobianIN'))
2824
self.opPointModifBase.activ = False
2925

3026
def createFeatures(self):
3127
self.feature = FeaturePoint6dRelative('featureRel' + self.name)
32-
self.featureDes = FeaturePoint6dRelative(
33-
'featureRel' + self.name + '_ref')
34-
self.feature.selec.value = '111111'
28+
self.featureDes = FeaturePoint6dRelative('featureRel' + self.name + '_ref')
29+
self.feature.selec.value = Flags('111111')
3530
self.feature.frame('current')
3631

3732
def plugEverything(self):
3833
self.feature.setReference(self.featureDes.name)
3934
plug(self.dyn.signal(self.opPoint), self.feature.signal('position'))
4035
plug(self.dyn.signal('J' + self.opPoint), self.feature.signal('Jq'))
41-
plug(
42-
self.dyn.signal(self.opPointBase),
43-
self.feature.signal('positionRef'))
44-
plug(
45-
self.dyn.signal('J' + self.opPointBase),
46-
self.feature.signal('JqRef'))
36+
plug(self.dyn.signal(self.opPointBase), self.feature.signal('positionRef'))
37+
plug(self.dyn.signal('J' + self.opPointBase), self.feature.signal('JqRef'))
4738
self.task.add(self.feature.name)
4839
plug(self.task.error, self.gain.error)
4940
plug(self.gain.gain, self.task.controlGain)
@@ -52,13 +43,7 @@ def keep(self):
5243
self.feature.position.recompute(self.dyn.position.time)
5344
self.feature.keep()
5445

55-
def __init__(self,
56-
name,
57-
dyn,
58-
opPoint,
59-
opPointBase,
60-
opPointRef='right-wrist',
61-
opPointRefBase='left-wrist'):
46+
def __init__(self, name, dyn, opPoint, opPointBase, opPointRef='right-wrist', opPointRefBase='left-wrist'):
6247
self.name = name
6348
self.defineDynEntities(dyn)
6449
self.createOpPoint(opPoint, opPointRef)
@@ -80,21 +65,13 @@ def opmodifBase(self):
8065
@opmodifBase.setter
8166
def opmodifBase(self, m):
8267
if isinstance(m, bool) and not m:
83-
plug(
84-
self.dyn.signal(self.opPointBase),
85-
self.feature.signal('positionRef'))
86-
plug(
87-
self.dyn.signal('J' + self.opPointBase),
88-
self.feature.signal('JqRef'))
68+
plug(self.dyn.signal(self.opPointBase), self.feature.signal('positionRef'))
69+
plug(self.dyn.signal('J' + self.opPointBase), self.feature.signal('JqRef'))
8970
self.opPointModifBase.activ = False
9071
else:
9172
if not self.opPointModifBase.activ:
92-
plug(
93-
self.opPointModifBase.signal('position'),
94-
self.feature.positionRef)
95-
plug(
96-
self.opPointModifBase.signal('jacobian'),
97-
self.feature.JqRef)
73+
plug(self.opPointModifBase.signal('position'), self.feature.positionRef)
74+
plug(self.opPointModifBase.signal('jacobian'), self.feature.JqRef)
9875
self.opPointModifBase.setTransformation(m)
9976
self.opPointModifBase.activ = True
10077

@@ -107,19 +84,13 @@ def goto6dRel(task, position, positionRef, gain=None, resetJacobian=True):
10784
MRef = generic6dReference(positionRef)
10885
task.featureDes.position.value = matrixToTuple(M)
10986
task.featureDes.positionRef.value = matrixToTuple(MRef)
110-
task.feature.selec.value = "111111"
87+
task.feature.selec.value = Flags("111111")
11188
setGain(task.gain, gain)
112-
if 'resetJacobianDerivative' in task.task.__class__.__dict__.keys(
113-
) and resetJacobian:
89+
if 'resetJacobianDerivative' in task.task.__class__.__dict__.keys() and resetJacobian:
11490
task.task.resetJacobianDerivative()
11591

11692

117-
def gotoNdRel(task,
118-
position,
119-
positionRef,
120-
selec=None,
121-
gain=None,
122-
resetJacobian=True):
93+
def gotoNdRel(task, position, positionRef, selec=None, gain=None, resetJacobian=True):
12394
M = generic6dReference(position)
12495
MRef = generic6dReference(positionRef)
12596
if selec is not None:
@@ -130,8 +101,7 @@ def gotoNdRel(task,
130101
task.featureDes.position.value = matrixToTuple(M)
131102
task.featureDes.positionRef.value = matrixToTuple(MRef)
132103
setGain(task.gain, gain)
133-
if 'resetJacobianDerivative' in task.task.__class__.__dict__.keys(
134-
) and resetJacobian:
104+
if 'resetJacobianDerivative' in task.task.__class__.__dict__.keys() and resetJacobian:
135105
task.task.resetJacobianDerivative()
136106

137107

0 commit comments

Comments
 (0)