refactor
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
dataset: flying_room_1_rig_1
|
||||
param_settings: vo_fast
|
||||
@@ -7,7 +7,10 @@ Created on Sat Aug 10 18:21:47 2013
|
||||
|
||||
import os
|
||||
import yaml
|
||||
import rospkg
|
||||
import argparse
|
||||
import time
|
||||
import svo_analysis.cpu_info as cpu_info
|
||||
|
||||
class RosNode:
|
||||
def __init__(self, package, executable):
|
||||
@@ -18,50 +21,59 @@ class RosNode:
|
||||
parameter_string = ''
|
||||
for key in parameter_dictionary.keys():
|
||||
parameter_string = parameter_string + ' _' + key + ':=' + str(parameter_dictionary[key])
|
||||
print('starting ros node')
|
||||
os.system('rosrun ' + self.package + ' ' + self.executable + ' ' + parameter_string)
|
||||
print('ros node finished processing')
|
||||
|
||||
if __name__=="__main__":
|
||||
|
||||
# config:
|
||||
home_dir = os.getenv("HOME")
|
||||
dataset_dir = home_dir+'/Datasets/SlamBenchmark/'
|
||||
algo_dir = home_dir+'/workspace/rpg_slam/svo_ros'
|
||||
trace_dir = home_dir+'/workspace/rpg_slam/svo_analysis/results'
|
||||
platform = 'i7'
|
||||
# parse command line
|
||||
parser = argparse.ArgumentParser(description='''
|
||||
Runs SVO with the dataset and parameters specified in the provided experiment file.
|
||||
''')
|
||||
parser.add_argument('experiment_file', help='experiment file in svo_analysis/experiments folder')
|
||||
parser.add_argument('--name', help='experiment name')
|
||||
parser.add_argument('--evaluate', help='evaluate tracefile after running SVO', action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
||||
# load experiment parameters
|
||||
expParamsFile = os.path.join(rospkg.RosPack().get_path('svo_analysis'),
|
||||
'experiments', args.experiment_file+'.yaml')
|
||||
expParams = yaml.load(open(expParamsFile, 'r'))
|
||||
expParams['time'] = time.strftime("%Y%m%d_%H%M", time.localtime())
|
||||
#expParams['platform'] = cpu_info.getCpuInfo()
|
||||
expParams['experiment_name'] = args.name
|
||||
if(expParams['experiment_name'] == None):
|
||||
expParams['experiment_name'] = expParams['time']+'_svo_' + args.experiment_file
|
||||
|
||||
# load dataset parameters
|
||||
datasetParamsFile = os.path.join(rospkg.RosPack().get_path('Datasets'),
|
||||
expParams['dataset'], 'dataset_params.yaml')
|
||||
datasetParams = yaml.load(open(datasetParamsFile,'r'))
|
||||
|
||||
# load parameters
|
||||
experiment_name = 'asl2_fast'
|
||||
experiment_file = 'experiments/'+experiment_name+'.yaml'
|
||||
experiment_file_stream = open(experiment_file,'r')
|
||||
experiment_dict = yaml.load(experiment_file_stream)
|
||||
# load algorithm parameters
|
||||
algoParamsFile = os.path.join(rospkg.RosPack().get_path('svo_ros'),
|
||||
'param', expParams['param_settings']+'.yaml')
|
||||
algoParams = yaml.load(open(algoParamsFile,'r'))
|
||||
|
||||
# combine all parameters
|
||||
params = dict(expParams.items() + datasetParams.items() + algoParams.items())
|
||||
params['trace_name'] = 'trace'
|
||||
params['trace_dir'] = os.path.join(rospkg.RosPack().get_path('svo_analysis'),
|
||||
'results', params['experiment_name'])
|
||||
|
||||
dataset_param_file = dataset_dir+experiment_dict['dataset']+'/dataset_params.yaml'
|
||||
dataset_param_file_stream = open(dataset_param_file,'r')
|
||||
dataset_param_dict = yaml.load(dataset_param_file_stream)
|
||||
|
||||
algo_param_file = algo_dir+'/param/'+experiment_dict['param_settings']+'.param'
|
||||
algo_param_file_stream = open(algo_param_file,'r')
|
||||
algo_param_dict = yaml.load(algo_param_file_stream)
|
||||
|
||||
params = dict(dataset_param_dict.items() + algo_param_dict.items() + experiment_dict.items())
|
||||
localtime = time.localtime()
|
||||
params['trace_name'] = time.strftime("%Y%m%d_%H%M", localtime)+'_nslam_'+platform+'_'+experiment_name
|
||||
params['trace_dir'] = trace_dir+'/'+params['trace_name']
|
||||
params['run_id'] = 0
|
||||
|
||||
# create folder for experiment results
|
||||
# create folder for tracing
|
||||
if not os.path.exists(params['trace_dir']):
|
||||
os.makedirs(params['trace_dir'])
|
||||
|
||||
|
||||
# dump experiment params to file:
|
||||
params_dump_file = params['trace_dir']+'/params.yaml'
|
||||
with open(params_dump_file,'w') as outfile:
|
||||
outfile.write( yaml.dump(params, default_flow_style=False) )
|
||||
outfile.write(yaml.dump(params, default_flow_style=False))
|
||||
|
||||
# start ros node
|
||||
print 'starting ros node'
|
||||
node = RosNode('svo_ros','benchmark')
|
||||
node.run(params)
|
||||
print 'ros node finished processing'
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import subprocess, re
|
||||
|
||||
def getCpuInfo():
|
||||
command = "cat /proc/cpuinfo"
|
||||
all_info = subprocess.check_output(command, shell=True).strip()
|
||||
for line in all_info.split("\n"):
|
||||
if "model name" in line:
|
||||
return re.sub( ".*model name.*:", "", line,1)
|
||||
Reference in New Issue
Block a user