@@ -41,7 +41,8 @@ def count_branching_bricks(self, module=None):
41
41
for core_slot , child_module in module .iter_children ():
42
42
if child_module is None :
43
43
continue
44
- children_count += 1
44
+ if not isinstance (child_module , TouchSensorModule ) and not isinstance (child_module , BrickSensorModule ):
45
+ children_count += 1
45
46
self .count_branching_bricks (child_module )
46
47
if (isinstance (module , BrickModule ) and children_count == 3 ) or (isinstance (module , CoreModule ) and children_count == 4 ):
47
48
self .branching_modules_count += 1
@@ -70,25 +71,27 @@ def measure_branching(self):
70
71
def calculate_extremities_extensiveness (self , module = None , extremities = False , extensiveness = False ):
71
72
"""
72
73
Calculate extremities or extensiveness in body
74
+ @param extremities: calculate extremities in body if true
75
+ @param extensiveness: calculate extensiveness in body if true
73
76
"""
74
77
try :
75
78
if module is None :
76
79
module = self .body
77
80
78
- if module . has_children ():
79
- children_count = 0
80
- for core_slot , child_module in module . iter_children () :
81
- if child_module is None :
82
- continue
81
+ children_count = 0
82
+ for core_slot , child_module in module . iter_children ():
83
+ if child_module is None :
84
+ continue
85
+ if not isinstance ( child_module , TouchSensorModule ):
83
86
children_count += 1
84
- if extremities :
85
- self .calculate_extremities_extensiveness (child_module , True , False )
86
- if extensiveness :
87
- self .calculate_extremities_extensiveness (child_module , False , True )
88
- if children_count == 1 and not isinstance (module , CoreModule ) and extremities :
89
- self .extremities += 1
90
- if children_count == 2 and not isinstance (module , CoreModule ) and extensiveness :
91
- self .extensiveness += 1
87
+ if extremities :
88
+ self .calculate_extremities_extensiveness (child_module , True , False )
89
+ if extensiveness :
90
+ self .calculate_extremities_extensiveness (child_module , False , True )
91
+ if children_count == 0 and not ( isinstance (module , CoreModule ) or isinstance ( module , TouchSensorModule ) ) and extremities :
92
+ self .extremities += 1
93
+ if children_count == 1 and not ( isinstance (module , CoreModule ) or isinstance ( module , TouchSensorModule ) ) and extensiveness :
94
+ self .extensiveness += 1
92
95
except Exception as e :
93
96
print ('Failed calculating extremities or extensiveness' )
94
97
print ('Exception: {}' .format (e ))
@@ -104,7 +107,7 @@ def measure_limbs(self):
104
107
if self .absolute_size < 6 :
105
108
practical_limit_limbs = self .absolute_size - 1
106
109
else :
107
- practical_limit_limbs = 2 * math .floor ((self .absolute_size - 6 ) / 3 ) + (self .absolute_size - 6 ) % 3 + 4
110
+ practical_limit_limbs = 2 * math .floor ((self .absolute_size - 6 ) / 3 ) + (( self .absolute_size - 6 ) % 3 ) + 4
108
111
self .calculate_extremities_extensiveness (None , True , False )
109
112
if self .extremities == 0 :
110
113
self .limbs = 0
@@ -181,7 +184,6 @@ def count_active_hinges(self, module=None):
181
184
try :
182
185
if module is None :
183
186
module = self .body
184
-
185
187
if module .has_children ():
186
188
if isinstance (module , ActiveHingeModule ):
187
189
self .active_hinges_count += 1
@@ -204,7 +206,10 @@ def measure_joints(self):
204
206
self .joints = 0
205
207
return 0
206
208
self .count_active_hinges ()
207
- practical_limit_active_hinges = math .floor ((self .absolute_size - 1 )/ 2 )
209
+ practical_limit_active_hinges = self .absolute_size - 2
210
+ if self .active_hinges_count == 0 :
211
+ self .joints = 0
212
+ return 0
208
213
self .joints = self .active_hinges_count / practical_limit_active_hinges
209
214
return self .joints
210
215
@@ -227,8 +232,9 @@ def measure_absolute_size(self, module=None):
227
232
:return:
228
233
"""
229
234
try :
230
- self .calculate_count ()
231
- self .absolute_size = self .brick_count + self .hinge_count + 1
235
+ if self .absolute_size is None :
236
+ self .calculate_count ()
237
+ self .absolute_size = self .brick_count + self .hinge_count + 1
232
238
return self .absolute_size
233
239
except Exception as e :
234
240
print ('Failed measuring absolute size' )
@@ -298,9 +304,9 @@ def measure_all(self):
298
304
self .measure_coverage ()
299
305
self .measure_symmetry ()
300
306
self .measure_branching ()
301
- return self .get_all_measurements ()
307
+ return self .measurement_to_dict ()
302
308
303
- def get_all_measurements (self ):
309
+ def measurement_to_dict (self ):
304
310
"""
305
311
Return dict of all measurements
306
312
:return:
@@ -309,7 +315,9 @@ def get_all_measurements(self):
309
315
'branching' : self .branching ,
310
316
'branching_modules_count' : self .branching_modules_count ,
311
317
'limbs' : self .limbs ,
318
+ 'extremeties' : self .extremities ,
312
319
'length_of_limbs' : self .length_of_limbs ,
320
+ 'extensiveness' : self .extensiveness ,
313
321
'coverage' : self .coverage ,
314
322
'joints' : self .joints ,
315
323
'hinge_count' : self .hinge_count ,
0 commit comments