4 Copyright (c) 2016, Braun Kai, Gehrung Joachim, Heizmann Heinrich, Meissner Pascal 7 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 9 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 13 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 roslib.load_manifest(
'asr_psm')
32 from asr_msgs.msg
import AsrObject
33 from visualization_msgs.msg
import Marker
43 msg.header.stamp = rospy.Time.now()
44 msg.header.frame_id =
'/PTU' 45 msg.providedBy =
'textured' 46 msg.poseEstimation.pose.position.x = posX;
47 msg.poseEstimation.pose.position.y = posY;
48 msg.poseEstimation.pose.position.z = posZ;
49 msg.poseEstimation.pose.orientation.w = oriW;
50 msg.poseEstimation.pose.orientation.x = oriX;
51 msg.poseEstimation.pose.orientation.y = oriY;
52 msg.poseEstimation.pose.orientation.z = oriZ;
62 msg.header.stamp = rospy.Time.now()
63 msg.header.frame_id =
'/PTU' 64 msg.providedBy =
'textured' 65 msg.poseEstimation.pose.position.x = posX;
66 msg.poseEstimation.pose.position.y = posY;
67 msg.poseEstimation.pose.position.z = posZ;
68 msg.poseEstimation.pose.orientation.w = oriW;
69 msg.poseEstimation.pose.orientation.x = oriX;
70 msg.poseEstimation.pose.orientation.y = oriY;
71 msg.poseEstimation.pose.orientation.z = oriZ;
75 bag.write(
'/stereo/objects', msg)
77 def publishVisualizationMessage(pub, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh):
81 msg.header.stamp = rospy.Time.now()
82 msg.header.frame_id =
'/PTU' 87 msg.pose.position.x = posX;
88 msg.pose.position.y = posY;
89 msg.pose.position.z = posZ;
90 msg.pose.orientation.w = oriW;
91 msg.pose.orientation.x = oriX;
92 msg.pose.orientation.y = oriY;
93 msg.pose.orientation.z = oriZ;
97 msg.mesh_resource = mesh
98 msg.mesh_use_embedded_materials =
True 103 def rosbagVisualizationMessage(bag, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh):
107 msg.header.stamp = rospy.Time.now()
108 msg.header.frame_id =
'/PTU' 113 msg.pose.position.x = posX;
114 msg.pose.position.y = posY;
115 msg.pose.position.z = posZ;
116 msg.pose.orientation.w = oriW;
117 msg.pose.orientation.x = oriX;
118 msg.pose.orientation.y = oriY;
119 msg.pose.orientation.z = oriZ;
123 msg.mesh_resource = mesh
124 msg.mesh_use_embedded_materials =
True 127 bag.write(
'/stereo/visualization_marker', msg)
129 def publishEvidence(bag, pubObj, pubVis, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh):
133 publishVisualizationMessage(pubVis, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh)
138 rosbagVisualizationMessage(bag, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh)
140 def publishNoisedEvidence(bag, pubObj, pubVis, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh, sigma):
143 pX = posX + random.normalvariate(0.0, sigma)
144 pY = posY + random.normalvariate(0.0, sigma)
145 pZ = posZ + random.normalvariate(0.0, sigma)
148 oW = oriW + random.normalvariate(0.0, sigma)
149 oX = oriX + random.normalvariate(0.0, sigma)
150 oY = oriY + random.normalvariate(0.0, sigma)
151 oZ = oriZ + random.normalvariate(0.0, sigma)
154 magnitude = math.sqrt(math.pow(oW, 2) + math.pow(oX, 2) + math.pow(oY, 2) + math.pow(oZ, 2))
162 publishEvidence(bag, pubObj, pubVis, pX, pY, pZ, oW, oX, oY, oZ, objType, mid, mesh)
166 print "Running sample generation." 168 for i
in range(0,1000):
172 publishNoisedEvidence(
None, pubObj, pubVis, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
'VitalisSchoko', 0, meshTexturedPath +
'vitalis_schoko.dae', sigma)
173 publishNoisedEvidence(
None, pubObj, pubVis, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
'Smacks', 1, meshTexturedPath +
'smacks.dae', sigma)
174 publishNoisedEvidence(
None, pubObj, pubVis, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0,
'CoffeeBox', 2, meshTexturedPath +
'coffeebox.dae', sigma)
175 publishNoisedEvidence(
None, pubObj, pubVis, 1.0, 2.0, 0.0, 1.0, 0.0, 0.0, 0.0,
'Plate', 3, meshSegmentablePath +
'plate_deep/object.dae', sigma)
179 print "Done generating samples." 183 print "Generating object evidences." 185 for i
in range(0,1000):
190 for obj
in range(1, number):
191 publishNoisedEvidence(
None, pubObj, pubVis, i * (1.0 / samplesOnEdge), obj + 1, 0.0, 1.0, 0.0, 0.0, 0.0,
'VitalisSchoko-' + str(obj), obj + 1, meshTexturedPath +
'vitalis_schoko.dae', 0.05)
195 print "Done generating object evidences." 200 for scenario
in range(1, scenarios + 1):
201 numberOfSamples = samplesOnEdge * scenario
204 for sceneobject
in range(0, sceneObjects + 1):
205 print 'Publishing ' + str(numberOfSamples) +
' samples with ' + str(sceneobject) +
' objects.' 208 sceneId = str(numberOfSamples).zfill(3) +
'_' + str(sceneobject).zfill(2)
209 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 216 for i
in range(0, numberOfSamples):
218 publishNoisedEvidence(bag, pubObj, pubVis, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
'Smacks', 0, meshTexturedPath +
'smacks.dae', 0.05)
221 for obj
in range(0, sceneobject):
222 publishNoisedEvidence(bag, pubObj, pubVis, i * (1.0 / samplesOnEdge), obj + 1, 0.0, 1.0, 0.0, 0.0, 0.0,
'VitalisSchoko-' + str(obj), obj + 1, meshTexturedPath +
'vitalis_schoko.dae', 0.05)
229 for sceneobject
in range(1, sceneObjects + 1):
231 print 'Publishing ' + str(samplesPerObject) +
' samples for ' + str(sceneobject) +
' objects.' 234 sceneId =
'run_' + str(sceneobject).zfill(2)
235 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 242 for i
in range(0, samplesPerObject):
243 for obj
in range(0, sceneobject):
244 publishNoisedEvidence(bag, pubObj, pubVis, 0.0, obj + 1, 0.0, 1.0, 0.0, 0.0, 0.0,
'VitalisSchoko-' + str(obj), obj + 1, meshTexturedPath +
'vitalis_schoko.dae', 0.05)
272 evidences = sceneObjects
275 for sceneobject
in range(1, sceneObjects + 1):
278 for evidence
in range(1, evidences + 1):
280 print "Execute PSM inference for " + str(evidence) +
" evidences." 283 sceneId =
'run_' + str(evidence).zfill(2)
284 modelFilename = pathToBags +
'/psm_models/run_' + str(sceneobject) +
'.xml' 285 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 288 psmRuntimeLogFolder = pathToBags +
'/runtime/obj_' + str(sceneobject) +
'_' + sceneId
289 if not os.path.exists(psmRuntimeLogFolder):
290 os.makedirs(psmRuntimeLogFolder)
293 subprocess.call([
'rosrun',
'asr_psm',
'inference_batch',
'_plot:=false',
'_object_topic:=/stereo/objects',
'_scene_graph_topic:=/scene_graphs',
'_scene_model_filename:=' + modelFilename,
'_bag_filenames_list:=',
'_base_frame_id:=/PTU',
'_scale_factor:=1.0',
'_sigma_multiplicator:=2.0',
'_targeting_help:=false',
'_inference_algorithm:=maximum',
'_runtime_log_path:=' + psmRuntimeLogFolder,
'_bag_path:=' + bagObjects])
298 for sceneobject
in range(1, sceneObjects + 1):
300 print "Execute PSM inference for " + str(sceneobject) +
" evidences." 303 sceneId =
'run_' + str(sceneobject).zfill(2)
304 modelFilename = pathToBags +
'/psm_models/' + sceneId +
'.xml' 305 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 308 psmRuntimeLogFolder = pathToBags +
'/runtime/PSM/' + sceneId
309 if not os.path.exists(psmRuntimeLogFolder):
310 os.makedirs(psmRuntimeLogFolder)
313 subprocess.call([
'rosrun',
'asr_psm',
'inference_batch',
'_plot:=false',
'_object_topic:=/stereo/objects',
'_scene_graph_topic:=/scene_graphs',
'_scene_model_filename:=' + modelFilename,
'_bag_filenames_list:=',
'_base_frame_id:=/PTU',
'_scale_factor:=1.0',
'_sigma_multiplicator:=2.0',
'_targeting_help:=false',
'_inference_algorithm:=maximum',
'_runtime_log_path:=' + psmRuntimeLogFolder,
'_bag_path:=' + bagObjects])
318 for scenario
in range(1, scenarios + 1):
319 numberOfSamples = samplesOnEdge * scenario
322 for sceneobject
in range(0, sceneObjects + 1):
323 print 'Publishing ' + str(numberOfSamples) +
' samples with ' + str(sceneobject) +
' objects(' + str(scenario) +
" clusters)" 326 sceneId = str(numberOfSamples).zfill(3) +
'_' + str(sceneobject).zfill(2)
327 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 339 for seq
in range(0, scenario):
340 for i
in range(0, samplesOnEdge):
342 posY += 1.0 / samplesOnEdge
344 posX += 1.0 / samplesOnEdge
346 publishNoisedEvidence(bag, pubObj, pubVis, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
'Smacks', 0, meshTexturedPath +
'smacks.dae', 0.05)
349 for obj
in range(0, sceneobject):
350 publishNoisedEvidence(bag, pubObj, pubVis, posX - obj, posY + obj, 0.0, 1.0, 0.0, 0.0, 0.0,
'VitalisSchoko-' + str(obj), obj + 1, meshTexturedPath +
'vitalis_schoko.dae', 0.05)
359 def runtimePreparePSM(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge, useComplex):
362 for scenario
in range(1, scenarios + 1):
363 numberOfSamples = samplesOnEdge * scenario
366 for sceneobject
in range(0, sceneObjects + 1):
367 print 'Publishing ' + str(numberOfSamples) +
' samples with ' + str(sceneobject) +
' objects.' 370 sceneId = str(numberOfSamples).zfill(3) +
'_' + str(sceneobject).zfill(2)
371 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 373 print 'Generating scene graphs.' 375 bagSceneGraph = pathToBags +
'/scenegraphs/SCENEGRAPH_' + sceneId +
'.bag' 378 subprocess.call([
'rosrun',
'scene_graph_generator',
'scene_graph_generator',
'_base_frame:=/PTU',
'_scene_id:=' + sceneId,
'_im_frame_id:=null',
'_rosbag_source:=' + bagObjects,
'_rosbag_target:=' + bagSceneGraph])
380 print "Learn scene model." 383 with open(pathToBags +
"/temp.launch",
"wt")
as fout:
384 with open(pathToBags +
"/learner.launch",
"rt")
as fin:
386 line = line.replace(
'$$$SCENE_GRAPH_BAGS$$$',
'[\'' + bagSceneGraph +
'\']')
387 line = line.replace(
'$$$SCENARIO$$$', sceneId)
388 line = line.replace(
'$$$OUTPUT_DIRECTORY$$$', pathToBags +
'/psm_models')
391 line = line.replace(
'$$$KERNELS_MIN$$$', str(scenario))
392 line = line.replace(
'$$$KERNELS_MAX$$$', str(scenario))
394 line = line.replace(
'$$$KERNELS_MIN$$$',
"1")
395 line = line.replace(
'$$$KERNELS_MAX$$$',
"1")
398 subprocess.check_call([
'roslaunch', pathToBags +
'/temp.launch'])
399 os.remove(pathToBags +
"/temp.launch")
401 def runtimeEvaluatePSM(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge):
404 for scenario
in range(1, scenarios + 1):
405 numberOfSamples = samplesOnEdge * scenario
408 for sceneobject
in range(0, sceneObjects + 1):
409 print 'Publishing ' + str(numberOfSamples) +
' samples with ' + str(sceneobject) +
' objects.' 412 sceneId = str(numberOfSamples).zfill(3) +
'_' + str(sceneobject).zfill(2)
413 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 415 print "Execute PSM inference in batch mode to determine runtime." 417 modelFilename = pathToBags +
'/psm_models/' + sceneId +
'.xml' 420 psmRuntimeLogFolder = pathToBags +
'/runtime/PSM/' + sceneId
421 if not os.path.exists(psmRuntimeLogFolder):
422 os.makedirs(psmRuntimeLogFolder)
425 subprocess.call([
'rosrun',
'asr_psm',
'inference_batch',
'_plot:=false',
'_object_topic:=/stereo/objects',
'_scene_graph_topic:=/scene_graphs',
'_scene_model_filename:=' + modelFilename,
'_bag_filenames_list:=',
'_base_frame_id:=/PTU',
'_scale_factor:=1.0',
'_sigma_multiplicator:=2.0',
'_targeting_help:=false',
'_inference_algorithm:=maximum',
'_runtime_log_path:=' + psmRuntimeLogFolder,
'_bag_path:=' + bagObjects])
430 for scenario
in range(1, scenarios + 1):
431 numberOfSamples = samplesOnEdge * scenario
434 for sceneobject
in range(0, sceneObjects + 1):
435 print 'Publishing ' + str(numberOfSamples) +
' samples with ' + str(sceneobject) +
' objects.' 438 sceneId = str(numberOfSamples).zfill(3) +
'_' + str(sceneobject).zfill(2)
439 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 441 print "Execute PSM inference in batch mode to determine runtime." 443 modelFilename = pathToBags +
'/psm_models/' + sceneId +
'.xml' 446 psmRuntimeLogFolder = pathToBags +
'/runtime/PSM/' + sceneId
447 if not os.path.exists(psmRuntimeLogFolder):
448 os.makedirs(psmRuntimeLogFolder)
451 subprocess.call([
'rosrun',
'asr_psm',
'inference_batch',
'_plot:=false',
'_object_topic:=/stereo/objects',
'_scene_graph_topic:=/scene_graphs',
'_scene_model_filename:=' + modelFilename,
'_bag_filenames_list:=',
'_base_frame_id:=/PTU',
'_scale_factor:=1.0',
'_sigma_multiplicator:=2.0',
'_targeting_help:=false',
'_inference_algorithm:=maximum',
'_runtime_log_path:=' + psmRuntimeLogFolder,
'_bag_path:=' + bagObjects])
453 def runtimePrepareISM(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge):
456 for scenario
in range(1, scenarios + 1):
457 numberOfSamples = samplesOnEdge * scenario
460 for sceneobject
in range(0, sceneObjects + 1):
461 print 'Publishing ' + str(numberOfSamples) +
' samples with ' + str(sceneobject) +
' objects.' 464 sceneId = str(numberOfSamples).zfill(3) +
'_' + str(sceneobject).zfill(2)
465 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 467 print "Build ISM database." 469 pathToIsmDatabase = pathToBags +
'/ism_models/' + sceneId +
'.sqlite.ism_test' 472 subprocess.call([
'rosrun',
'ism',
'recorder_batch',
'_objectTopic:=/stereo/objects',
'_cameraInfoTopic:=/stereo/left/camera_info',
'_window_adjustment:=1',
'_sceneName:=' + sceneId,
'_capture_interval:=1',
'_baseFrame:=/PTU',
'_dbfilename:=' + pathToIsmDatabase,
'_multiview_recording:=true',
'_bag_path:=' + bagObjects])
475 subprocess.call([
'rosrun',
'ism',
'trainer_batch',
'_useClustering:=true',
'_staticBreakRatio:=0.01',
'_togetherRatio:=0.90',
'_maxAngleDeviation:=45' ,
'_visualization_topic:=/visualization_marker',
'_baseFrame:=/PTU',
'_dbfilename:=' + pathToIsmDatabase])
480 for sceneobject
in range(1, sceneObjects + 1):
481 print 'Creating and learning database for ' + str(sceneobject) +
' objects.' 484 sceneId =
'/run_' + str(sceneobject).zfill(2)
485 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 487 print "Build ISM database." 489 pathToIsmDatabase = pathToBags +
'/ism_models/' + sceneId +
'.sqlite.ism_test' 492 subprocess.call([
'rosrun',
'ism',
'recorder_batch',
'_objectTopic:=/stereo/objects',
'_cameraInfoTopic:=/stereo/left/camera_info',
'_window_adjustment:=1',
'_sceneName:=' + sceneId,
'_capture_interval:=1',
'_baseFrame:=/PTU',
'_dbfilename:=' + pathToIsmDatabase,
'_multiview_recording:=true',
'_bag_path:=' + bagObjects])
495 subprocess.call([
'rosrun',
'ism',
'trainer_batch',
'_useClustering:=true',
'_staticBreakRatio:=0.01',
'_togetherRatio:=0.90',
'_maxAngleDeviation:=45' ,
'_visualization_topic:=/visualization_marker',
'_baseFrame:=/PTU',
'_dbfilename:=' + pathToIsmDatabase])
497 def runtimeEvaluateISM(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge):
500 for scenario
in range(1, scenarios + 1):
501 numberOfSamples = samplesOnEdge * scenario
504 for sceneobject
in range(0, sceneObjects + 1):
505 print 'Publishing ' + str(numberOfSamples) +
' samples with ' + str(sceneobject) +
' objects.' 508 sceneId = str(numberOfSamples).zfill(3) +
'_' + str(sceneobject).zfill(2)
509 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 511 print "Execute ISM inference in batch mode to determine runtime." 514 ismRuntimeLogFolder = pathToBags +
'/runtime/ISM/' + sceneId
515 if not os.path.exists(ismRuntimeLogFolder):
516 os.makedirs(ismRuntimeLogFolder)
519 ismDatabase = pathToBags +
'/ism_models/' + sceneId +
'.sqlite.ism_test' 520 ismRuntimeFile = ismRuntimeLogFolder +
'/' + sceneId +
'.csv' 523 subprocess.call([
'rosrun',
'ism',
'testRunnerExtended',
'-d', ismDatabase,
'-t', ismTestDatabase,
'-c', ismRuntimeFile,
'-o', str(sceneobject + 1),
'-s', str(numberOfSamples)])
526 os.remove(ismTestDatabase)
531 for sceneobject
in range(0, sceneObjects + 1):
532 print 'Running runtime evaluation for ' + str(sceneobject) +
' objects.' 535 sceneId =
'/run_' + str(sceneobject).zfill(2)
536 bagObjects = pathToBags +
'/objects/' + sceneId +
'.bag' 538 print "Execute ISM inference in batch mode to determine runtime." 541 ismRuntimeLogFolder = pathToBags +
'/runtime/ISM/' + sceneId
542 if not os.path.exists(ismRuntimeLogFolder):
543 os.makedirs(ismRuntimeLogFolder)
546 ismDatabase = pathToBags +
'/ism_models/' + sceneId +
'.sqlite.ism_test' 547 ismTestDatabase = ismRuntimeLogFolder +
'/test.sqlite' 548 ismRuntimeFile = ismRuntimeLogFolder +
'/' + sceneId +
'.csv' 551 subprocess.call([
'rosrun',
'ism',
'testRunnerExtended',
'-d', ismDatabase,
'-t', ismTestDatabase,
'-c', ismRuntimeFile,
'-o', str(sceneobject + 1),
'-s', str(numberOfSamples)])
554 os.remove(ismTestDatabase)
559 print "Generating samples for all objects" 562 bag =
rosbag.Bag(pathToBags +
'/abweichung.bag',
'w')
566 for i
in range(0, 1000):
569 publishNoisedEvidence(bag, pubObj, pubVis, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0,
'CoffeeBox', 0, meshTexturedPath +
'coffeebox.dae', 0.05)
572 for pos
in range(0, 5):
573 publishNoisedEvidence(bag, pubObj, pubVis, -pos, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
'VitalisSchoko', 1, meshTexturedPath +
'vitalis_schoko.dae', 0.05)
580 meshPath =
'file:///homes/students/gehrung/Developement/ilcasRosPkg/trunk/perception/visual/object_localization/stereo_based/recognition_for_grasping/object_database/' 581 meshTexturedPath = meshPath +
"textured_objects/" 582 meshSegmentablePath = meshPath +
"segmentable_objects/" 585 pathToBags =
'/media/data_ext/data/gehrung/evaluation' 588 rospy.init_node(
'measurement_simulator')
591 pubObj = rospy.Publisher(
'/stereo/objects', AsrObject)
592 pubVis = rospy.Publisher(
'/stereo/visualization_marker', Marker)
624 if __name__ ==
"__main__":
def simulateObjectEvidence(meshTexturedPath, meshSegmentablePath, pubObj, pubVis, number)
def rosbagVisualizationMessage(bag, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh)
def rosbagPdbObjectMessage(bag, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType)
def runtimePrepareStandaloneISM(meshTexturedPath, pubObj, pubVis, pathToBags, sceneObjects)
def runtimePrepareISM(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge)
def runtimeEvaluateStandalonePSM(meshTexturedPath, pubObj, pubVis, pathToBags, sceneObjects, samplesPerObject)
def runtimeEvaluatePSM(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge)
def runtimeEvaluateStandalonePSMKickass(meshTexturedPath, pubObj, pubVis, pathToBags, sceneObjects)
def runtimeEvaluateISM(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge)
def simulateFourObjectsSzenario(meshTexturedPath, meshSegmentablePath, pubObj, pubVis)
def publishPdbObjectMessage(pub, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType)
def publishEvidence(bag, pubObj, pubVis, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh)
def publishVisualizationMessage(pub, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh)
def runtimePrepareStandalonePSM(meshTexturedPath, pubObj, pubVis, pathToBags, sceneObjects, samplesPerObject)
def runtimeCreateSamplesComplex(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge)
def runtimeEvaluatePSMStandalone(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge)
def runtimePreparePSM(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge, useComplex)
def runtimeEvaluateStandaloneISM(meshTexturedPath, pubObj, pubVis, pathToBags, sceneObjects, numberOfSamples)
def simulateFalseRecognitionBenachmark(meshTexturedPath, pubObj, pubVis, pathToBags)
def publishNoisedEvidence(bag, pubObj, pubVis, posX, posY, posZ, oriW, oriX, oriY, oriZ, objType, mid, mesh, sigma)
def runtimeCreateSamplesSimple(meshTexturedPath, pubObj, pubVis, pathToBags, scenarios, sceneObjects, samplesOnEdge)