From 91cf551ec528b063f5422c3522b5be13b6bd7476 Mon Sep 17 00:00:00 2001 From: rachelmoan <moanrachel516@gmail.com> Date: Mon, 19 Aug 2024 17:24:41 -0500 Subject: [PATCH] Remove old plotting code --- guided_mrmp/utils/figures.py | 284 ----------------------------------- 1 file changed, 284 deletions(-) delete mode 100644 guided_mrmp/utils/figures.py diff --git a/guided_mrmp/utils/figures.py b/guided_mrmp/utils/figures.py deleted file mode 100644 index a9579c9..0000000 --- a/guided_mrmp/utils/figures.py +++ /dev/null @@ -1,284 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -import matplotlib.patches as patches - -from guided_mrmp.utils import Node,Env - -class Plotting: - - def __init__(self, env): - # self.start = Node(start, start, 0, 0) - # self.goal = Node(goal, goal, 0, 0) - self.env = env - self.fig = plt.figure("planning") - self.ax = plt.gca() - - def show(self): - plt.show() - - def animation(self, paths, name, cost=None, expand=None, history_pose=None, predict_path=None, - lookahead_pts=None, cost_curve=None): - name = name + "\ncost: " + str(cost) if cost else name - # self.plot_env(name) - # if expand: - # self.plot_expand(expand) - # if history_pose: - # self.plot_history_pose(history_pose, predict_path, lookahead_pts) - - if len(paths) > 20: - colors = plt.cm.hsv(np.linspace(0.2, 1.0, len(paths))) - elif len(paths) > 10: - colors = plt.cm.tab20(np.linspace(0, 1, len(paths))) - else: - colors = plt.cm.tab10(np.linspace(0, 1, len(paths))) - for path,color in zip(paths, colors): - self.plot_path(path, path_color=color) - - if cost_curve: - plt.figure("cost curve") - self.plot_cost_curve(cost_curve, name) - - # self.ax.axes.get_xaxis().set_ticks([]) - # self.ax.axes.get_yaxis().set_ticks([]) - # self.ax.set_aspect('equal', adjustable='box') - # plt.tick_params( - # axis='both', - # which='both', - # bottom=False, # ticks along the bottom edge are off - # top=False, # ticks along the top edge are off - # left=False, - # right=False, - # labelbottom=False) # labels along the bottom edge are off - # plt.show() - - def plot_env(self, name): - ''' - Plot environment with static obstacles. - - Parameters - ---------- - name: Algorithm name or some other information - ''' - # plt.plot(self.start.x, self.start.y, marker="s", color="#ff0000") - # plt.plot(self.goal.x, self.goal.y, marker="s", color="#1155cc") - - - - if isinstance(self.env, Env): - ax = self.fig.add_subplot() - # boundary - # for (ox, oy, w, h) in self.env.obs_boundary: - # ax.add_patch(patches.Rectangle( - # (ox, oy), w, h, - # edgecolor='black', - # facecolor='black', - # fill=False - # ) - # ) - # rectangle obstacles - for (ox, oy, w, h) in self.env.obs_rectangle: - ax.add_patch(patches.Rectangle( - (ox, oy), w, h, - edgecolor='black', - facecolor='gray', - fill=True - ) - ) - # circle obstacles - for (ox, oy, r) in self.env.obs_circle: - ax.add_patch(patches.Circle( - (ox, oy), r, - edgecolor='black', - facecolor='gray', - fill=True - ) - ) - - ax.axes.get_xaxis().set_ticks([]) - ax.axes.get_yaxis().set_ticks([]) - - # plt.title(name) - # plt.axis("equal") - - def plot_env_with_grid(self, top_left, grid_size, cell_size): - - # draw the grid - for i in range(grid_size+1): - x1, y1 = [top_left[0], top_left[1] - i*cell_size], [top_left[0] + grid_size*cell_size, top_left[1]- i*cell_size] - x2, y2 = [top_left[0] + i*cell_size, top_left[1]], [top_left[0] + i*cell_size, top_left[1] - grid_size*cell_size] - plt.plot(x1, y1, x2, y2) - - - def plot_expand(self, expand): - ''' - Plot expanded grids using in graph searching. - - Parameters - ---------- - expand: Expanded grids during searching - ''' - # if self.start in expand: - # expand.remove(self.start) - # if self.goal in expand: - # expand.remove(self.goal) - - count = 0 - - - for x in expand: - - count += 1 - if x.parent: - plt.plot([x.parent[0], x.x], [x.parent[1], x.y], - color="#dddddd", linestyle="-") - plt.gcf().canvas.mpl_connect('key_release_event', - lambda event: - [exit(0) if event.key == 'escape' else None]) - if count % 10 == 0: - plt.pause(0.001) - - plt.pause(0.01) - - def plot_path(self,path, path_color="#13ae00", path_style="-"): - ''' - Plot path in global planning. - - Parameters - ---------- - path: Path found in global planning - ''' - print("path = ",path) - path_x = [path[i][0] for i in range(len(path))] - path_y = [path[i][1] for i in range(len(path))] - plt.plot(path_x, path_y, path_style, linewidth='2', color=path_color) - # plt.plot(start.x, start.y, marker="s", color="#ff0000") - # plt.plot(goal.x, goal.y, marker="s", color="#1155cc") - - def plotAgent(self, pose, radius): - ''' - Plot agent with specifical pose. - - Parameters - ---------- - pose: Pose of agent - radius: Radius of agent - ''' - x, y, theta = pose - ref_vec = np.array([[radius / 2], [0]]) - rot_mat = np.array([[np.cos(theta), -np.sin(theta)], - [np.sin(theta), np.cos(theta)]]) - end_pt = rot_mat @ ref_vec + np.array([[x], [y]]) - - try: - self.ax.artists.pop() - for art in self.ax.get_children(): - if isinstance(art, plt.patches.FancyArrow): - art.remove() - except: - pass - - self.ax.arrow(x, y, float(end_pt[0]) - x, float(end_pt[1]) - y, - width=0.1, head_width=0.40, color="r") - circle = plt.Circle((x, y), radius, color="r", fill=False) - self.ax.add_artist(circle) - - def plot_history_pose(self, history_pose, predict_path=None, lookahead_pts=None): - lookahead_handler = None - for i, pose in enumerate(history_pose): - if i < len(history_pose) - 1: - plt.plot([history_pose[i][0], history_pose[i + 1][0]], - [history_pose[i][1], history_pose[i + 1][1]], c="#13ae00") - if predict_path is not None: - plt.plot(predict_path[i][:, 0], predict_path[i][:, 1], c="#ddd") - i += 1 - - # agent - self.plotAgent(pose) - - # lookahead - if lookahead_handler is not None: - lookahead_handler.remove() - if lookahead_pts is not None: - try: - lookahead_handler = self.ax.scatter(lookahead_pts[i][0], lookahead_pts[i][1], c="b") - except: - lookahead_handler = self.ax.scatter(lookahead_pts[-1][0], lookahead_pts[-1][1], c="b") - - plt.gcf().canvas.mpl_connect('key_release_event', - lambda event: [exit(0) if event.key == 'escape' else None]) - if i % 5 == 0: plt.pause(0.03) - - def plot_cost_curve(self, cost_list, name): - ''' - Plot cost curve with epochs using in evolutionary searching. - - Parameters - ---------- - cost_list: Cost with epochs - name: Algorithm name or some other information - ''' - plt.plot(cost_list, color="b") - plt.xlabel("epochs") - plt.ylabel("cost value") - plt.title(name) - plt.grid() - - def connect(self, name, func): - self.fig.canvas.mpl_connect(name, func) - - def clean(self): - plt.cla() - - def update(self): - self.fig.canvas.draw_idle() - - @staticmethod - def plotArrow(x, y, theta, length, color): - angle = np.deg2rad(30) - d = 0.5 * length - w = 2 - - x_start, y_start = x, y - x_end = x + length * np.cos(theta) - y_end = y + length * np.sin(theta) - - theta_hat_L = theta + np.pi - angle - theta_hat_R = theta + np.pi + angle - - x_hat_start = x_end - x_hat_end_L = x_hat_start + d * np.cos(theta_hat_L) - x_hat_end_R = x_hat_start + d * np.cos(theta_hat_R) - - y_hat_start = y_end - y_hat_end_L = y_hat_start + d * np.sin(theta_hat_L) - y_hat_end_R = y_hat_start + d * np.sin(theta_hat_R) - - plt.plot([x_start, x_end], [y_start, y_end], color=color, linewidth=w) - plt.plot([x_hat_start, x_hat_end_L], [y_hat_start, y_hat_end_L], color=color, linewidth=w) - plt.plot([x_hat_start, x_hat_end_R], [y_hat_start, y_hat_end_R], color=color, linewidth=w) - - @staticmethod - def plotCar(x, y, theta, width, length, color): - theta_B = np.pi + theta - - xB = x + length / 4 * np.cos(theta_B) - yB = y + length / 4 * np.sin(theta_B) - - theta_BL = theta_B + np.pi / 2 - theta_BR = theta_B - np.pi / 2 - - x_BL = xB + width / 2 * np.cos(theta_BL) # Bottom-Left vertex - y_BL = yB + width / 2 * np.sin(theta_BL) - x_BR = xB + width / 2 * np.cos(theta_BR) # Bottom-Right vertex - y_BR = yB + width / 2 * np.sin(theta_BR) - - x_FL = x_BL + length * np.cos(theta) # Front-Left vertex - y_FL = y_BL + length * np.sin(theta) - x_FR = x_BR + length * np.cos(theta) # Front-Right vertex - y_FR = y_BR + length * np.sin(theta) - - plt.plot([x_BL, x_BR, x_FR, x_FL, x_BL], - [y_BL, y_BR, y_FR, y_FL, y_BL], - linewidth=1, color=color) - - Plotting.plotArrow(x, y, theta, length / 2, color) -- GitLab