def write_overall_odometry_errors_table(overall_err_tables, output_dir): print("Writing to overall error to text files...") res_writer.write_tex_table( overall_err_tables['trans_err']['values'], overall_err_tables['trans_err']['rows'], overall_err_tables['trans_err']['cols'], os.path.join(output_dir, 'overall_rel_trans_err.txt')) res_writer.write_tex_table( overall_err_tables['trans_err_perc']['values'], overall_err_tables['trans_err_perc']['rows'], overall_err_tables['trans_err_perc']['cols'], os.path.join(output_dir, 'overall_rel_trans_err_perc.txt')) res_writer.write_tex_table( overall_err_tables['yaw_err']['values'], overall_err_tables['yaw_err']['rows'], overall_err_tables['yaw_err']['cols'], os.path.join(output_dir, 'overall_rel_yaw_err.txt'))
mt_error_d.abs_errors['rmse_trans_stats']['median'])) else: cur_trans_rmse.append( "{:3.3f}, {:3.3f} ({:3.3f} - {:3.3f})".format( mt_error_d.abs_errors['rmse_trans_stats']['mean'], mt_error_d.abs_errors['rmse_trans_stats'] ['median'], mt_error_d.abs_errors['rmse_trans_stats']['min'], mt_error_d.abs_errors['rmse_trans_stats']['max'])) rmse_table['values'].append(cur_trans_rmse) rmse_table['rows'] = algorithms rmse_table['cols'] = datasets print('\n--- Generating RMSE tables... ---') res_writer.write_tex_table( rmse_table['values'], rmse_table['rows'], rmse_table['cols'], os.path.join( output_dir, args.platform + '_translation_rmse_' + eval_uid + '.txt')) if args.rmse_boxplot and n_trials > 1: rmse_plot_alg = [v for v in algorithms] algorithm_rmse = collect_rmse_per_dataset(config_multierror_list, rmse_plot_alg) print("--- Generate boxplot for RMSE ---") plot_rmse_per_dataset(algorithm_rmse, datasets, algorithms, output_dir, plot_settings) print(Fore.GREEN + "<<< ...processing absolute trajectory errors done.") print(Fore.RED + ">>> Collecting odometry errors per dataset...") if args.odometry_error_per_dataset: dataset_rel_err = {}
for traj in config_trajs: print('> Saving {0}'.format(traj.uid)) traj.cache_current_error() traj.write_errors_to_yaml() print("#####################################") print(">>> Start plotting and writing results....") print("#####################################") if args.plot_trajectories: print('\n--- Plotting trajectory top and side view ... ---') plot_trajectories(dataset_trajectories_list, datasets, output_dir) if args.odometry_error_per_dataset: print('\n--- Generating relative (KITTI style) error plots... ---') plot_odometry_error_per_dataset(dataset_rel_err, datasets, output_dir) if args.overall_odometry_error: print('\n--- Plotting overall error ... ---') plot_overall_odometry_errors(overall_err, output_dir) write_overall_odometry_errors_table(overall_err_tables, output_dir) if args.rmse_table: print('\n--- Generating RMSE tables... ---') res_writer.write_tex_table( rmse_table['values'], rmse_table['rows'], rmse_table['cols'], os.path.join(output_dir, args.platform + '_translation_rmse.txt')) res_writer.write_tex_table( data_table['values'], data_table['rows'], data_table['cols'], os.path.join(output_dir, args.platform + '_data_vel.txt')) print("#####################################") print("<<< Finished.") print("#####################################")