def main(seqs, dataset_folder, inputs_filename, heuristic_name, version,
         outputs_folder, outputs_tag, times, rounds, debug, optimize):
    outputs_folder = outputs_folder + os.sep + outputs_tag + os.sep + heuristic_name + os.sep + version
    os.makedirs(outputs_folder) if not os.path.isdir(outputs_folder) else None

    rrt_star = BiRRTStar().set_vehicle(contour(), 0.3, 0.2)
    for i, seq in enumerate(
            seqs):  # read_seqs(dataset_folder, inputs_filename)
        print('Processing Scene: {} ({} of {})'.format(seq, i + 1, len(seqs)))
        heuristic = read_heuristic('./predictions' + os.sep + outputs_tag, seq,
                                   heuristic_name)
        source, target = read_task(dataset_folder + os.sep + 'scenes', seq)
        start = center2rear(deepcopy(source)).gcs2lcs(source.state)
        goal = center2rear(deepcopy(target)).gcs2lcs(source.state)
        grid_ori = deepcopy(source).gcs2lcs(source.state)
        grid_map, grid_res = read_grid(dataset_folder + os.sep + 'scenes',
                                       seq), 0.1
        rrt_star.debug = debug
        Debugger.plan_hist = []
        past = time.time()
        for r in range(rounds):
            rrt_star.preset(start, goal, grid_map, grid_res, grid_ori, 255,
                            heuristic)
            rrt_star.planning(times,
                              repeat=100,
                              optimize=optimize,
                              debug=debug)
            if rrt_star.x_best.fu < np.inf:
                path = rrt_star.path()
                taj = rrt_star.trajectory(a_cc=3, v_max=10, res=0.2)
                np.savetxt('{}/{}_path.txt'.format(outputs_folder, seq),
                           [p.state for p in path],
                           delimiter=',')
                taj = [t.lcs2gcs(source.state) for t in taj]
                motion = [(t.state[0], t.state[1], t.state[2], t.k, t.v)
                          for t in taj]
                print motion
                np.savetxt('{}/{}_trajectory.txt'.format(outputs_folder, seq),
                           motion,
                           delimiter=',')
        print('    Runtime: {}'.format(time.time() - past))

        Debugger().save_hist(outputs_folder + os.sep + str(seq) +
                             '_summary.txt')
Exemple #2
0
def main(dataset_folder, inputs_filename, heuristic_name, outputs_folder,
         outputs_tag, times, rounds, debug, optimize):
    outputs_folder = outputs_folder + os.sep + outputs_tag + os.sep + heuristic_name
    rrt_star = BiRRTStar().set_vehicle(contour(), 0.3, 0.2)
    seqs = read_seqs(dataset_folder, inputs_filename)
    for i, seq in enumerate([2384
                             ]):  # read_seqs(dataset_folder, inputs_filename)
        print('Processing Scene: {} ({} of {})'.format(seq, i + 1, len(seqs)))
        set_plot(True)
        heuristic = read_heuristic('./predictions' + os.sep + outputs_tag, seq,
                                   heuristic_name)
        source, target = read_task(dataset_folder + os.sep + 'scenes', seq)
        start = center2rear(deepcopy(source)).gcs2lcs(source.state)
        goal = center2rear(deepcopy(target)).gcs2lcs(source.state)
        grid_ori = deepcopy(source).gcs2lcs(source.state)
        grid_map, grid_res = read_grid(dataset_folder + os.sep + 'scenes',
                                       seq), 0.1
        print heuristic[0][0]
        Debugger.plot_grid(grid_map, grid_res)
        Debugger.plot_heuristic(heuristic, alpha=1.0, r=5.0)
        Debugger.plot_heuristic([(heuristic[0][0], ((0.0, 2.), (0.0, 2.0),
                                                    (0.0, 0.524)))],
                                color='C0',
                                r=4.0,
                                alpha=1.0)
        Debugger.plot_heuristic([(heuristic[0][0], ((0.0, 4.), (0.0, 4.0),
                                                    (0.0, 1.047)))],
                                color='C1',
                                r=3.0,
                                alpha=1.0)
        Debugger.plot_heuristic([(heuristic[0][0], ((0.0, 1.), (0.0, 1.0),
                                                    (0.0, 0.262)))],
                                color='C3',
                                r=6.0,
                                alpha=1.0)
        rrt_star.debug = debug
        Debugger.plan_hist = []
        Debugger.breaker(' ')

        past = time.time()
        for r in range(rounds):
            rrt_star.preset(start, goal, grid_map, grid_res, grid_ori, 255,
                            heuristic)
            rrt_star.planning(times,
                              repeat=100,
                              optimize=optimize,
                              debug=debug)
        print('    Runtime: {}'.format(time.time() - past))

        os.makedirs(
            outputs_folder) if not os.path.isdir(outputs_folder) else None
        Debugger().save_hist(outputs_folder + os.sep + str(seq) +
                             '_summary.txt')
Exemple #3
0
def plot_task(grid_map, grid_res, heuristic, start, goal):
    Debugger.plot_grid(grid_map, grid_res)
    Debugger.plot_heuristic(heuristic) if heuristic else None
    Debugger().plot_polygon(transform(contour(), start.state), color='y')
    Debugger().plot_polygon(transform(contour(), goal.state), color='y')
    plt.draw()
def plot_task(grid_map, grid_res, start, goal):
    Debugger.plot_grid(grid_map, grid_res)
    plot_state2(start)
    plot_state2(goal)
    plt.draw()
def calculate_performance(seqs, predictor, dataset_folder, inputs_filename,
                          prediction_folder, planning_folder):
    threshold = 0.5
    rho = 5.0
    for i, seq in enumerate(seqs):  # enumerate(seqs)
        print('Evaluate Scene: {} ({} of {})'.format(seq, i + 1, len(seqs)))
        inference = read_inference(prediction_folder, seq, predictor)
        label = read_label(dataset_folder, seq)
        start, goal = read_task2(dataset_folder, seq)
        pred = build_path(start, inference, goal, threshold)
        true = build_path(start, label, goal, threshold)
        pred_length = calculate_path_length(pred, rho=rho)
        true_length = calculate_path_length(true, rho=rho)
        optimal_length = calculate_path_length([start, goal], rho=rho)

        fontsize = 70
        ax1 = new_figure(y_label='$\widehat{\mathrm{mLOP}}$',
                         x_label='time[s]',
                         fontsize=fontsize)

        labels = ['Optimal', 'Greedy', 'Normal']
        colors = ['r', 'b', 'g']
        for j, version in enumerate(['optimal', 'greedy']):
            summary = read_yips_planning_summary(planning_folder, seq,
                                                 predictor + os.sep + version)
            summaries = np.split(summary, 100)
            summary = np.mean(summaries, axis=0)

            lens = summary[:, 2]
            times = summary[:, 1]
            samples = summary[:, 0]
            normalized_lens = lens / optimal_length
            ax1.plot(times,
                     normalized_lens,
                     lw=12,
                     c=colors[j],
                     zorder=100 - j,
                     label=labels[j])
            print true_length, optimal_length

        ax1.set_ylim([0.0, 1.7])
        ax1.set_yticks([0.5, 1.0, 1.5])
        ax1.set_xlim([0, .5])
        ax1.set_xticks([0, .2, 0.4])
        ax1.hlines(true_length / optimal_length,
                   0,
                   2,
                   lw=12,
                   color='b',
                   zorder=20,
                   linestyles='dotted',
                   label='Label')
        ax1.hlines(optimal_length / optimal_length,
                   0,
                   2,
                   lw=12,
                   color='C1',
                   zorder=15,
                   linestyles='-',
                   label='Geodesic')
        ax1.legend(prop={'size': fontsize - 12},
                   loc=4,
                   frameon=True,
                   ncol=2,
                   handlelength=1.5)
        plt.draw()
        plt.show()
        Debugger.breaker('')