init GPU
This commit is contained in:
+111
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/python
|
||||
"""
|
||||
Created on Sat Aug 10 18:21:47 2013
|
||||
|
||||
@author: Christian Forster
|
||||
"""
|
||||
|
||||
import os
|
||||
import yaml
|
||||
import rospkg
|
||||
import argparse
|
||||
import time
|
||||
import vikit_py.cpu_info as cpu_info
|
||||
import vikit_py.ros_node as ros_node
|
||||
import evaluate
|
||||
import shutil
|
||||
|
||||
def run_experiment(dataset, params):
|
||||
# load dataset parameters
|
||||
params['dataset_directory'] = os.path.join(os.environ['SVO_DATASET_DIR'], dataset)
|
||||
if not os.path.exists(params['dataset_directory']):
|
||||
raise Exception("Provided dataset folder does not exist.")
|
||||
dataset_params_file = os.path.join(params['dataset_directory'], 'dataset_params.yaml')
|
||||
dataset_params = yaml.load(open(dataset_params_file,'r'))
|
||||
|
||||
# load algorithm parameters
|
||||
algo_params_file = os.path.join(rospkg.RosPack().get_path('svo_ros'),
|
||||
'param', params['param_settings']+'.yaml')
|
||||
algo_params = yaml.load(open(algo_params_file,'r'))
|
||||
|
||||
# combine all parameters
|
||||
if 'rig_size' not in dataset_params or dataset_params['rig_size'] == 1:
|
||||
params = dict(params.items() + algo_params.items() + dataset_params['cam0'].items())
|
||||
else:
|
||||
params = dict(params.items() + algo_params.items() + dataset_params.items())
|
||||
if 'dataset_is_blender' in dataset_params:
|
||||
params['dataset_is_blender'] = dataset_params['dataset_is_blender']
|
||||
else:
|
||||
params['dataset_is_blender'] = False
|
||||
if 'dataset_first_frame' in dataset_params:
|
||||
params['dataset_first_frame'] = dataset_params['dataset_first_frame']
|
||||
else:
|
||||
params['dataset_first_frame'] = 0
|
||||
|
||||
# dump experiment params to file and copy the other parameter files:
|
||||
params_dump_file = os.path.join(params['trace_dir'],'params.yaml')
|
||||
with open(params_dump_file,'w') as outfile:
|
||||
outfile.write(yaml.dump(params, default_flow_style=False))
|
||||
shutil.copyfile(dataset_params_file,
|
||||
os.path.join(params['trace_dir'], 'dataset_params.yaml'))
|
||||
|
||||
# copy the groundtruth trajectory to the trace dir for later evaluation
|
||||
if params['dataset_is_blender']:
|
||||
shutil.copyfile(os.path.join(params['dataset_directory'], 'trajectory_nominal.txt'),
|
||||
os.path.join(params['trace_dir'], 'groundtruth_matched.txt'))
|
||||
else:
|
||||
shutil.copyfile(os.path.join(params['dataset_directory'], 'groundtruth_matched.txt'),
|
||||
os.path.join(params['trace_dir'], 'groundtruth_matched.txt'))
|
||||
|
||||
# execute ros node
|
||||
node = ros_node.RosNode(args.version, args.executable)
|
||||
node.run(params)
|
||||
|
||||
if __name__=="__main__":
|
||||
|
||||
# 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('--evaluate', help='evaluate tracefile after running SVO', action='store_true')
|
||||
parser.add_argument('--version', help='version of svo to evaluate', default='svo_ros')
|
||||
parser.add_argument('--executable', help='the executable to be called', default='benchmark')
|
||||
args = parser.parse_args()
|
||||
|
||||
# load experiment parameters
|
||||
args.experiment_file = args.experiment_file.replace('.yaml','')
|
||||
experiment_params_file = os.path.join(rospkg.RosPack().get_path('svo_analysis'),
|
||||
'experiments', args.experiment_file+'.yaml')
|
||||
if os.path.exists(experiment_params_file):
|
||||
experiment_params = yaml.load(open(experiment_params_file, 'r'))
|
||||
else:
|
||||
print('experiment file does not exist. run with default setttings')
|
||||
experiment_params = dict({'experiment_label':'default','param_settings':'vo_fast',
|
||||
'datasets':list([args.experiment_file])})
|
||||
params = dict()
|
||||
params['experiment_label'] = experiment_params['experiment_label']
|
||||
params['param_settings'] = experiment_params['param_settings']
|
||||
params['time'] = time.strftime("%Y%m%d_%H%M", time.localtime())
|
||||
params['platform'] = cpu_info.get_cpu_info()
|
||||
params['trace_name'] = 'trace'
|
||||
|
||||
trace_dirs = list()
|
||||
for dataset in experiment_params['datasets']:
|
||||
params['experiment_name'] = params['time']+'_'+args.version+'_'+args.experiment_file+'_'+dataset
|
||||
params['trace_dir'] = os.path.join(rospkg.RosPack().get_path('svo_analysis'),
|
||||
'results', params['experiment_name'])
|
||||
if not os.path.exists(params['trace_dir']):
|
||||
os.makedirs(params['trace_dir'])
|
||||
trace_dirs.append(params['trace_dir'])
|
||||
run_experiment(dataset, params)
|
||||
|
||||
# TODO: check if it is a synthetic dataset
|
||||
for trace in trace_dirs:
|
||||
evaluate.evaluate_dataset(trace)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user