From 96335a1e112744c49d0d4904003a164a4fe3b081 Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 11 Aug 2020 12:04:55 +1000 Subject: [PATCH 01/31] Remove erronious text files --- nova_rover_demos/pathfinding/comparison_platform/README.md.txt | 0 nova_rover_demos/pathfinding/comparison_platform/run.py.txt | 0 .../pathfinding/comparison_platform/src/platform.py.txt | 0 .../pathfinding/comparison_platform/src/visuals.py.txt | 0 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 nova_rover_demos/pathfinding/comparison_platform/README.md.txt delete mode 100644 nova_rover_demos/pathfinding/comparison_platform/run.py.txt delete mode 100644 nova_rover_demos/pathfinding/comparison_platform/src/platform.py.txt delete mode 100644 nova_rover_demos/pathfinding/comparison_platform/src/visuals.py.txt diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md.txt b/nova_rover_demos/pathfinding/comparison_platform/README.md.txt deleted file mode 100644 index e69de29..0000000 diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py.txt b/nova_rover_demos/pathfinding/comparison_platform/run.py.txt deleted file mode 100644 index e69de29..0000000 diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py.txt b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py.txt deleted file mode 100644 index e69de29..0000000 diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py.txt b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py.txt deleted file mode 100644 index e69de29..0000000 From 49ab91f29c210f56c753e675a0e81231c1515a31 Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 11 Aug 2020 12:33:06 +1000 Subject: [PATCH 02/31] Repository Structure for Comparison Platform --- nova_rover_demos/pathfinding/comparison_platform/README.md | 0 nova_rover_demos/pathfinding/comparison_platform/run.py | 0 nova_rover_demos/pathfinding/comparison_platform/src/platform.py | 0 nova_rover_demos/pathfinding/comparison_platform/src/visuals.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/README.md create mode 100644 nova_rover_demos/pathfinding/comparison_platform/run.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/src/platform.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/src/visuals.py diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md b/nova_rover_demos/pathfinding/comparison_platform/README.md new file mode 100644 index 0000000..e69de29 diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py new file mode 100644 index 0000000..e69de29 diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py new file mode 100644 index 0000000..e69de29 diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py new file mode 100644 index 0000000..e69de29 From a780ca90effe624e0a6fc6f633c6b1cc999baf75 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Tue, 11 Aug 2020 16:49:39 +1000 Subject: [PATCH 03/31] Adding visual.py --- .gitignore | 3 + .../comparison_platform/src/visuals.py | 59 +++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/.gitignore b/.gitignore index 0d20b64..ebb6b47 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ *.pyc + +.vscode + diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py index e69de29..b671fbd 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py @@ -0,0 +1,59 @@ +import statistics +import matplotlib.pyplot as plt +import numpy as np + +''' + Function to visualize functions performances + + @param: time_stats - Time related statistics + @param: memory_stats - Memory related statistics + @param: functions - A tuple containing algorithm names +''' +def visualizer(time_stats, memory_stats): + # Converting to appropriate data + func_names = [] + performance = [] + error = [] + peak_memory = [] + + # Extract time related statistics + for name, number in time_stats.items(): + func_names.append(name) + performance.append(statistics.mean(number)) + error.append(statistics.stdev(number)) + peak_memory.append(memory_stats[name]) + + y_pos = np.arange(len(func_names)) + + # Plotting the runtime performance + fig1 = plt.figure(figsize=(10,10)) + ax1 = fig1.add_subplot() + + # Drawing a horizontal bar chart + ax1.barh(y_pos, performance, xerr=error, align='center', + color='green', ecolor='black') + ax1.set_yticks(y_pos) + ax1.set_yticklabels(func_names) + # Read labels top to bottom + ax1.invert_yaxis() + # Labels + ax1.set_xlabel('Mean Runtime (ms)') + ax1.set_title('Runtime Comparison') + + + # Plotting the memory performance + fig2 = plt.figure(figsize=(10,10)) + ax2 = fig2.add_subplot() + + # Creating another horizontal bar char for memory + ax2.barh(y_pos, peak_memory, align='center') + ax2.set_yticks(y_pos) + ax2.set_yticklabels(func_names) + #Read labels top to bottom + ax2.invert_yaxis() + # Labels + ax2.set_xlabel('Peak Memory Use (KB)') + ax2.set_title('Memory Usage Comparison') + + # Show the plot + plt.show() \ No newline at end of file From af93e343bd4b0c51f2049055fdc5b81f34f1ef0e Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Tue, 11 Aug 2020 16:52:44 +1000 Subject: [PATCH 04/31] Adding benchmark.py for benchmarking --- .../comparison_platform/src/benchmark.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py new file mode 100644 index 0000000..119593f --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py @@ -0,0 +1,49 @@ +# Importing necessary files +import math +import time +import random +import statistics +import tracemalloc +import sys + +''' + The core function which handles the benchmarking of different algorithms + + @param functions - A tuple containing the functions we want to compare + @param args - A tuple containing the arguments we want to pass into each function +''' +def benchmarker(functions, args): + # Determining the number of iterations to be made + iterations = 100 if len(sys.argv) < 2 else int(sys.argv[1]) + # Dictionary to hold the runtime of the comparing functions + times = {f.__name__: [] for f in functions} + # Dictionary to hold memory + peak_memory = {f.__name__: 0 for f in functions} + + # Loading the arguments to proper functions + argument_dict = {} + for i in range(len(functions)): + argument_dict[functions[i].__name__] = args[i] + + # Running each function randomly around 3000 times + for i in range(iterations): + for _ in range(len(functions)): + # Choose a function randomly from the list and load its arguments + func = random.choice(functions) + func_args = argument_dict[func.__name__] + # Time its execution start tracing memory allocation + t0 = time.time() + tracemalloc.start() + # Run the functions with the arguments + func(*func_args) + # Stop memory tracing + peak = tracemalloc.get_traced_memory()[1] + tracemalloc.stop() + # Stop timer + t1 = time.time() + times[func.__name__].append((t1-t0)*1000) + peak_memory[func.__name__] = peak \ + if peak > peak_memory[func.__name__] else peak_memory[func.__name__] + + + return times, peak_memory \ No newline at end of file From 7d487001caacb76319103e2929cf8996e71014bf Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 14 Aug 2020 15:18:27 +1000 Subject: [PATCH 05/31] Maze Generation Features --- .../comparison_platform/lib/a_star.py | 151 ++++++++++++ .../lib/modified_pledge.py | 214 ++++++++++++++++++ .../pathfinding/comparison_platform/run.py | 39 ++++ .../comparison_platform/sandbox.py | 7 + .../comparison_platform/src/maze/maze_demo.py | 31 +++ .../src/maze/random_maze.py | 52 +++++ .../comparison_platform/src/platform.py | 58 +++++ 7 files changed, 552 insertions(+) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/modified_pledge.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/sandbox.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/src/maze/maze_demo.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/src/maze/random_maze.py diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py new file mode 100644 index 0000000..93d77ae --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py @@ -0,0 +1,151 @@ +''' +This file is provided for additional testing of the different algorithms +''' + +import time +import random +import math +import heapq + +# Wrapper class with added functionalities +class PriorityQueue: + def __init__(self): + self.elements = [] + + def isEmpty(self): + return len(self.elements) == 0 + + def put(self, item, priority): + heapq.heappush(self.elements, (priority, item)) + + def get(self): + # Return only the item + return heapq.heappop(self.elements)[1] + + +# Function to reconstruct path from start to goal using the source dictionary +def reconstruct_path(came_from, start, goal): + current = goal + path = [] + + while current != start: + path.append(current) + current = came_from[current] + + # Add the start to the path - optional + path.append(start) + # reverse the path to get from start to goal + path.reverse() + return path + +# Combine two paths and avoid happing overlapping nodes +def join_paths(path_1, path_2): + path_2.reverse() + if(path_1[-1] == path_2[0]): + return path_1 + path_2[1:] + + +# The heuristic used by the a-star algorithm +# This is used to calculate the distance of current node form the goal too +def manhattan_heuristic(a, b): + (x1, y1) = a + (x2, y2) = b + + return abs(x1 - x2) + abs(y1 - y2) + +# Diagonal heuristic which considers the diagonal value of nodes +def diagonal_heuristic(a, b): + (x1, y1) = a + (x2, y2) = b + + return max(abs(x1 - x2), abs(y1 - y2)) + +# Taking the euclidian distance as heuristics +def euclidian_heuristic(a, b): + (x1, y1) = a + (x2, y2) = b + + return math.sqrt((x1 - x2)**2 + (y1 - y2)**2) + +# Implementation of the a-star search algorithm +def a_star_search(graph, start, goal): + # Priority Queue track progression of nodes + frontier = PriorityQueue() + frontier.put(start, 0) + + # Dictionary to track origin of a node + came_from = {} + # Dictionary to track the cost to move to a particular node + cost_so_far = {} + + # Add starting node into the dictionaries + came_from[start] = None + cost_so_far[start] = 0 + + # While the Priority queue is not empty + while not frontier.isEmpty(): + # Get the top of queue + current = frontier.get() + + # check if we have reached destination + if current == goal: + break + + # Loop through neighbors of current node and process them + for next in graph.neighbors(current): + # Calculate the new cost to travel to neighboring node + # The new cost is cost of travelling to current node plus the cost of + # travelling from current node to the neighbor + new_cost = cost_so_far[current] + graph.cost(current, next) + + # Check if this node hasn't been reached before or we have a new cheaper path + if next not in cost_so_far or new_cost < cost_so_far[next]: + cost_so_far[next] = new_cost + # Set the priority of the neighbor using the heuristic + # We are taking distance to goal in consideration through heuristics + priority = new_cost + manhattan_heuristic(goal, next) + frontier.put(next, priority) + came_from[next] = current + + + # Return the cost and source dictionary + #return came_from, cost_so_far + return reconstruct_path(came_from, start, goal) + + +class OpenGrid: + def __init__(self): + self.walls = [] + self.weights = {} + + # Check if current location is blocked for not + def passable(self, id): + return id not in self.walls + + # Check the neighbors of the current grid + def neighbors(self, id): + (x, y) = id + result = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)] + # Just for aesthetics + if(x + y) % 2 == 0: + result.reverse() + # Check if the neighbors are not blocked + result = filter(self.passable, result) + + return result + + # Method to get cost to travel from weights, else default value of 1 + def cost(self, from_node, to_node): + return self.weights.get(to_node, 1) + +def a_star(oc_grid, start, end): + diagram = OpenGrid() + diagram.walls = oc_grid + try: + path = a_star_search(diagram, start, end) + maze_solved = True + except: + path = start + maze_solved = False + + return path, maze_solved diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/modified_pledge.py b/nova_rover_demos/pathfinding/comparison_platform/lib/modified_pledge.py new file mode 100644 index 0000000..dda7a63 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/modified_pledge.py @@ -0,0 +1,214 @@ +import numpy as np + + +def modified_pledge(occupancy_grid, start_position, end_position): + + + maze = Labyrinth(occupancy_grid, start_position, end_position) + rover = Mouse(maze) + while rover.has_reached_exit() == False: + rover.move() + return rover.path, not(rover.infinite_loop) + + +class Mouse: + + def __init__(self, labyrinth): + self.__labyrinth = labyrinth + self.position = labyrinth.start_pos + + self.direction = self.direction_to_goal() #Number between 0-3 + + self.wall_following = False + self.wall_following_direction = 'Left' + self.sum_turns = 0 + + self.path = [self.position] + self.path_dict = {} + self.path_dict[self.position] = 1 + + self.infinite_loop = False + + def direction_to_goal(self): + x,y = np.array(self.__labyrinth.goal) - np.array(self.position) + theta = np.arctan(y/x) * 180/np.pi + ''' + Account for ambiguity from arctan: specify direction around unit circle + ''' + if x < 0: + if y >= 0: + theta += 180 + else: + theta -= 180 + directions = np.array([0, 90, 180, -90]) + idx = np.abs(directions - theta).argmin() + return idx + + def has_reached_exit(self): + if self.check_loop(): #Checks for loops to end the code] + self.infinite_loop = True + out = True + else: + out = tuple(self.position) == self.__labyrinth.goal + return out + + def turn_right(self): + return (self.direction - 1)%4 + + def turn_left(self): + return (self.direction + 1)%4 + + def next_right(self): + dir = self.direction + for j in range(1,3+1): + if (dir - j)%4 in self.__labyrinth.get_allowed_directions(self.position): + out = (dir - j)%4 + break + return out, -j + + def next_left(self): + dir = self.direction + for j in range(1,3+1): + if (dir + j)%4 in self.__labyrinth.get_allowed_directions(self.position): + out = (dir + j)%4 + break + return out, j + + def continue_straight(self): + return self.direction, 0 + + def step(self, turn_direction): + return tuple( np.array(self.position) + np.array(self.__labyrinth.movements[turn_direction]) ) + + def check_loop(self): + ''' + Returns 'True' if a single cell is visited for a third time (Less visits might be sufficient to detect loop) + ''' + return max(self.path_dict.values()) >= 15 + + def move(self): + if self.has_reached_exit() == False: + ''' + Logic for moving directly towards goal + ''' + if self.wall_following == False: + if self.direction_to_goal() in self.__labyrinth.get_allowed_directions(self.position): + self.position = tuple(self.position + self.__labyrinth.movements[self.direction_to_goal()]) + self.direction = self.direction_to_goal() + self.path.append(tuple(self.position)) + else: + self.wall_following = True #If a wall is encountered, begin wall following + + if self.path.count(self.position) > 1: #Turn right if location has been visited before + self.wall_following_direction = 'Right' + ''' + Begin wall following phase by first aligning mouse perpendicular to wall + ''' + self.direction, num_turns = self.next_right() + self.sum_turns += num_turns + + else: + self.wall_following_direction = 'Left' + ''' + Begin wall following phase by first aligning mouse perpendicular to wall + ''' + self.direction, num_turns = self.next_left() + self.sum_turns += num_turns + else: + ''' + Logic for Wall Following + ''' + if self.wall_following_direction == 'Left': + if self.turn_right() in self.__labyrinth.get_allowed_directions(self.position): + ''' + Turn Right if Possible + ''' + self.direction, num_turns = self.next_right() + self.sum_turns += num_turns + self.position = tuple(self.step(self.direction)) + + elif self.direction in self.__labyrinth.get_allowed_directions(self.position): + ''' + Continue Straight if no right turn is available + ''' + self.position = tuple(self.step(self.direction)) + + else: + ''' + Take the next left if no other option available + ''' + self.direction, num_turns = self.next_left() + self.sum_turns += num_turns + self.position = tuple(self.step(self.direction)) + + elif self.wall_following_direction == 'Right': + if self.turn_left() in self.__labyrinth.get_allowed_directions(self.position): + ''' + Turn Right if Possible + ''' + self.direction, num_turns = self.next_left() + self.sum_turns += num_turns + self.position = tuple(self.step(self.direction)) + + elif self.direction in self.__labyrinth.get_allowed_directions(self.position): + ''' + Continue Straight if no right turn is available + ''' + self.position = tuple(self.step(self.direction)) + + else: + ''' + Take the next right if no other option available + ''' + self.direction, num_turns = self.next_right() + self.sum_turns += num_turns + self.position = tuple(self.step(self.direction)) + + self.path.append(tuple(self.position)) #Update ordered path for output + ''' + Update the path dictionary for loop detection + ''' + try: self.path_dict[tuple(self.position)] += 1 + except: self.path_dict[tuple(self.position)] = 1 + + if self.sum_turns == 0 or abs(self.sum_turns) >= 5: + self.wall_following = False + self.sum_terms = 0 + +class Labyrinth: + + def __init__(self, walls, start, end): + self.walls = walls + self.walls_dict = self.read_walls_to_dict() + + self.start_pos = tuple(start) + self.goal = tuple(end) + + self.directions = [0, 1, 2, 3] + self.movements = np.array([ [1,0], [0,1], [-1,0], [0,-1] ]) + + ''' + Directions Structure: + | Right = 0 | up = 1 | left = 2 | down = 3 | + ''' + def get_allowed_directions(self, position): + mouse_position = np.array(position) + + allowed_directions = [] + for direction, movement in zip(self.directions, self.movements): + if not self.is_wall(mouse_position + movement): + allowed_directions.append(direction) + return allowed_directions + + def is_wall(self, position): + out = False + if tuple(position) in self.walls_dict: + out = True + return out + #Do this with a set of tuples or dictionary - constant time lookup + + def read_walls_to_dict(self): + walls_dict = {} + for i in self.walls: + walls_dict[i] = 0 + return walls_dict diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index e69de29..02db1cc 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -0,0 +1,39 @@ +from src.platform import * +import warnings +''' +Place Algorithm Imports Here +''' + +from lib.modified_pledge import * +from lib.a_star import * + + +''' +Place the function call for each algorithm to be compared into the list named 'algorithm list'. + +Functions should be of the form * My_Function(occupancy_grid, start_position, end_position) + > occupancy_grid: list of tuples (any length) of coordinates containing walls + > start_position: length 2 tuple containing x and y starting coordinates + > end_position: length 2 tuple containing x and y coordinates of the goal coordinates + +''' + +iterations = 3 +algorithm_list = [modified_pledge, a_star] +density = 'light' #Density keyword describes the density of the environment to be traversed. Can be 'heavy', 'medium', 'light' or 'sparse' + + + +###################################################################### +''' +Below this point no input is required from the user :) +''' +###################################################################### + +warnings.simplefilter("ignore") + +a = compare_algorithms(algorithm_list, iterations, density) + + +for i in a: + print(i) diff --git a/nova_rover_demos/pathfinding/comparison_platform/sandbox.py b/nova_rover_demos/pathfinding/comparison_platform/sandbox.py new file mode 100644 index 0000000..cb757eb --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/sandbox.py @@ -0,0 +1,7 @@ +import random + +a = [5, 4, 3, 2, 1] + +del a[a.index(5)] + +print(a) diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/maze/maze_demo.py b/nova_rover_demos/pathfinding/comparison_platform/src/maze/maze_demo.py new file mode 100644 index 0000000..b24a694 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/src/maze/maze_demo.py @@ -0,0 +1,31 @@ +import numpy as np + + +from random_maze import * + +xdim = 1000 +ydim = 1000 + +density = ['sparse', 'light', 'medium', 'heavy'] + +subplot_ref = [ (0,0), (0,1), (1,0), (1,1)] +fig, axs = plt.subplots(2, 2) + + + +for i in range(len(density)): + walls, start, end = random_maze(xdim, ydim, density[i]) + maze = np.zeros([xdim, ydim]) + + for cell in walls: + maze[cell] = 1 + axs[subplot_ref[i]].imshow(maze) + axs[subplot_ref[i]].set_title(f'{density[i]}') + +# walls, start, end = random_maze(xdim, ydim, 'super heavy') +# maze = np.zeros([xdim, ydim]) + +# for cell in walls: +# maze[cell] = 1 +# plt.imshow(maze) +plt.show() diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/maze/random_maze.py b/nova_rover_demos/pathfinding/comparison_platform/src/maze/random_maze.py new file mode 100644 index 0000000..8a9e1e0 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/src/maze/random_maze.py @@ -0,0 +1,52 @@ +import numpy as np +import random + +import matplotlib.pyplot as plt + +def random_obstacle(x, y, max_size): + obstacle_size = random.randint(5,max_size) + obstacle_occupancy = [(x,y)] + for i in range(obstacle_size): + x += random.choice([1, 0, -1]) + y += random.choice([1, 0, -1]) + obstacle_occupancy.append((x,y)) + return obstacle_occupancy + + + +def random_maze(x_dimension, y_dimension, density): + oc_grid = [] + if density == 'heavy': + num_obstacles = int( np.sqrt(x_dimension * y_dimension) ) + max_obstacle_size = int( np.sqrt(x_dimension * y_dimension) ) + elif density == 'medium': + num_obstacles = int( 0.75 * np.sqrt(x_dimension * y_dimension) ) + max_obstacle_size = int( np.sqrt(x_dimension * y_dimension) ) + elif density == 'light': + num_obstacles = int( 0.5 * np.sqrt(x_dimension * y_dimension) ) + max_obstacle_size = int( np.sqrt(x_dimension * y_dimension) ) + elif density == 'sparse': + num_obstacles = int( 0.25 * np.sqrt(x_dimension * y_dimension) ) + max_obstacle_size = int( np.sqrt(x_dimension * y_dimension) ) + + start = (0,0) + end = (x_dimension - 1, y_dimension - 1) + + for i in range(num_obstacles): + x = random.randint(1, x_dimension - 2) + y = random.randint(1, y_dimension - 2) + for i in random_obstacle(x,y, max_obstacle_size): + if 0 <= i[0] <= x_dimension - 2 and 0 <= i[1] <= y_dimension - 2: + oc_grid.append(i) + ''' + Start and End positions are either in the corner or centre of the edge of the maze + Start and End are always on opposite edges of the maze + ''' + waypoints = [0, int(x_dimension/2), x_dimension - 1] + start = (random.choice(waypoints), 0) + if start[0] != int(x_dimension/2): #Prevent the maze from generating start and end coordinates along the edge of the maze + del waypoints[waypoints.index(start[0])] + + end = (random.choice(waypoints), y_dimension - 1) + + return oc_grid, start, end diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py index e69de29..55c7d05 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py @@ -0,0 +1,58 @@ +import time +import random +import numpy as np + +from src.maze.random_maze import * +''' +Syntax: random_maze(x_dimension, y_dimension, density) + > Density can be 'heavy', 'medium', 'light', or 'sparse' +''' + + +def compare_algorithms(algorithm_list, iterations, density): + + + analytics = [{'runtime': [], 'path_length': []} for algorithm in algorithm_list] + + maze_x_dimension = 150 + maze_y_dimension = 150 + + occupancy_grid, start_coordinates, end_coordinates = random_maze(maze_x_dimension, maze_y_dimension, density) + + for i in range(iterations): + print(i) + ''' + Randomly order the operation of the algorithms in the list + ''' + pair = list(zip(algorithm_list, analytics)) + random.shuffle(pair) + algorithm_list, analytics = zip(*pair) + + for algorithm_index in range(len(algorithm_list)): + ''' + Compute the path with given algorithm and collect analytic data + ''' + t_start = time.time() + path, maze_solved = algorithm_list[algorithm_index](occupancy_grid, start_coordinates, end_coordinates) + t_end = time.time() + ''' + Write analytic data to dictionary + ''' + analytics[algorithm_index]['runtime'].append(t_end - t_start) + + if maze_solved == True: + analytics[algorithm_index]['path_length'].append(len(path)) + else: + analytics[algorithm_index]['path_length'] = np.inf + + ''' + Average all the quantities in the data analytics over the number of iterations + ''' + for index in range(len(algorithm_list)): + analytics[index]['path_length'] = int( np.average(analytics[index]['path_length']) ) + + analytics[index]['runtime_variance'] = np.var(analytics[index]['runtime']) + analytics[index]['runtime'] = np.average(analytics[index]['runtime']) + + algorithm_list = [function.__name__ for function in algorithm_list] + return list(zip(algorithm_list, analytics)) From 5dc43eee9dfdcad0d9cf4aa658e3dd089b43290c Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 14 Aug 2020 16:27:05 +1000 Subject: [PATCH 06/31] Merging benchmark and Wrapper Functions --- .../pathfinding/comparison_platform/run.py | 6 +- .../comparison_platform/sandbox.py | 46 +++++++++++++-- .../comparison_platform/src/benchmark.py | 11 +++- .../comparison_platform/src/maze/maze_demo.py | 4 +- .../comparison_platform/src/platform.py | 58 +++++-------------- .../comparison_platform/src/visuals.py | 14 +---- 6 files changed, 69 insertions(+), 70 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index 02db1cc..c173a94 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -18,7 +18,6 @@ ''' -iterations = 3 algorithm_list = [modified_pledge, a_star] density = 'light' #Density keyword describes the density of the environment to be traversed. Can be 'heavy', 'medium', 'light' or 'sparse' @@ -32,8 +31,5 @@ warnings.simplefilter("ignore") -a = compare_algorithms(algorithm_list, iterations, density) +compare_algorithms(algorithm_list, density) - -for i in a: - print(i) diff --git a/nova_rover_demos/pathfinding/comparison_platform/sandbox.py b/nova_rover_demos/pathfinding/comparison_platform/sandbox.py index cb757eb..91692fd 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/sandbox.py +++ b/nova_rover_demos/pathfinding/comparison_platform/sandbox.py @@ -1,7 +1,45 @@ -import random -a = [5, 4, 3, 2, 1] + # analytics = [{'runtime': [], 'path_length': []} for algorithm in algorithm_list] -del a[a.index(5)] + # maze_x_dimension = 50 + # maze_y_dimension = 50 -print(a) + # occupancy_grid, start_coordinates, end_coordinates = random_maze(maze_x_dimension, maze_y_dimension, density) + + # for i in range(iterations): + # print(i) + # ''' + # Randomly order the operation of the algorithms in the list + # ''' + # pair = list(zip(algorithm_list, analytics)) + # random.shuffle(pair) + # algorithm_list, analytics = zip(*pair) + + # for algorithm_index in range(len(algorithm_list)): + # ''' + # Compute the path with given algorithm and collect analytic data + # ''' + # t_start = time.time() + # path, maze_solved = algorithm_list[algorithm_index](occupancy_grid, start_coordinates, end_coordinates) + # t_end = time.time() + # ''' + # Write analytic data to dictionary + # ''' + # analytics[algorithm_index]['runtime'].append(t_end - t_start) + + # if maze_solved == True: + # analytics[algorithm_index]['path_length'].append(len(path)) + # else: + # analytics[algorithm_index]['path_length'] = np.inf + + # ''' + # Average all the quantities in the data analytics over the number of iterations + # ''' + # for index in range(len(algorithm_list)): + # analytics[index]['path_length'] = int( np.average(analytics[index]['path_length']) ) + + # analytics[index]['runtime_variance'] = np.var(analytics[index]['runtime']) + # analytics[index]['runtime'] = np.average(analytics[index]['runtime']) + + # algorithm_list = [function.__name__ for function in algorithm_list] + # return list(zip(algorithm_list, analytics)) diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py index 119593f..0dee7e8 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py @@ -13,6 +13,7 @@ @param args - A tuple containing the arguments we want to pass into each function ''' def benchmarker(functions, args): + # Determining the number of iterations to be made iterations = 100 if len(sys.argv) < 2 else int(sys.argv[1]) # Dictionary to hold the runtime of the comparing functions @@ -21,21 +22,25 @@ def benchmarker(functions, args): peak_memory = {f.__name__: 0 for f in functions} # Loading the arguments to proper functions + ''' + args = [ [...], [....], [...] ] + ''' argument_dict = {} for i in range(len(functions)): - argument_dict[functions[i].__name__] = args[i] + argument_dict[functions[i].__name__] = args # Running each function randomly around 3000 times for i in range(iterations): for _ in range(len(functions)): # Choose a function randomly from the list and load its arguments func = random.choice(functions) - func_args = argument_dict[func.__name__] + #func_args = argument_dict[func.__name__] # Time its execution start tracing memory allocation t0 = time.time() tracemalloc.start() # Run the functions with the arguments - func(*func_args) + #func(*func_args) + func(*args) # Stop memory tracing peak = tracemalloc.get_traced_memory()[1] tracemalloc.stop() diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/maze/maze_demo.py b/nova_rover_demos/pathfinding/comparison_platform/src/maze/maze_demo.py index b24a694..c8b3701 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/maze/maze_demo.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/maze/maze_demo.py @@ -3,8 +3,8 @@ from random_maze import * -xdim = 1000 -ydim = 1000 +xdim = 200 +ydim = 200 density = ['sparse', 'light', 'medium', 'heavy'] diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py index 55c7d05..c59f959 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py @@ -3,56 +3,24 @@ import numpy as np from src.maze.random_maze import * +from src.benchmark import * +from src.visuals import * ''' Syntax: random_maze(x_dimension, y_dimension, density) > Density can be 'heavy', 'medium', 'light', or 'sparse' ''' -def compare_algorithms(algorithm_list, iterations, density): +def compare_algorithms(algorithm_list, density): + + maze_x_dimension, maze_y_dimension = 10, 10 + # Generate the arguments to the benchmarking function + # args output > occupancy_grid, start_coordinates, end_coordinates + args = [*random_maze(maze_x_dimension, maze_y_dimension, density)] + + # Run the benchmarking on the selected arguments + time_stats, memory_stats = benchmarker( algorithm_list, args ) - analytics = [{'runtime': [], 'path_length': []} for algorithm in algorithm_list] - - maze_x_dimension = 150 - maze_y_dimension = 150 - - occupancy_grid, start_coordinates, end_coordinates = random_maze(maze_x_dimension, maze_y_dimension, density) - - for i in range(iterations): - print(i) - ''' - Randomly order the operation of the algorithms in the list - ''' - pair = list(zip(algorithm_list, analytics)) - random.shuffle(pair) - algorithm_list, analytics = zip(*pair) - - for algorithm_index in range(len(algorithm_list)): - ''' - Compute the path with given algorithm and collect analytic data - ''' - t_start = time.time() - path, maze_solved = algorithm_list[algorithm_index](occupancy_grid, start_coordinates, end_coordinates) - t_end = time.time() - ''' - Write analytic data to dictionary - ''' - analytics[algorithm_index]['runtime'].append(t_end - t_start) - - if maze_solved == True: - analytics[algorithm_index]['path_length'].append(len(path)) - else: - analytics[algorithm_index]['path_length'] = np.inf - - ''' - Average all the quantities in the data analytics over the number of iterations - ''' - for index in range(len(algorithm_list)): - analytics[index]['path_length'] = int( np.average(analytics[index]['path_length']) ) - - analytics[index]['runtime_variance'] = np.var(analytics[index]['runtime']) - analytics[index]['runtime'] = np.average(analytics[index]['runtime']) - - algorithm_list = [function.__name__ for function in algorithm_list] - return list(zip(algorithm_list, analytics)) + # Draw visuals based on our benchmarking + visualiser(time_stats, memory_stats) \ No newline at end of file diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py index b671fbd..e4639e8 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py @@ -2,21 +2,14 @@ import matplotlib.pyplot as plt import numpy as np -''' - Function to visualize functions performances - - @param: time_stats - Time related statistics - @param: memory_stats - Memory related statistics - @param: functions - A tuple containing algorithm names -''' -def visualizer(time_stats, memory_stats): +def visualiser(time_stats, memory_stats): + # Converting to appropriate data func_names = [] performance = [] error = [] peak_memory = [] - # Extract time related statistics for name, number in time_stats.items(): func_names.append(name) performance.append(statistics.mean(number)) @@ -29,7 +22,6 @@ def visualizer(time_stats, memory_stats): fig1 = plt.figure(figsize=(10,10)) ax1 = fig1.add_subplot() - # Drawing a horizontal bar chart ax1.barh(y_pos, performance, xerr=error, align='center', color='green', ecolor='black') ax1.set_yticks(y_pos) @@ -41,11 +33,11 @@ def visualizer(time_stats, memory_stats): ax1.set_title('Runtime Comparison') + # Plotting the memory performance fig2 = plt.figure(figsize=(10,10)) ax2 = fig2.add_subplot() - # Creating another horizontal bar char for memory ax2.barh(y_pos, peak_memory, align='center') ax2.set_yticks(y_pos) ax2.set_yticklabels(func_names) From 200ea3d6c529d64fdda862f7d17b8d505bf2b5ab Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 14 Aug 2020 17:09:40 +1000 Subject: [PATCH 07/31] Importing a-star variants --- .../lib/a_star_variants.py | 278 ++++++++++++++++++ .../pathfinding/comparison_platform/run.py | 3 +- .../comparison_platform/src/platform.py | 2 +- .../comparison_platform/src/visuals.py | 1 + 4 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py new file mode 100644 index 0000000..bc72163 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py @@ -0,0 +1,278 @@ +from lib.a_star import * + + +def bidirectional_a_star(oc_grid, start, end): + diagram = OpenGrid() + diagram.walls = oc_grid + try: + path = bidirectional_a_star_core(diagram, start, end) + maze_solved = True + except: + path = start + maze_solved = False + + return path, maze_solved + +def weighted_a_star(oc_grid, start, end): + diagram = OpenGrid() + diagram.walls = oc_grid + try: + path = weighted_a_star_core(diagram, start, end) + maze_solved = True + except: + path = start + maze_solved = False + + return path, maze_solved + +def dynamic_weighted_a_star(oc_grid, start, end): + diagram = OpenGrid() + diagram.walls = oc_grid + try: + path = dynamic_weighted_a_star_core(diagram, start, end) + maze_solved = True + except: + path = start + maze_solved = False + + return path, maze_solved + + + +# Implementation of bidirectional a-start +# This algorithm will start looking for a path from both the start and the goal +def bidirectional_a_star_core(graph, start, goal): + # Priority queues to hold the progression of nodes + # This will hold nodes starting from the 'start' node + frontier_1 = PriorityQueue() + frontier_1.put(start, 0) + # This will node nodes starting from the 'goal' node + frontier_2 = PriorityQueue() + frontier_2.put(goal, 0) + + # Dictionaries to hold the cost of travel and origin of nodes + # For the start node + came_from_1 = {} + cost_so_far_1 = {} + + came_from_1[start] = None + cost_so_far_1[start] = 0 + + + # For the goal node + came_from_2 = {} + cost_so_far_2 = {} + + came_from_2[goal] = None + cost_so_far_2[goal] = 0 + + # Run the loop until both of the + while not frontier_1.isEmpty() or frontier_2.isEmpty(): + # Get the top from each of the queues + current_1 = frontier_1.get() + current_2 = frontier_2.get() + + #Check if we have found a full path or not + if current_1 == goal or current_2 == start: + break + # We have found two overlapping node + if current_1 in cost_so_far_2 and current_2 in cost_so_far_1: + path_1 = reconstruct_path(came_from_1, start, current_1) + path_2 = reconstruct_path(came_from_2, goal, current_2) + combined_path = join_paths(path_1, path_2) + break + # Only one of the nodes are are overlapping + elif (current_1 in cost_so_far_2): + path_1 = reconstruct_path(came_from_1, start, current_1) + path_2 = reconstruct_path(came_from_2, goal, current_1) + combined_path = join_paths(path_1, path_2) + break + + elif (current_2 in cost_so_far_1): + path_1 = reconstruct_path(came_from_1, start, current_2) + path_2 = reconstruct_path(came_from_2, goal, current_2) + combined_path = join_paths(path_1, path_2) + break + + + # A detailed description of the steps can be found in the implementation of + # a_star_search function + # Process the nodes from the start side + for next in graph.neighbors(current_1): + new_cost = cost_so_far_1[current_1] + graph.cost(current_1, next) + + if next not in cost_so_far_1 or new_cost < cost_so_far_1[next]: + cost_so_far_1[next] = new_cost + priority = new_cost + manhattan_heuristic(goal, next) + frontier_1.put(next, priority) + came_from_1[next] = current_1 + + # Process the nodes from the goal side + for next in graph.neighbors(current_2): + new_cost = cost_so_far_2[current_2] + graph.cost(current_2, next) + + if next not in cost_so_far_2 or new_cost < cost_so_far_2[next]: + cost_so_far_2[next] = new_cost + priority = new_cost + manhattan_heuristic(start, next) + frontier_2.put(next, priority) + came_from_2[next] = current_2 + + + return combined_path + + +# Weighted A-star +''' + Weighting sacrifices solution optimality to speed up the search. The larger the weight, + the more greedy the search. + Weighted A* does not provide the optimal path. Rather speeds up the process. z + + The movement cost used for this is: + f = g + w2 * h + Here, + g = g-cost -> Distance from start + h = h-cost -> Distance from goal + w2 = (1 + e) where e > 0 = How much we consider the heuristic; + For this algorithm + e = 4. So w2 = 5 => Theoretically return us a solution 5 times faster +''' + +def weighted_a_star_core(graph, start, goal): + # The weight which we will prioritise the goal + WEIGHT = 5 + # Priority Queue track progression of nodes + frontier = PriorityQueue() + frontier.put(start, 0) + + # Dictionary to track origin of a node + came_from = {} + # Dictionary to track the cost to move to a particular node + cost_so_far = {} + + # Add starting node into the dictionaries + came_from[start] = None + cost_so_far[start] = 0 + + # While the Priority queue is not empty + while not frontier.isEmpty(): + # Get the top of queue + current = frontier.get() + + # check if we have reached destination + if current == goal: + break + + # Loop through neighbors of current node and process them + for next in graph.neighbors(current): + # Calculate the new cost to travel to neighboring node + # The new cost is cost of travelling to current node plus the cost of + # travelling from current node to the neighbor + new_cost = cost_so_far[current] + graph.cost(current, next) + + # Check if this node hasn't been reached before or we have a new cheaper path + if next not in cost_so_far or new_cost < cost_so_far[next]: + cost_so_far[next] = new_cost + # Set the priority of the neighbor using the heuristic + # We are taking distance to goal in consideration through heuristics + priority = new_cost + manhattan_heuristic(goal, next) * WEIGHT + frontier.put(next, priority) + came_from[next] = current + + + # Return the cost and source dictionary + #return came_from, cost_so_far + return reconstruct_path(came_from, start, goal) + + +# Dynamically weighted A* +def dynamic_weighted_a_star_core(graph, start, goal, node_threshold, epsilon=2): + # The weight which we will prioritise the goal + weight = 1 + # Priority Queue track progression of nodes + frontier = PriorityQueue() + frontier.put(start, 0) + + # Dictionary to track origin of a node + came_from = {} + # Dictionary to track the cost to move to a particular node + cost_so_far = {} + + # Add starting node into the dictionaries + came_from[start] = None + cost_so_far[start] = 0 + + # Counter to track the depth + count = 0 + depth = 1 + + # While the Priority queue is not empty + while not frontier.isEmpty(): + # Get the top of queue + current = frontier.get() + count += 1 + + # Adjust depth of the search + # If we have searched all nodes in that level increase depth + if count == 4 ** depth: + depth += 1 + + # check if we have reached destination + if current == goal: + break + + # Dynamically calculate the weight + if(depth <= node_threshold): + # Dynamic weighting + weight = 1 - (depth / node_threshold) + else: + weight = 0 + + # Loop through neighbors of current node and process them + for next in graph.neighbors(current): + # Calculate the new cost to travel to neighboring node + # The new cost is cost of travelling to current node plus the cost of + # travelling from current node to the neighbor + new_cost = cost_so_far[current] + graph.cost(current, next) + + # Check if this node hasn't been reached before or we have a new cheaper path + if next not in cost_so_far or new_cost < cost_so_far[next]: + cost_so_far[next] = new_cost + # Set the priority of the neighbor using the heuristic + # We are taking distance to goal in consideration through heuristics + priority = new_cost + manhattan_heuristic(goal, next) * (1 + weight * epsilon) + frontier.put(next, priority) + came_from[next] = current + + + # Return the cost and source dictionary + #return came_from, cost_so_far + return reconstruct_path(came_from, start, goal) + + + +class OpenGrid: + def __init__(self): + self.walls = [] + self.weights = {} + + # Check if current location is blocked for not + def passable(self, id): + return id not in self.walls + + # Check the neighbors of the current grid + def neighbors(self, id): + (x, y) = id + result = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)] + # Just for aesthetics + if(x + y) % 2 == 0: + result.reverse() + # Check if the neighbors are not blocked + result = filter(self.passable, result) + + return result + + # Method to get cost to travel from weights, else default value of 1 + def cost(self, from_node, to_node): + return self.weights.get(to_node, 1) + + diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index c173a94..f7cb162 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -6,6 +6,7 @@ from lib.modified_pledge import * from lib.a_star import * +from lib.a_star_variants import * ''' @@ -18,7 +19,7 @@ ''' -algorithm_list = [modified_pledge, a_star] +algorithm_list = [modified_pledge, a_star, bidirectional_a_star, weighted_a_star, dynamic_weighted_a_star] density = 'light' #Density keyword describes the density of the environment to be traversed. Can be 'heavy', 'medium', 'light' or 'sparse' diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py index c59f959..f732bdb 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py @@ -13,7 +13,7 @@ def compare_algorithms(algorithm_list, density): - maze_x_dimension, maze_y_dimension = 10, 10 + maze_x_dimension, maze_y_dimension = 150, 150 # Generate the arguments to the benchmarking function # args output > occupancy_grid, start_coordinates, end_coordinates diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py index e4639e8..42b0e8c 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py @@ -29,6 +29,7 @@ def visualiser(time_stats, memory_stats): # Read labels top to bottom ax1.invert_yaxis() # Labels + ax1.set_xscale('log') ax1.set_xlabel('Mean Runtime (ms)') ax1.set_title('Runtime Comparison') From 956bffe72043d53196c004da3d0225e867c72c65 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Sat, 15 Aug 2020 10:49:21 +1000 Subject: [PATCH 08/31] Adding path visualisation --- .../pathfinding/comparison_platform/run.py | 2 +- .../comparison_platform/src/benchmark.py | 10 +++++--- .../comparison_platform/src/platform.py | 6 ++--- .../comparison_platform/src/visuals.py | 25 +++++++++++++++++-- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index f7cb162..b04e831 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -19,7 +19,7 @@ ''' -algorithm_list = [modified_pledge, a_star, bidirectional_a_star, weighted_a_star, dynamic_weighted_a_star] +algorithm_list = [modified_pledge, a_star, bidirectional_a_star, weighted_a_star] density = 'light' #Density keyword describes the density of the environment to be traversed. Can be 'heavy', 'medium', 'light' or 'sparse' diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py index 0dee7e8..2a65a02 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py @@ -20,7 +20,8 @@ def benchmarker(functions, args): times = {f.__name__: [] for f in functions} # Dictionary to hold memory peak_memory = {f.__name__: 0 for f in functions} - + # A dictionary to keep track of total path lenth + avg_path = {f.__name__: 0 for f in functions} # Loading the arguments to proper functions ''' args = [ [...], [....], [...] ] @@ -40,7 +41,7 @@ def benchmarker(functions, args): tracemalloc.start() # Run the functions with the arguments #func(*func_args) - func(*args) + path, status = func(*args) # Stop memory tracing peak = tracemalloc.get_traced_memory()[1] tracemalloc.stop() @@ -49,6 +50,7 @@ def benchmarker(functions, args): times[func.__name__].append((t1-t0)*1000) peak_memory[func.__name__] = peak \ if peak > peak_memory[func.__name__] else peak_memory[func.__name__] + + avg_path[func.__name__] = len(path) + avg_path[func.__name__] - - return times, peak_memory \ No newline at end of file + return times, peak_memory, avg_path \ No newline at end of file diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py index f732bdb..6bfa21d 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py @@ -13,14 +13,14 @@ def compare_algorithms(algorithm_list, density): - maze_x_dimension, maze_y_dimension = 150, 150 + maze_x_dimension, maze_y_dimension = 40, 40 # Generate the arguments to the benchmarking function # args output > occupancy_grid, start_coordinates, end_coordinates args = [*random_maze(maze_x_dimension, maze_y_dimension, density)] # Run the benchmarking on the selected arguments - time_stats, memory_stats = benchmarker( algorithm_list, args ) + time_stats, memory_stats, path_stats = benchmarker( algorithm_list, args ) # Draw visuals based on our benchmarking - visualiser(time_stats, memory_stats) \ No newline at end of file + visualiser(time_stats, memory_stats, path_stats) \ No newline at end of file diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py index 42b0e8c..36cf360 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py @@ -2,25 +2,27 @@ import matplotlib.pyplot as plt import numpy as np -def visualiser(time_stats, memory_stats): +def visualiser(time_stats, memory_stats, path_stats): # Converting to appropriate data func_names = [] performance = [] error = [] peak_memory = [] + avg_path = [] for name, number in time_stats.items(): func_names.append(name) performance.append(statistics.mean(number)) error.append(statistics.stdev(number)) peak_memory.append(memory_stats[name]) + avg_path.append(path_stats[name] / len(number)) y_pos = np.arange(len(func_names)) # Plotting the runtime performance fig1 = plt.figure(figsize=(10,10)) - ax1 = fig1.add_subplot() + ax1 = fig1.add_subplot(211) ax1.barh(y_pos, performance, xerr=error, align='center', color='green', ecolor='black') @@ -33,6 +35,22 @@ def visualiser(time_stats, memory_stats): ax1.set_xlabel('Mean Runtime (ms)') ax1.set_title('Runtime Comparison') + + # Plotting path visuals + ax_path = fig1.add_subplot(212) + ax_path.barh(y_pos, avg_path, align='center', + color='purple', ecolor='black') + # Setting y-axis labels + ax_path.set_yticks(y_pos) + ax_path.set_yticklabels(func_names) + # Adding x-axis labels + # Read labels top to bottom + ax_path.invert_yaxis() + ax_path.set_xlabel('Path Length') + ax_path.set_title('Distance Travelled') + + # Adding some padding between layouts + fig1.tight_layout(pad=4.0) # Plotting the memory performance @@ -48,5 +66,8 @@ def visualiser(time_stats, memory_stats): ax2.set_xlabel('Peak Memory Use (KB)') ax2.set_title('Memory Usage Comparison') + fig2.tight_layout() + + # Show the plot plt.show() \ No newline at end of file From d311f688aae6f8ef53d022883870d75644674f42 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 28 Aug 2020 22:00:23 +1000 Subject: [PATCH 09/31] Upgrading the a-star --- .../lib/a_star_variants.py | 31 ++++++++++++++++++- .../pathfinding/comparison_platform/run.py | 1 + .../comparison_platform/src/platform.py | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py index bc72163..7454fb4 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py @@ -1,5 +1,5 @@ from lib.a_star import * - +from collections import defaultdict def bidirectional_a_star(oc_grid, start, end): diagram = OpenGrid() @@ -276,3 +276,32 @@ def cost(self, from_node, to_node): return self.weights.get(to_node, 1) +# class OpenGrid: +# def __init__(self): +# self.walls = defaultdict(int) +# self.weights = {} + +# # Check if current location is blocked for not +# def passable(self, id): +# return self.walls[id] == 1; + +# # Check the neighbors of the current grid +# def neighbors(self, id): +# (x, y) = id +# result = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)] +# # Just for aesthetics +# if(x + y) % 2 == 0: +# result.reverse() +# # Check if the neighbors are not blocked +# result = filter(self.passable, result) + +# return result + +# # Method to get cost to travel from weights, else default value of 1 +# def cost(self, from_node, to_node): +# return self.weights.get(to_node, 1) + +# # A function to load the walls into the grid +# def add_walls(self, wall_list): +# for cell in wall_list: +# self.walls[cell] = 1; \ No newline at end of file diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index b04e831..9bb69c8 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -20,6 +20,7 @@ ''' algorithm_list = [modified_pledge, a_star, bidirectional_a_star, weighted_a_star] +#algorithm_list = [modified_pledge, bidirectional_a_star] density = 'light' #Density keyword describes the density of the environment to be traversed. Can be 'heavy', 'medium', 'light' or 'sparse' diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py index 6bfa21d..4c36ba5 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py @@ -13,7 +13,7 @@ def compare_algorithms(algorithm_list, density): - maze_x_dimension, maze_y_dimension = 40, 40 + maze_x_dimension, maze_y_dimension = 50, 50 # Generate the arguments to the benchmarking function # args output > occupancy_grid, start_coordinates, end_coordinates From 074d140a6ad59d9265575360b37a4f5d512e4f11 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 28 Aug 2020 22:49:34 +1000 Subject: [PATCH 10/31] Implemented faster a-star algorithm --- .../comparison_platform/lib/a_star.py | 46 ++-- .../lib/a_star_variants.py | 241 +++++++----------- .../comparison_platform/src/platform.py | 14 +- 3 files changed, 129 insertions(+), 172 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py index 93d77ae..f3c6195 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py @@ -6,8 +6,11 @@ import random import math import heapq +from collections import defaultdict # Wrapper class with added functionalities + + class PriorityQueue: def __init__(self): self.elements = [] @@ -39,6 +42,8 @@ def reconstruct_path(came_from, start, goal): return path # Combine two paths and avoid happing overlapping nodes + + def join_paths(path_1, path_2): path_2.reverse() if(path_1[-1] == path_2[0]): @@ -54,6 +59,8 @@ def manhattan_heuristic(a, b): return abs(x1 - x2) + abs(y1 - y2) # Diagonal heuristic which considers the diagonal value of nodes + + def diagonal_heuristic(a, b): (x1, y1) = a (x2, y2) = b @@ -61,6 +68,8 @@ def diagonal_heuristic(a, b): return max(abs(x1 - x2), abs(y1 - y2)) # Taking the euclidian distance as heuristics + + def euclidian_heuristic(a, b): (x1, y1) = a (x2, y2) = b @@ -68,6 +77,8 @@ def euclidian_heuristic(a, b): return math.sqrt((x1 - x2)**2 + (y1 - y2)**2) # Implementation of the a-star search algorithm + + def a_star_search(graph, start, goal): # Priority Queue track progression of nodes frontier = PriorityQueue() @@ -107,20 +118,32 @@ def a_star_search(graph, start, goal): frontier.put(next, priority) came_from[next] = current - # Return the cost and source dictionary - #return came_from, cost_so_far + # return came_from, cost_so_far return reconstruct_path(came_from, start, goal) +def a_star(oc_grid, start, end): + diagram = OpenGrid() + diagram.add_walls(oc_grid) + try: + path = a_star_search(diagram, start, end) + maze_solved = True + except: + path = start + maze_solved = False + + return path, maze_solved + + class OpenGrid: def __init__(self): - self.walls = [] + self.walls = defaultdict(int) self.weights = {} # Check if current location is blocked for not def passable(self, id): - return id not in self.walls + return True if self.walls[id] == 1 else False # Check the neighbors of the current grid def neighbors(self, id): @@ -138,14 +161,7 @@ def neighbors(self, id): def cost(self, from_node, to_node): return self.weights.get(to_node, 1) -def a_star(oc_grid, start, end): - diagram = OpenGrid() - diagram.walls = oc_grid - try: - path = a_star_search(diagram, start, end) - maze_solved = True - except: - path = start - maze_solved = False - - return path, maze_solved + # Helper method to add walls to the dictionary + def add_walls(self, walls): + for wall in walls: + self.walls[wall] = 1 diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py index 7454fb4..9dca348 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py @@ -1,9 +1,10 @@ from lib.a_star import * from collections import defaultdict + def bidirectional_a_star(oc_grid, start, end): - diagram = OpenGrid() - diagram.walls = oc_grid + diagram = OpenGrid() + diagram.add_walls(oc_grid) try: path = bidirectional_a_star_core(diagram, start, end) maze_solved = True @@ -13,9 +14,10 @@ def bidirectional_a_star(oc_grid, start, end): return path, maze_solved + def weighted_a_star(oc_grid, start, end): - diagram = OpenGrid() - diagram.walls = oc_grid + diagram = OpenGrid() + diagram.add_walls(oc_grid) try: path = weighted_a_star_core(diagram, start, end) maze_solved = True @@ -25,9 +27,10 @@ def weighted_a_star(oc_grid, start, end): return path, maze_solved + def dynamic_weighted_a_star(oc_grid, start, end): - diagram = OpenGrid() - diagram.walls = oc_grid + diagram = OpenGrid() + diagram.add_walls(oc_grid) try: path = dynamic_weighted_a_star_core(diagram, start, end) maze_solved = True @@ -38,67 +41,64 @@ def dynamic_weighted_a_star(oc_grid, start, end): return path, maze_solved - # Implementation of bidirectional a-start -# This algorithm will start looking for a path from both the start and the goal +# This algorithm will start looking for a path from both the start and the goal def bidirectional_a_star_core(graph, start, goal): - # Priority queues to hold the progression of nodes - # This will hold nodes starting from the 'start' node + # Priority queues to hold the progression of nodes + # This will hold nodes starting from the 'start' node frontier_1 = PriorityQueue() frontier_1.put(start, 0) - # This will node nodes starting from the 'goal' node + # This will node nodes starting from the 'goal' node frontier_2 = PriorityQueue() frontier_2.put(goal, 0) - # Dictionaries to hold the cost of travel and origin of nodes - # For the start node + # Dictionaries to hold the cost of travel and origin of nodes + # For the start node came_from_1 = {} cost_so_far_1 = {} - came_from_1[start] = None - cost_so_far_1[start] = 0 + came_from_1[start] = None + cost_so_far_1[start] = 0 - - # For the goal node + # For the goal node came_from_2 = {} cost_so_far_2 = {} came_from_2[goal] = None - cost_so_far_2[goal] = 0 + cost_so_far_2[goal] = 0 - # Run the loop until both of the + # Run the loop until both of the while not frontier_1.isEmpty() or frontier_2.isEmpty(): - # Get the top from each of the queues + # Get the top from each of the queues current_1 = frontier_1.get() current_2 = frontier_2.get() - #Check if we have found a full path or not - if current_1 == goal or current_2 == start: - break - # We have found two overlapping node + # Check if we have found a full path or not + if current_1 == goal or current_2 == start: + break + # We have found two overlapping node if current_1 in cost_so_far_2 and current_2 in cost_so_far_1: - path_1 = reconstruct_path(came_from_1, start, current_1) + path_1 = reconstruct_path(came_from_1, start, current_1) path_2 = reconstruct_path(came_from_2, goal, current_2) combined_path = join_paths(path_1, path_2) break - # Only one of the nodes are are overlapping + # Only one of the nodes are are overlapping elif (current_1 in cost_so_far_2): - path_1 = reconstruct_path(came_from_1, start, current_1) + path_1 = reconstruct_path(came_from_1, start, current_1) path_2 = reconstruct_path(came_from_2, goal, current_1) combined_path = join_paths(path_1, path_2) - break + break elif (current_2 in cost_so_far_1): - path_1 = reconstruct_path(came_from_1, start, current_2) + path_1 = reconstruct_path(came_from_1, start, current_2) path_2 = reconstruct_path(came_from_2, goal, current_2) combined_path = join_paths(path_1, path_2) break - - - # A detailed description of the steps can be found in the implementation of - # a_star_search function - # Process the nodes from the start side - for next in graph.neighbors(current_1): + + # A detailed description of the steps can be found in the implementation of + # a_star_search function + # Process the nodes from the start side + for next in graph.neighbors(current_1): new_cost = cost_so_far_1[current_1] + graph.cost(current_1, next) if next not in cost_so_far_1 or new_cost < cost_so_far_1[next]: @@ -107,8 +107,8 @@ def bidirectional_a_star_core(graph, start, goal): frontier_1.put(next, priority) came_from_1[next] = current_1 - # Process the nodes from the goal side - for next in graph.neighbors(current_2): + # Process the nodes from the goal side + for next in graph.neighbors(current_2): new_cost = cost_so_far_2[current_2] + graph.cost(current_2, next) if next not in cost_so_far_2 or new_cost < cost_so_far_2[next]: @@ -117,11 +117,10 @@ def bidirectional_a_star_core(graph, start, goal): frontier_2.put(next, priority) came_from_2[next] = current_2 - return combined_path -# Weighted A-star +# Weighted A-star ''' Weighting sacrifices solution optimality to speed up the search. The larger the weight, the more greedy the search. @@ -137,171 +136,113 @@ def bidirectional_a_star_core(graph, start, goal): e = 4. So w2 = 5 => Theoretically return us a solution 5 times faster ''' + def weighted_a_star_core(graph, start, goal): - # The weight which we will prioritise the goal - WEIGHT = 5 - # Priority Queue track progression of nodes + # The weight which we will prioritise the goal + WEIGHT = 5 + # Priority Queue track progression of nodes frontier = PriorityQueue() frontier.put(start, 0) - - # Dictionary to track origin of a node + + # Dictionary to track origin of a node came_from = {} - # Dictionary to track the cost to move to a particular node + # Dictionary to track the cost to move to a particular node cost_so_far = {} - # Add starting node into the dictionaries + # Add starting node into the dictionaries came_from[start] = None - cost_so_far[start] = 0 + cost_so_far[start] = 0 - # While the Priority queue is not empty + # While the Priority queue is not empty while not frontier.isEmpty(): - # Get the top of queue + # Get the top of queue current = frontier.get() - # check if we have reached destination - if current == goal: - break + # check if we have reached destination + if current == goal: + break - # Loop through neighbors of current node and process them + # Loop through neighbors of current node and process them for next in graph.neighbors(current): - # Calculate the new cost to travel to neighboring node + # Calculate the new cost to travel to neighboring node # The new cost is cost of travelling to current node plus the cost of - # travelling from current node to the neighbor + # travelling from current node to the neighbor new_cost = cost_so_far[current] + graph.cost(current, next) - + # Check if this node hasn't been reached before or we have a new cheaper path if next not in cost_so_far or new_cost < cost_so_far[next]: cost_so_far[next] = new_cost - # Set the priority of the neighbor using the heuristic - # We are taking distance to goal in consideration through heuristics + # Set the priority of the neighbor using the heuristic + # We are taking distance to goal in consideration through heuristics priority = new_cost + manhattan_heuristic(goal, next) * WEIGHT frontier.put(next, priority) came_from[next] = current - - # Return the cost and source dictionary - #return came_from, cost_so_far + # Return the cost and source dictionary + # return came_from, cost_so_far return reconstruct_path(came_from, start, goal) -# Dynamically weighted A* +# Dynamically weighted A* def dynamic_weighted_a_star_core(graph, start, goal, node_threshold, epsilon=2): - # The weight which we will prioritise the goal - weight = 1 - # Priority Queue track progression of nodes + # The weight which we will prioritise the goal + weight = 1 + # Priority Queue track progression of nodes frontier = PriorityQueue() frontier.put(start, 0) - - # Dictionary to track origin of a node + + # Dictionary to track origin of a node came_from = {} - # Dictionary to track the cost to move to a particular node + # Dictionary to track the cost to move to a particular node cost_so_far = {} - # Add starting node into the dictionaries + # Add starting node into the dictionaries came_from[start] = None - cost_so_far[start] = 0 + cost_so_far[start] = 0 - # Counter to track the depth + # Counter to track the depth count = 0 - depth = 1 + depth = 1 - # While the Priority queue is not empty + # While the Priority queue is not empty while not frontier.isEmpty(): - # Get the top of queue + # Get the top of queue current = frontier.get() count += 1 # Adjust depth of the search - # If we have searched all nodes in that level increase depth + # If we have searched all nodes in that level increase depth if count == 4 ** depth: depth += 1 - # check if we have reached destination - if current == goal: - break - - # Dynamically calculate the weight - if(depth <= node_threshold): - # Dynamic weighting + # check if we have reached destination + if current == goal: + break + + # Dynamically calculate the weight + if(depth <= node_threshold): + # Dynamic weighting weight = 1 - (depth / node_threshold) else: weight = 0 - # Loop through neighbors of current node and process them + # Loop through neighbors of current node and process them for next in graph.neighbors(current): - # Calculate the new cost to travel to neighboring node + # Calculate the new cost to travel to neighboring node # The new cost is cost of travelling to current node plus the cost of - # travelling from current node to the neighbor + # travelling from current node to the neighbor new_cost = cost_so_far[current] + graph.cost(current, next) - + # Check if this node hasn't been reached before or we have a new cheaper path if next not in cost_so_far or new_cost < cost_so_far[next]: cost_so_far[next] = new_cost - # Set the priority of the neighbor using the heuristic - # We are taking distance to goal in consideration through heuristics - priority = new_cost + manhattan_heuristic(goal, next) * (1 + weight * epsilon) + # Set the priority of the neighbor using the heuristic + # We are taking distance to goal in consideration through heuristics + priority = new_cost + \ + manhattan_heuristic(goal, next) * (1 + weight * epsilon) frontier.put(next, priority) came_from[next] = current - - # Return the cost and source dictionary - #return came_from, cost_so_far + # Return the cost and source dictionary + # return came_from, cost_so_far return reconstruct_path(came_from, start, goal) - - - -class OpenGrid: - def __init__(self): - self.walls = [] - self.weights = {} - - # Check if current location is blocked for not - def passable(self, id): - return id not in self.walls - - # Check the neighbors of the current grid - def neighbors(self, id): - (x, y) = id - result = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)] - # Just for aesthetics - if(x + y) % 2 == 0: - result.reverse() - # Check if the neighbors are not blocked - result = filter(self.passable, result) - - return result - - # Method to get cost to travel from weights, else default value of 1 - def cost(self, from_node, to_node): - return self.weights.get(to_node, 1) - - -# class OpenGrid: -# def __init__(self): -# self.walls = defaultdict(int) -# self.weights = {} - -# # Check if current location is blocked for not -# def passable(self, id): -# return self.walls[id] == 1; - -# # Check the neighbors of the current grid -# def neighbors(self, id): -# (x, y) = id -# result = [(x+1, y), (x, y-1), (x-1, y), (x, y+1)] -# # Just for aesthetics -# if(x + y) % 2 == 0: -# result.reverse() -# # Check if the neighbors are not blocked -# result = filter(self.passable, result) - -# return result - -# # Method to get cost to travel from weights, else default value of 1 -# def cost(self, from_node, to_node): -# return self.weights.get(to_node, 1) - -# # A function to load the walls into the grid -# def add_walls(self, wall_list): -# for cell in wall_list: -# self.walls[cell] = 1; \ No newline at end of file diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py index 4c36ba5..91327f1 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py @@ -12,15 +12,15 @@ def compare_algorithms(algorithm_list, density): - - maze_x_dimension, maze_y_dimension = 50, 50 + + maze_x_dimension, maze_y_dimension = 150, 150 # Generate the arguments to the benchmarking function # args output > occupancy_grid, start_coordinates, end_coordinates args = [*random_maze(maze_x_dimension, maze_y_dimension, density)] - - # Run the benchmarking on the selected arguments - time_stats, memory_stats, path_stats = benchmarker( algorithm_list, args ) - # Draw visuals based on our benchmarking - visualiser(time_stats, memory_stats, path_stats) \ No newline at end of file + # Run the benchmarking on the selected arguments + time_stats, memory_stats, path_stats = benchmarker(algorithm_list, args) + + # Draw visuals based on our benchmarking + visualiser(time_stats, memory_stats, path_stats) From 9d18e1109fdd80b78c7b642ce63e5390e22d3c15 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Sat, 29 Aug 2020 00:47:06 +1000 Subject: [PATCH 11/31] Fixed logic error and implemented results --- .../comparison_platform/a_star.pdf | Bin 0 -> 10826 bytes .../bidirectional_a_star.pdf | Bin 0 -> 10828 bytes .../comparison_platform/lib/a_star.py | 2 +- .../comparison_platform/modified_pledge.pdf | Bin 0 -> 11137 bytes .../pathfinding/comparison_platform/run.py | 7 +- .../comparison_platform/src/benchmark.py | 42 +++++----- .../comparison_platform/src/platform.py | 2 + .../comparison_platform/src/visuals.py | 73 +++++++++++------- .../comparison_platform/weighted_a_star.pdf | Bin 0 -> 10849 bytes 9 files changed, 75 insertions(+), 51 deletions(-) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/a_star.pdf create mode 100644 nova_rover_demos/pathfinding/comparison_platform/bidirectional_a_star.pdf create mode 100644 nova_rover_demos/pathfinding/comparison_platform/modified_pledge.pdf create mode 100644 nova_rover_demos/pathfinding/comparison_platform/weighted_a_star.pdf diff --git a/nova_rover_demos/pathfinding/comparison_platform/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/a_star.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d96c047c40dac4f323a83ad9c7b84e29b315c833 GIT binary patch literal 10826 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 JP}5Uq`ac)XqPhS8 literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index 9bb69c8..77adb66 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -19,10 +19,10 @@ ''' -algorithm_list = [modified_pledge, a_star, bidirectional_a_star, weighted_a_star] -#algorithm_list = [modified_pledge, bidirectional_a_star] -density = 'light' #Density keyword describes the density of the environment to be traversed. Can be 'heavy', 'medium', 'light' or 'sparse' +algorithm_list = [a_star, modified_pledge, + bidirectional_a_star, weighted_a_star] +density = 'light' # Density keyword describes the density of the environment to be traversed. Can be 'heavy', 'medium', 'light' or 'sparse' ###################################################################### @@ -34,4 +34,3 @@ warnings.simplefilter("ignore") compare_algorithms(algorithm_list, density) - diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py index 2a65a02..4cd8c1d 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py @@ -1,6 +1,6 @@ -# Importing necessary files -import math -import time +# Importing necessary files +import math +import time import random import statistics import tracemalloc @@ -12,45 +12,47 @@ @param functions - A tuple containing the functions we want to compare @param args - A tuple containing the arguments we want to pass into each function ''' -def benchmarker(functions, args): - - # Determining the number of iterations to be made + + +def benchmarker(functions, args): + + # Determining the number of iterations to be made iterations = 100 if len(sys.argv) < 2 else int(sys.argv[1]) - # Dictionary to hold the runtime of the comparing functions + # Dictionary to hold the runtime of the comparing functions times = {f.__name__: [] for f in functions} - # Dictionary to hold memory + # Dictionary to hold memory peak_memory = {f.__name__: 0 for f in functions} - # A dictionary to keep track of total path lenth + # A dictionary to keep track of total path lenth avg_path = {f.__name__: 0 for f in functions} - # Loading the arguments to proper functions + # Loading the arguments to proper functions ''' args = [ [...], [....], [...] ] ''' argument_dict = {} for i in range(len(functions)): argument_dict[functions[i].__name__] = args - - # Running each function randomly around 3000 times + + # Running each function randomly around 3000 times for i in range(iterations): for _ in range(len(functions)): - # Choose a function randomly from the list and load its arguments + # Choose a function randomly from the list and load its arguments func = random.choice(functions) #func_args = argument_dict[func.__name__] - # Time its execution start tracing memory allocation + # Time its execution start tracing memory allocation t0 = time.time() tracemalloc.start() - # Run the functions with the arguments - #func(*func_args) + # Run the functions with the arguments + # func(*func_args) path, status = func(*args) - # Stop memory tracing + # Stop memory tracing peak = tracemalloc.get_traced_memory()[1] tracemalloc.stop() - # Stop timer + # Stop timer t1 = time.time() times[func.__name__].append((t1-t0)*1000) peak_memory[func.__name__] = peak \ if peak > peak_memory[func.__name__] else peak_memory[func.__name__] - + avg_path[func.__name__] = len(path) + avg_path[func.__name__] - return times, peak_memory, avg_path \ No newline at end of file + return times, peak_memory, avg_path diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py index 91327f1..6e83ef4 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py @@ -22,5 +22,7 @@ def compare_algorithms(algorithm_list, density): # Run the benchmarking on the selected arguments time_stats, memory_stats, path_stats = benchmarker(algorithm_list, args) + # Save the results in the results folder + plot_diagram(algorithm_list, args, maze_x_dimension, maze_y_dimension) # Draw visuals based on our benchmarking visualiser(time_stats, memory_stats, path_stats) diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py index 36cf360..f062e31 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py @@ -1,10 +1,11 @@ import statistics -import matplotlib.pyplot as plt -import numpy as np +import matplotlib.pyplot as plt +import numpy as np -def visualiser(time_stats, memory_stats, path_stats): - - # Converting to appropriate data + +def visualiser(time_stats, memory_stats, path_stats): + + # Converting to appropriate data func_names = [] performance = [] error = [] @@ -20,54 +21,74 @@ def visualiser(time_stats, memory_stats, path_stats): y_pos = np.arange(len(func_names)) - # Plotting the runtime performance - fig1 = plt.figure(figsize=(10,10)) + # Plotting the runtime performance + fig1 = plt.figure(figsize=(10, 10)) ax1 = fig1.add_subplot(211) - ax1.barh(y_pos, performance, xerr=error, align='center', + ax1.barh(y_pos, performance, xerr=error, align='center', color='green', ecolor='black') ax1.set_yticks(y_pos) ax1.set_yticklabels(func_names) - # Read labels top to bottom + # Read labels top to bottom ax1.invert_yaxis() - # Labels + # Labels ax1.set_xscale('log') ax1.set_xlabel('Mean Runtime (ms)') ax1.set_title('Runtime Comparison') - - - # Plotting path visuals + + # Plotting path visuals ax_path = fig1.add_subplot(212) - ax_path.barh(y_pos, avg_path, align='center', + ax_path.barh(y_pos, avg_path, align='center', color='purple', ecolor='black') - # Setting y-axis labels + # Setting y-axis labels ax_path.set_yticks(y_pos) ax_path.set_yticklabels(func_names) # Adding x-axis labels - # Read labels top to bottom + # Read labels top to bottom ax_path.invert_yaxis() ax_path.set_xlabel('Path Length') ax_path.set_title('Distance Travelled') - # Adding some padding between layouts + # Adding some padding between layouts fig1.tight_layout(pad=4.0) - - # Plotting the memory performance - fig2 = plt.figure(figsize=(10,10)) - ax2 = fig2.add_subplot() + # Plotting the memory performance + fig2 = plt.figure(figsize=(10, 10)) + ax2 = fig2.add_subplot() ax2.barh(y_pos, peak_memory, align='center') ax2.set_yticks(y_pos) ax2.set_yticklabels(func_names) - #Read labels top to bottom + # Read labels top to bottom ax2.invert_yaxis() - # Labels + # Labels ax2.set_xlabel('Peak Memory Use (KB)') ax2.set_title('Memory Usage Comparison') - + fig2.tight_layout() + # Show the plot + plt.show() + + +def plot_diagram(functions, args, maze_x, maze_y): + + for func in functions: + path, status = func(*args) + + grid = np.ones([maze_x, maze_y]) + # plt.colorbar() + + for i in args[0]: + grid[i] = 0 + + for j in path: + grid[j] = 2 + + grid[path[0]] = 3 + grid[path[-1]] = 4 + + plt.imshow(grid.T) - # Show the plot - plt.show() \ No newline at end of file + filename = func.__name__ + ".pdf" + plt.savefig(filename) diff --git a/nova_rover_demos/pathfinding/comparison_platform/weighted_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/weighted_a_star.pdf new file mode 100644 index 0000000000000000000000000000000000000000..31283abb44e19582daa1b5684e202f05333e8661 GIT binary patch literal 10849 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 Z09hz}lbI|IWWYr Date: Sat, 29 Aug 2020 00:59:44 +1000 Subject: [PATCH 12/31] Implemented visuals being based in a results folder --- .../pathfinding/comparison_platform/a_star.pdf | Bin 10826 -> 0 bytes .../bidirectional_a_star.pdf | Bin 10828 -> 0 bytes .../comparison_platform/lib/a_star.py | 2 +- .../comparison_platform/modified_pledge.pdf | Bin 11137 -> 0 bytes .../comparison_platform/results/a_star.pdf | Bin 0 -> 12767 bytes .../results/bidirectional_a_star.pdf | Bin 0 -> 12762 bytes .../results/modified_pledge.pdf | Bin 0 -> 12982 bytes .../results/weighted_a_star.pdf | Bin 0 -> 12792 bytes .../pathfinding/comparison_platform/run.py | 2 +- .../comparison_platform/src/visuals.py | 6 +++--- .../comparison_platform/weighted_a_star.pdf | Bin 10849 -> 0 bytes 11 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 nova_rover_demos/pathfinding/comparison_platform/a_star.pdf delete mode 100644 nova_rover_demos/pathfinding/comparison_platform/bidirectional_a_star.pdf delete mode 100644 nova_rover_demos/pathfinding/comparison_platform/modified_pledge.pdf create mode 100644 nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf create mode 100644 nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf create mode 100644 nova_rover_demos/pathfinding/comparison_platform/results/modified_pledge.pdf create mode 100644 nova_rover_demos/pathfinding/comparison_platform/results/weighted_a_star.pdf delete mode 100644 nova_rover_demos/pathfinding/comparison_platform/weighted_a_star.pdf diff --git a/nova_rover_demos/pathfinding/comparison_platform/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/a_star.pdf deleted file mode 100644 index d96c047c40dac4f323a83ad9c7b84e29b315c833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10826 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 JP}5Uq`ac)XqPhS8 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bb87b540b366b8160caab9130137cae0f0dc0753 GIT binary patch literal 12767 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 D^$A>Q literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d63c005681eddd17afb9fcede2a75cd0bda46e3e GIT binary patch literal 12762 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 literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/modified_pledge.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/modified_pledge.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4bc7d305aa3f3879807c84effb13e7b9b0740b72 GIT binary patch literal 12982 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 literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/weighted_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/weighted_a_star.pdf new file mode 100644 index 0000000000000000000000000000000000000000..33a3ea2583be5a894da4a3155197f2de9283f064 GIT binary patch literal 12792 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 Z09hz}lbI|IWWYr Date: Sat, 29 Aug 2020 02:03:45 +1000 Subject: [PATCH 13/31] Added csv result storage feature --- .../comparison_platform/results/a_star.pdf | Bin 12767 -> 12353 bytes .../comparison_platform/results/benchmark.csv | 5 +++++ .../results/bidirectional_a_star.pdf | Bin 12762 -> 12353 bytes .../results/modified_pledge.pdf | Bin 12982 -> 12690 bytes .../results/weighted_a_star.pdf | Bin 12792 -> 12353 bytes .../comparison_platform/src/benchmark.py | 17 ++++++++++++++++- .../comparison_platform/src/platform.py | 4 ++++ 7 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf index bb87b540b366b8160caab9130137cae0f0dc0753..9191e233672eaf7613bad42ce2006e771c03fa6a 100644 GIT binary patch delta 4740 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 BFRB0l delta 5193 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 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv b/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv new file mode 100644 index 0000000..0ccc241 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv @@ -0,0 +1,5 @@ +Algorithm,Mean Runtime,Std Deviation,Peak Memory Usage,Avg. Path +modified_pledge,42.23752253263899,6.764401584387491,124104,337.0 +a_star,84.48940515518188,13.552232381047938,1100880,225.0 +bidirectional_a_star,3.7918464810240504,0.9528252389553513,123536,225.0 +weighted_a_star,3.8323718381215293,0.8459432683014835,157134,225.0 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf index d63c005681eddd17afb9fcede2a75cd0bda46e3e..9191e233672eaf7613bad42ce2006e771c03fa6a 100644 GIT binary patch delta 4740 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 BFNXjC delta 5188 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 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/modified_pledge.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/modified_pledge.pdf index 4bc7d305aa3f3879807c84effb13e7b9b0740b72..7652462e17e624d773c5eb9611da41752d206205 100644 GIT binary patch delta 5100 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 delta 5394 zcmZWtc|26@+m|TRlqD2p9ZQWOTa+P7){0_~eaVt6J!I^iQb|fQwz7tXnz4;#L>Nm# z!c)SGu|7zcvCm9Q%x_L_p68Eu{yLvI_vgN^^S!>ybq>lC?^VHh7&whrIwSCLrS7PS z(!E1IN_WGKHpD|F+GI?R;o?R41uD2?=x&^!_r%9Ha$V&aF1~RaT`xD6QvZ6JB|}&^ zrv_Jx89>N|&QY_12n|Ta8ew~Cvkzd=hjLx<0L0O}X>0nkS!ypo^9tS5jzN>$-iU0x zgJigK5PR&xB%AjGvuTrE83M#-A%(Xw&=w1p8LDAKvx&tlcQJx-Odq!8h;M{ruD^Hv z{1{P<05aC5W@|;i@Nv}Dqo`$}@^01Baom>%VLNihh@-BVK7#rztYAzrW5W2(eYRtVkc{mUHCrJYB-U&wO?Lrb&A@;#Sp- z;ozl$1hsOU-jOLo#h6Ge5NN8!x~NFvJS^i{c{1@L@_ygXcMs$-Vm%oWQSAy1d2xET z{uB&+ST#!y*}FgL-~&WDju@roU&MmzPFlBOe_eHI#I?l#xYNx&f>CS zbQR}Fj}v{l?;dXBX7ksYBow^6io81zL%(A@IU1t~C%Fn(Zb-VhjTh@u9SqGD3 zLG!C}Ir!ef{5uz`InO`!Mfc9v-t^=p8Q3SAl0r~B+ZhXf>ja)aUJ49zbw!GSo4nU{ zAbpp(Ru}?5H+R0ESTG@HX&iW}}f z!IotmD^;o`_&p}DzE7KHHL{MkbSI=UvC{00eXL;DfxtUQ1}AJMny1X-GJc`9-NZng z7)CHgnP@|Xj-Q+Gk|7b$$ZrbVp~YC!2EBW<{a8lN!-UzXeKpy@W=CI; zGJ9Dt*%*eA*0Ir7H?5+H?3pv^`@WGE zsq4TY_`qK*iz(ofFE%=pe!4P{yP3Z`!=K9Q#!PUCJi+QNm1xk4DBzthVen~O(+A;q zXCKsRmaI@_Q7Lgw0mCsW%3;ZlTmD!lI&3c$0a^+DvBtymlp;JM~|!x*`KqG;RW(>r)u3MrB^rR1xw z)voSna1|)Pli6G}Ax)RG^3&9DbA*I=lB3B@9R=PmSXI|&70^uZ%)-L7J-O$U%|&-v zPW&zO`ue`Fi2meU*P@C@QJ;w;?k=%^*m@czrED2%ohG`jes(q0Gi4TF=s-L9CVt9? z-SZt2m3A+W76655T)lb^fA-qilFn=8Zv~6aUBgIKC)pg{GabivXe7&fA~PjP3;UX$ znMyeb_quTQ3m#W1W54K`3NXRa@rkx#d)y+9byw-Vjjp=F%)I6hTQ|auti%iqFc!b1 z3{*6{ng#AY{zFU0J5}FO^d27P#$sxoLLS*%4Xuq@&01N@{Q1ZsRMjSCl+iR37Z966 zR1$9HC#U;EdM&JgSw@_(Ib)AW|I@%&4by=^9i&zCJ|8A|d$;@_vifhJ0t}~J5#bAc z=9v0WZE zPDFOdM*dg{;UsSPHV6#J{}SwVag4Ft_$fn#h;!p*QV~Y+-KL2^#OS3EzkWIr^qp2j zW$1zM`-?MSSJQILLzUdKE77^((A9x4&r#Vk>)9JSy#?lmO4X~4#E%)C&C`ogSsn4I zqT`UgKRzqYoIIXfK{zlaU0x)V#%`beC|A`eqfv9&Gl@xDvd`-!YYH*>Rj$%{i=I;z5C=L3kl02{}HD( zATtON!y?9|jRRQ&zHovL6)wnDtE@wdE=6p4Y?LKLiuZOHg6-IcX{?Hso}@wQ`b=$7~rf_lfA_6zLeyg5GiPC=Hlkd%7lCjI5w?%d#a zjpL4V=>TPuE|F$_Fc)ptE(Pv|Y05CPIjnUc<}nxz3Aw|21-I2XO2D z7q1JEw?`g^g3QR18aXdvLV*`H9Q_abii+z;x;0@9@E~Y#feGk@yxtVgy4KQ0U;8mF z4^H_PyY{z$xqv!}7gkgFgq$yR5Qz?o*)$CiB>ddg8v=Hkn|-cv++$rDfdIrgYoVqa zo9_Y1XRMz?l6s9S0{Ec6?JkcC9&vE5Qi~}ttXhaMp)ukW(Rw66LR$b#)-+pE*_}eJ zTjsGmmKVQN{lF`DYZs)coxl~>vaRHIA^vFSkBR-6TgAV}G+yQMKDuhnGxc`Z zWzjSi64B6=6BO2&ohprl03;WU*;sOS# zqm;uOVP5yT8F37EIMOC(gM>%XH_r@f?K=DfOcPE9z!f2nBIn+sm9$tFIxk+DM4BmZ zIieuP)OtWXL=;Ks>#mQ6N+(n!_SgBN@lf&C**ikom%{~d(5&|uOz|q0-jhuk+r&e+ zw13YK|8T9{RLS4Pm&+>NWg(77VpJ?fDxAEIcfP80|ykl4lGJVZC z+DHKzISe1{(Y@_)~&@U?TD%B z*WWg`O~+WhD}8FtpL7k6d#*z7b{~&18S&$Bi@(R<@?!Bm<`EwvkC)66b&AdV-eb=) zDhb&Xdl$cnc~Uuy*%#%Rj`?1L0CvFaFR#2*;*yy_8S5K#NzdGxbq>2ArZGJ9KG@$D z?|BokkLceucq;l?%Fzh=sJ7R^-rV4zW0j^US-zGzu3*spQ%W;F`zNfs6}zHlLpDbz`vo!p2E}N zA6BFb*R0+IjYs%Hy6r133CEUHLejR6f+*Fb`b)m^{%bcp-|K-fOM$XHfDovw@cd&`Jg9+{EQHxHfZ&-{dn+Zh!ne`^d#FzKWDo2 zrKxg2dAJHiHxbZIe>?p7TfZV z#GUYNK2aV5d{x?bzAwxqpz|i>&|K=)b%RmI7ngv=Vc&uKU}EYz;FdOTWL;^}_4{yl zSW?Tzxv%Zx@m}_9{T9_hUjTByFn~gCUdsdY!4-6pOsj|Qj_EnoirESW!Y^o;J%uX} zQ&OWIVLshlES=!X!10K-9(~;R+#~z3aa-VZ1B8VQDyg*-S)79gTX84B)_n5*Yx}4z zLQj~_x29|p7B;VsKmRfkj$%-FhbeNWZ1RScX3xBUC#KB%KL9*R)l6@=80t{>fxQC9 z3raEc%}Lmm(zFH`vA4-7*>f#K!v1*6ik_xH4(*#}VzTgLF5Gf6rN`0rVNmg;vO_oq z6gGQ!#b(Z^mt2R`$f#Ti_0NAc(iS1G5ETDh7`pz%DhJLJb&S{^esB`vw8NRkt?vLe ztb8yrGt-bH)v}yIE3c%Qxgly*&-V3A581$cqar(K#d?TD0Wsa>+@*Lns6;#XO6(}d zK)82o>W$%HLFUqIJ+`iV%ebs|qd{iC*Oet%yl!+6Exi0u!IN>7ALQ5f`uim9PHu`- zomFA9wq?*3#gL-#^m9{>&k_J3QppU8WApR^?~W9snBU3DHA#Q<`d_fuKc~%`u$&%c z6G~ko6_i9w#ui_V63d}!DZCIJ)}&yHtMouWvg^XX#+a*7G$| z+R8qS!Uo^u;Q5WSJKHbJH%OjX&?Z{1Y}Mj`&%EDdZ#vd|146DLaL8n6`Ns0>qnWRH zcR-LA)3M}Wl0|XMgum#YuOaW*0dywi)n8#3 z$6Gg$6y1aPh4Pab%=Lgm`Z+m0P}d>%NQfAVh#3esp-qxCMI5J5bn zYhc-hUsq&x=TJ_}J@wGB9PT|_O zEFI)+>wU7aPhQg2MW;Y>KQ0c)KDdxvnYbNVPY*dT_i|bL2cHA;PHpbXBRgd%l04j7 zKkhp?f}EPZR^@3SVZlC?@gze-*Bd%>^*)zmWbL&4D#xH@4s8_*~Z9dVa>3 zKOv6>1^LqBa=@-8W;6SVVc!dOHb0=8`AWDEeIxG`#mx8DGIAA}hYZzWc9F|3|FL)? z1x1Y)CqFWmF`N}V9R81AU-6Kwt0mFGMn?2z`Nu6>I9;IR>;U-i?G9dKJ>a4y;Rka_ z8RCKVnYV<`VgwZ!d^N$msUXa*&l>Dn|vT-N7MX-t151zIy7Vty&AFyz- zy?tkbGwy~99s$W^l%J=QeKJIuFM!3u6~IbrmtPWuw5 zVyl?bKLA-1f=w3xG>KMN_ZOF6A|?oez~kg!;Oa32Ma6F`jy0!yr_RJA#oJM z==J2dP#A=4JCPb~WdyLP8E^Y)GN{Ov_5hs~gE}%}6q0SQaNmI>A-W^0=Um6(`MtB0 zueLR%LFtV?_N^(jaF^RlOM$;XJQ%?a7Zhu>Xk5nKKg68jffu=hgYig9iJe0#?adRP zwscEG`ynIaKaYOc?CB#qcRrzMLOertBor7_o=$c9M z;;9YizUDQ81D&kH<9~Q9f?0Ox?O$_j;(}i;et-8ejSZwH55V9tf)&3fXCqh@d@Uho zbY?c&y9oLIUpBMX;cq5t{?*V^PGC-M8Uj(X)+JBajXRtu5Lo49SNwIXNYfmj_3wy| zqUw;iYq|~&H4Y@Z?A7|eB94?*muQkR@}#)M!94x_Q3h&SUP>|FydMB|N!H=Yi5?N3 zlcKptd9E)1D{0f%RFR&W+1vDDJ%UTQ>-G%eREM4!U}XSGijb%lILhZ0cs=BHu$OxP zcopQ~$ESKmN<|91&`?#?tn!2j?dDd|(9+OOi8@uxrK+N(l_IZ9+O4i~rixQVco$4f rOH)b({7D5$@%_Fyt*WA__5c1mt*(_~aN3wpO+}SYPVR!GG2j0HkK`zv diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/weighted_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/weighted_a_star.pdf index 33a3ea2583be5a894da4a3155197f2de9283f064..9191e233672eaf7613bad42ce2006e771c03fa6a 100644 GIT binary patch delta 4740 zcmZWsXIN8P(^b)nq7g4h6Q%biy%!OX-jswYpdd(9KtSpdynxt{5|A#^6KW^{LKQ`d zNGF6ylOjcm^iaZkj>hNv@$rjiXZGxwS!>qJ*>z~KFFU~usKw3bFi=lgop`}r6ak}d z{(iyYv8Mf6%o=^ttb8~9TE(moz2Ri&FWOMSEc z^-Am-hV|xn4#2>X>~u%F!KE=aaPU+-X9*;}M z7ae?OSKB@}M}^=lKGqSLy>5FkoRQ7jhJ^0J9uw}z|Gaur}AU}cqas$~4yRv)gAVZf zJhX0IQ|Lv1A6miPPOyYOe};tjH^ESs`XV_4HiDc+QFRHk{Fs4p+Lj{`e*U6%qAnnO zO|l!bOzFOPOLMW*&u$hC*W2#h5z!H8vp<-fUncezI{6?Bzx9KsZO#`#?L z|9-a=0;%Ez56+r@zF7Q`_q2e5F~d{c%KLcvk$g8YNA$EEhzo&0`&Qe{qRwknJ@K3* zAnsy9Hi>P{U?%4N#thK$!y5Hk2a^QOE_u)Vv%k$a{ATEc%;hG0*uT5oeZ+ z$@{(l4WZ8DodzQUZE%LNHBmQR1tQmiOnI(Od(gC6!of)oSlc_k(tqmkbpYHTNHLA8}%Zr%?rd|OfXM8a1~=z1fqQ6Kyx;6 zyr5cq(BMF?W_OR$tAF0cgD=D*E@{o-``bEf(kbsf3a=hbREjZY@n}nFC#3!{YRq!& zYegl$Yjg>c50d&zA^IODx6XA}IuKk?jM@I2d0b%6u-(RZJpQ<3{YyGF`nuTXG_Xp* z@9vv7y0D?NIH#PoU$KIr{oQ<)yGm1G;rRRhgy*EvRa5mqdBo)Zhy5}@-+jBhH2#YPL{Hq@n3e&HoodQhuARIy{`%-Y~-Hxe-iT&PjFzBN{u zu*%M~BuxP^6-{5M6s98IaJbR)@}Uu@r3w3IK@|v~RN-Q?<(Pm?ho|RVHvPxmca<7( z-TaBYfOmn|VdIip?|pL$Ft?>@9PjBktIfVWx_Z+xnvLRjeD-cdOPUh;aY@t;Kk3z56^5uXlJD+q~7v+bD}i2)vA2I z!J!zpkNea<5BRDvjEQt87(J>yT23sp<~5u+sQ=N4fN{(R90cR_gE=X}b!dhWHJ6C_ zCvY>V@e<#T~KjLpritY;JWrEd5TelUa@p1KKPu=beM7>1QqD6rjeT37f zK-3E_?UBpDo>Cbc7#x5Ij3ECli!ZuW>jrf_;I!$!IVONB6f0%B$K4r$O@Q;IAbS9~ zcGcod*>mc3ORx=+&#C;l?VV__OqO`7>ewFuaz9*C9KS zYvd?!aNXaj=Y-4ei3^H3>&O|!lvZ+gW>H`ZiHaYK{Z=d=NK*o4%&N*iFKSCIWF8QJ zDXg}(D7b;^k~C_TgxE1PjqpS6YiqY!cvdG1!cnsQDwY8!NmQ%WAUFNS)85szzn^+w ze1AV#bBHH}e^p47#;Z!d(++#=HQq}nb zntQI7uvARN$#DpE^N#Ap4$Ib1d$_Qt>Y4=G7hOtootZ|U7=2!xyQZ9C+DI~|OK#TX zf(Gx}lUmpLI~vD+oeoGVOpKg`1j!OGw{jtuSW7(lNIhL_k#ExWUXR2F$r!XK=<^rw z&-6^FGh>MaGxq952P5B^G;VpB2h-D0V2v%i9@Yds(6wZHxwG||OHG-RwU6#%t!{#Q zSUFUb3Or`Ha8-6k4>f#^cKhu2)RRRceJ0tnqWu#SWMqc}wD-yN_=1QEFSLqz>=o9s1C78E%2Dv&W%Zk#-LsWfmOlxmLd9295H@M;ie3 zo}{(;Wdyg@0BS)$!k@GkZZKcM1T7hm5HBI!yV9R!#Pvy!bybC2uF%)Guh-jp^uA9N211f}|AMw?bb(dwMQ7KUZMjrjE=;5D z2hDTIWR&?qC`EX2dGykrIX|fu_6@iit~RY4UInd(Q|UJ^;Os&U zyZCt6M(QSV7do@{HHH`)(3ud$WF4$58wyvvhG>v5KINRg*RJ8QTe|GXb+F3NfRnAK zH?u95+1-hOk8do{(XtG(60nm6FX~7DlKSfmG=XnRy+x-?_4H_Vbxl2N+@)WlM!4D; zV)y!*R3Sn_)1EHT3netRJj~(Dth^@;Gha4kLX!@H52sgXCsLsf*?kg#?S5@w8R}%Z zcG<%?f_rv5NMIr;Hvg*~@H31OOJeUCMbwmxW((Pz!!!qI46R^!)Dl$sqjelNc&HB6 z9hOOdktOi4*>HpZi_qe^sCOQxwq`rmU=`&V2buvI6l9Xq->uL5iiCXJWG3O;ujN$Z zGkg2;rIO3Q%{dPCZS*h_Dm^{`)x26#k`S71Q1*XJu=N+K2>#U}D0u-IMhkT~74HU8G>86qF!p9xd{5 z=S}e^W=O?#g?r*^3{PB!)}8)NjZ9Rc`RS0s!gmvMU;l3dxhiHcQUaM8Lc6boo&v79sw-K-3 z)iMy4N>J{Cd601L7u)^)`)iX?@d5bw-gnCW^^>FaH8}l2yu*l!4kfFqqI=dx+N|`E zQ}*daQ|$oz(7$Dtu9g5(-nUixWiz>YXxBmu6J!(8OV&vvMs9efK-ZDUl1#TZ892`! zGrJ%%I?|BBZIQtrGSJCNi*A&!K zw|8gq`*2hmU8`}A&&|@TG&J?BssNKUpMT)Km%txV;)}RJK)}!{>k72|ei5%<7f+dJ z`?shb%|64jiefqmv9qc_6~d?QC$aX5fPG;#cd}vYYCnPAy1(mocIuHY`t4zU;3wmd zEL46UeFoGU(8rUnZ#X8$>|yHDz5iIejbKkB@x{iOMW{M80C->p!e&^$PKGagI%XXt zcRBF0Taz9wpJ%;Y(D^tTwe^JQQrus;7SyX&kL4JXV)L5oSYVCNNZ)R@HD@ROH)@m= zC%PtoE5ZF~CqvO#8}828a&FvERdSPr-&T?laX7$YMN{Vf;}qL1%>Yhl4CPk#b4c9! zQU-VgwVqFH;Z?85v#avR9X0tkRY=r{m#`k_kT04zYD{6fu!=qTLYjbtB99&2hkfT+ zn<`Ux4bRn8fmgR=hO+|v2f5=P9nwIW`hl0|rfu78(lYi;`7W)P+sMJ?z}^q(@$!mq zQ8|n;ucG^K2Q&+P))dFUE&p&Xc%2)LbK`+EOK@SN@3Z}h24#DH)Pj~uNTN4&#fBj< z6#MP!k{T9@JB<3vEuG7vk5+s1|3j; zX|(SO|MA%+&5pQR-scyEP7hWBUxvP7MSLpEXx|1EjEV7ETo$z3lFCA2o+Fh#>y-pbM7B{~h``}1qGfoB4wTFa~ zTbM}DZU(LalIa{HrYjW**w^|+s~OxO{K`;RBSpD;R<9pcYrD zqrZ5jT=1SKpIMdi@;Tq(P;EJ%y)t|7XQzbXxaEOQ5006u=}^K%aL&-oC_TWJ!`%sO%Ft#f2|cCXo|hHo%a!Z-JiL(T-WV3Psr417b$B?D z*g9iXn055&Kp18pVEw*Uub^~a*Nb~NFlWocpxKa`{#S5yXH^!kQcswR*gwcP=F0L^ zu#1hMtjd-H-`~_E6>#hzuaUaqeM55Lx(%bKrK)3w5R7T9WETBRF|<^+pN&EOJrBcU ze}w2Bks{dsnAsA~r1RR6;dy0Id2#Ko-lU*#X9*^O`s?W)a4RFPM8p8X@UIK){a|sq zJ3+GHK0)AFsVwY7D{(8!HQoY?EMubCEDMZVTGu`xw5Zwe8Qv& z79A|Zx9oe2qNMJmV#Ld;b4^_V1K3a=i%g0D86iI&-Cq}oGX~5l?~-WS%*DYCWl|nY zDmIJ(IdS(bKJN9qKYSp@BI&w&M6#ISbPmnXn^k6YlYdHkuHu}|#)rqY*zZ4d@Hv%h zcPgr~4iatw4L|?eB}@Fc{bdp{>8}6l_0cy$KHQp;WniRzMGU9wZpzp~*&t?_1sm7UD(d@2=01- zsI>lFQdm13)IL_X*@?$GJ;&W6w?YKK_+^YCt*NF8Qp4#bfI7LsTDs5dwc+l9@F!Z* zlxV4N4vc(tZ^AzF%H(Lc;(oE(&*Fw+)DgLchO`6MT`;;XV+a9(wwXpZst14S(xRrW zmFFxUy6OK(V_65*&?GCH`k{X|f+*4G2gq^ID1>`oQ6BJR(q`j_TrkgSdZH&<`|fi9 z5Fn#3m8^Xw_AXvck_j(Wd6#Ir*M4i}T1(>+5zeu9tVb zsp!v{QWT<;B-5M+SwRRIdkNc8THMBkXQSo-E&`&=bWj9dO+XsOx|rH%2v2Dk(DuiA z+tdU#e~s?1Ig~FIP2=64cu8clF_4IsxQSAkes_m7+LChc1%!>DR;;8{#u@T4SEerq zRzyB#R&Mec#x4=O%*<`OD474WC5(=a$_n%L5-S0JLuwVX1(gU^5eBT#|5Te?xslj$ zSPpC7Sm@^l*H#%rIG|41xA+)MycSq5;TacEuKGQ)RBEFZHr3_2B5W-|PL_^Rf^kxM zUXyGnj?wLh$4l8Gawk zdp_+@H5J+M>~~=iPT^I~2%`J7S*0!&_nM|$irh78vj8%E_dePcqDUJW1+j=*GuF+S zKA(_Ku06NavQXyB4L$aA4$E3O7`;of2G61aiZ{P% zuu}LPaQUwbZ^(%k&7WR>IiK&<^ zF%PVkrL_cWPrI`~p87JyKEBJ?spsOksa!WE@)Cfq{JNv31!-2l#?btcCdJtBx$xWK zP-*4K+O+Uimvq6FN8%vw8#c5896c3-zZ_Wp-FHRut!A7O5z=fZN_z(?xUS^!P9;wZ z%089@(s=4z&i27Z#jrkzu}zaYQGOCrNR=!HUO3wfLg*dKFH+8wQ0hWWLXENLudJQ? zs$`xknF-1oj++^MsCkV;C)VO!F4e96Yf>?wmqzJymmN~X8vRLJf|xD4`K?L&Q|)8x zP|Q!CZq2wUoaY%(`_{w=;emFdeTt46`9G32JHozImHhgPBn)uOOt%}+g>#St@2oe1 zD#zQOt9^8i#^(!E@kW2ju~iF1gqc4TEKPqMEHWfJ?g95&g=3mKfpRK5)dlL1PYU+L zXKXGnxbN9P7!!fH?E19O?&?w5Ii z!leEWFyq=^pH#uNR>JCBw?5PF%|F$*!naqptg)hPxrl!?O0B*vcZ5IQnU?)Aq^O3e zQOU~R%SwKCM~1wz#zan4;t*oC42lc!#=-$k{~Ygf&6Zjnoh`)qc2Gp=5~LQvZrAJ& z$%*4B=quxO1!z@2&uq^a{7NlUH&}zdYJu6_pto&M}AVK6N2?`z3?x=93& z$ss!>X<0#eu&Ml(j99pL(cAEBcBR<3{vW;U^&22vRibO3kw{PE8OAV3u_JDO>l^7%U+l-MM8ev5+ z|7ZJiP;!_yMr6IB2VsF_aQ*-i+D!7I29GCI;lW3MIX<~(hFbTQ^byR;a;ha4elWry zG!qf3vHcS9p!$VbTEiD)W4thOl?No!QP*553UZ%|7mvTkt{EK~d71QpK5!5onIyr^ z*DRk5TvZPG<`N_OQuA6>KV}bXckn1N0@vW>@5|RaqS_sbz9q>#Euf8D!1I_DW)2&b zS_iabr=1Ra#UhmrG#6tGAl`?=59WLo|-+y)1gLUtP z?e;NoTwr*>n@x)#=c6ExkDkPnP8Ez)Y0hv>%@+KnR^rnmnv%6v?d3g7yw=mqLa((* z<0Q?oFTewZiC14r=3O^5M5cVJvZChCzS%dz+w~NPS95Huf(Dsgb5ZVEK3-3lX57v? znwXNNsRyk@o*v)I)fWuilW;+mkQAvlZ0y}bI(uS0mH*N;#s;{kOhH?HH!c{=$VhG1 zK%Eko<-1!BPv6Soq$w!7ycf+Dpr?OBt$O^>QM0FO(}ENEc97c1f#D`4*1_Iz(OuoQ zz`ihZuw#BQVH!l-N zynC^ZY6ND1wV%zS*%*>;nwx;qeJ&22asbD-7%gd@b1$Hh9k-sh)0Lx-wV7PfG}6iI zn}u{jZzX&K8<}|VhXv(NP~k*y0NU0w5&G6Xg1n9G1vVZs9{VH?iYNdorDatIsZC%S zW_U%xy=29tMczC`JdXrJd4c1 zJ~Q%ZJ9DiMW$Y9Cu2=;`FVAB&sqJxPku>H>Yd4K54q24Xwt4qNjbM^VwwzL(xcJ8y z6x*CCP;WgYFd8d;FT`)JCSM;64=hq{c6^D&uTM(Sl`i~W6XZIU@TYgJQx9VDa#V)r%!G{~Msu>asuONjpZ-}H%8$Y! z%r?yb9$%^8yGc`dQm2%y0p%Puc}TRykYYuwjQ2o`*}`nrZ}+~+zzA;Xs{8r{blc}Z zeaeRKrbehg*?RKdfx<(%V)LU^hvnCr_K@tK$;Q33BNhob@S#R7BCRA>1B=4dKbljz z?1-|yR1KZqn=$)hiCrzKkMO0*%56#RmV>@0w!dp;a(|C{#m&KGSVjH;y|r3Q{mQ25 zMc05(@(dwMM4S(W3k-D>M0|E@Q~79v8Ngg0*}Hm3HaKn;e$^sAL16qDQuS|IasXn+ z;k_0~Dt!HHdb~_UngnTe-iC)66`PrO(2&-V#=n~I!0_60+RE>hQFweCOOa`?W8O&n zVX1&hGV?(gcb9MBvC=2S_`1xwC005c=MqIQ>M-p2q7R5s*7pa=p%>m_h;9Wh;64Ej zq@OV-p6rk(ZkeR9_p<>E^215)27?#-9MMho8`d-Oo9~gF_oti#gM|#X7J^UF#~6Q$ z@l%6KH8`_%3c>nk^j_PDrAz@zbZ7L)XOQZhd1<>#mkgo4*)LF)v7{oxitU{cjW-QBEX}0{dGr={!HU?`(rV^e4h*)u&l}y!C0!GFY*MP++WMWH% z0yeg__=@^4KqX&p!_pJV{i9rytl!Z#bP^wH^Eq|Ryrfgu%;6NCR21Y^-4YHi^UqCd zd5>GZ@%GWH_RIGleTN?JRNOHynGpKpB6y-~IC;*z!Cq3oJYThDc_EvZke0k8k{}7t zuruS;J-$?$`nwBtJ-EeE6Uku6(LqD*aWT40W!kTS zv+peeEr41;!*)D4!K+*%hBz0)89lud!UfvK1j<`yA#;LvlU#)z`FE`her@i5zGIjrR%Q zv{TeU<_r-GFh9u^CCfNm+!n`!@C+I(T}rm7uL6I8@X|(hNSnm@wgH^YV3@B(j47?t zg)$9BZ8QJQIe4mm>>qi)s7Yc1>uMb{DknHT!13A&4%}p=VPajx>TLc3+BC|onSdEW z=+$*D3BR^P(bX`AyP~WTA!@>*x<}Cv@#uY|{Xk3-oYSnizd!dJDQe8aCWRCJZMYdf zW2p5XB7Tvl&9V9)#?CI@tLpcHvmldIUxM*eFmV9#6qE*hAk*w35N-;oTY2{RjrTpu1!C>Mn%wgEvxZhWv2?u{A)W8*_=Eaef@l#?A^gT&&O_T3aX-VqTr3PoT3W-p}gXshbc;YcQAfZWlSt` z%4*8$DN-`|N7U5SQU+yk%<>BIs+h9NXBegB<<(V0<-kkSLzM0Jjl8^?s@ng1rmn1( VvMzh`go3=h0-J=yO%q+V{{g Date: Sat, 29 Aug 2020 02:14:36 +1000 Subject: [PATCH 14/31] Adding comments --- .../pathfinding/comparison_platform/lib/a_star.py | 2 ++ .../pathfinding/comparison_platform/src/benchmark.py | 9 +++++++++ .../pathfinding/comparison_platform/src/platform.py | 10 ++++++++++ .../pathfinding/comparison_platform/src/visuals.py | 6 ++++++ 4 files changed, 27 insertions(+) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py index 244f252..fb44a56 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star.py @@ -123,6 +123,7 @@ def a_star_search(graph, start, goal): return reconstruct_path(came_from, start, goal) +# A wrapper function around the main star search function def a_star(oc_grid, start, end): diagram = OpenGrid() diagram.add_walls(oc_grid) @@ -136,6 +137,7 @@ def a_star(oc_grid, start, end): return path, maze_solved +# A class which handles the grid world for A-star class OpenGrid: def __init__(self): self.walls = defaultdict(int) diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py index 487a685..0d281d4 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/benchmark.py @@ -58,6 +58,15 @@ def benchmarker(functions, args): return times, peak_memory, avg_path +''' + A function which outputs the benchmark statistics into a CSV file + + @param time_stats - Time related statistics + @param memory_stats - Memory usage + @param path_stats - Contains path lengths +''' + + def print_results(time_stats, memory_stats, path_stats): with open('results/benchmark.csv', mode='w') as csv_file: diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py index cebfca0..ee379d2 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/platform.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/platform.py @@ -5,11 +5,21 @@ from src.maze.random_maze import * from src.benchmark import * from src.visuals import * + ''' Syntax: random_maze(x_dimension, y_dimension, density) > Density can be 'heavy', 'medium', 'light', or 'sparse' ''' +''' + The core function which combines different components. + It serves as a platform for the data to be passed around between different + sub-modules. + + @param algorithm_list - List of algorithms it needs to compare + @param density - The density of obstacles in the environment +''' + def compare_algorithms(algorithm_list, density): diff --git a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py index 2ddef2a..0df8fa9 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py +++ b/nova_rover_demos/pathfinding/comparison_platform/src/visuals.py @@ -3,6 +3,7 @@ import numpy as np +# The function responsible for displaying the plots in the screen def visualiser(time_stats, memory_stats, path_stats): # Converting to appropriate data @@ -71,13 +72,17 @@ def visualiser(time_stats, memory_stats, path_stats): plt.show() +# A function to draw the grid with path found by each of the algorithms def plot_diagram(functions, args, maze_x, maze_y): + # Loop through all the algorithms for func in functions: path, status = func(*args) + # Creating an identify matrix of given dimensions grid = np.ones([maze_x, maze_y]) + # Populate different kinds of grids for i in args[0]: grid[i] = 0 @@ -87,6 +92,7 @@ def plot_diagram(functions, args, maze_x, maze_y): grid[path[0]] = 3 grid[path[-1]] = 4 + # Create a figure and save it plt.imshow(grid.T) plt.colorbar() filename = "results/" + func.__name__ + ".pdf" From 05a9dc23a54006263a9e769635a3789e78c4788b Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Sat, 29 Aug 2020 02:17:39 +1000 Subject: [PATCH 15/31] Adding updated A-star files --- .../comparison_platform/results/a_star.pdf | Bin 12353 -> 12749 bytes .../comparison_platform/results/benchmark.csv | 8 ++++---- .../results/bidirectional_a_star.pdf | Bin 12353 -> 12749 bytes .../results/modified_pledge.pdf | Bin 12690 -> 12924 bytes .../results/weighted_a_star.pdf | Bin 12353 -> 12755 bytes 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf index 9191e233672eaf7613bad42ce2006e771c03fa6a..fac2ee851858f93061a61f627f2665a68e079768 100644 GIT binary patch delta 5173 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 delta 4737 zcmZWsc|4Tu_pa2d)TGxgvhQ2=eMv}mV#XSZ$XW=E?TKEbO_m{hvd>rtV;O5omSi`^ zWXqBzOZKsh?>seqet-P@<#W%u&wb9h&biL@^fsi$mCz2Gg5giyD9 zzhw1T+wsmrIvz>Mx-)@R(W5FYat~V$yb_-uF<8LnkJGF?76Y975YEP1HC1t_7V%lU} zYSkz%++a_fQyICe!#d?Rs`eIKVi>ir?J6yWJy|3A@WV52K5`e2m4{Iy9P$K!rcScCbgz>3f)qR}eXn_ZbD`v)lj0+x5`&QS(s@`WzGwFgf zAn9gGGL37=WFh4J!3+qfG48VsAqt&e_MQFbV25es&BRfPLXKy6%s258zKg|TuB@3; z_kaD@Z@{0|Y%z;?g+4Q%M{bDm0(u5(iQ)p;yaPY9hrv9wF-nu#x;pGO!E{3td^mLe zw3qgLsL6De*-t^46p?1UZZd_1-+Ifb{JJ6&1(Wxu6uV} zPf84Jxw03mq>7xMS7%aM3U|p%SlHc+JyjKTr_xvCHTeW9ny3Gaqv$_eDo=ONDw$8EINzhvWLu1kDQ2ge2g zr*Fad(x%GNylVDAOkCm{Q$Ww-Nr`Xu^WBt=J zis-J3+%{Kt$=4UgVk|Rou8Gi!S-J2LYQ0F4Zbs-ySbY zT;pV3mZgB0hN7=h30G5WJlgDi`Oui#+LZINuo?(ZnrMl|N-TWK>FGtct-$g3-DSo+ zw|>@K!nuLnVds|D;CpM@60oOgn&|C3ugkeJwsy-phJ)hwU^N*ySYF=VCq*CIhw?>t z1xsJ)q*>1~z$6U)%gf)p<%CkMnG3T%-t$yz(k5T>ERA1@o(hwg>-WJrc*jN83icYL zX3GW-6LfYQl`pg5wIo@MDEVa@_jS@kBXsZ`FMyv-AD-ET($2|D%Dm0(=Ii5MRqDK{l5ay@p;9B8)3;T{MXMRTL-U_;B`St_cHs z0-aCys)?-v-%+LI?XC{dkGNY?;(J2*S>)=YY}<>{1$g>%rf+uzAzz|sQR2X?0nBAg zDEftu?kIbRw@fA%8Vdu0B1wPC;*V<6xk23kxNLcDjSFFmB+5AM@peVlBtivJ5xoFZ zw|eQ8`~}VWWymJc?@U4b&Tb63Ox8FXOx%x1h|z6=He#HpAE#jROUjx1ZK8)iE-LvS zwO`pwutm;ylFga>fx~P1qQ41G3^=IBWNZ&=2R?nA%v&1A$+guYigL?B6%Zf0OPtRe z3d)qoevZZz(ZG&kgnCoz10y#&#IyKg?FVw7Q>Kw_$FbC=_MJX(wC$oWK(AAO zVVl8Z3LA#k?J5=u2D{iSGPBnA`{`3iQoh_7OE|d*NU)@r_w@F;Vg-cLU; zxqpzNJNo#@ z=9%XsDid3Ink*Z*tSvh+OP$tjVUAEyZ}oL4jxTzY;W{@1Lo)fjxNuE1)vSqVNte>1 z#{(|j^(S@i3wN|m{5lIyFG`A<0}09660mV2mD)-@`A9ueVpU+;{$8Ib0MZyJ6bu9l z1!sFFHCbv1cneO8X8@e=%j5=%&HiRzQWPD+=9uj%bhzSlhAbT$w)NiW^CEgkBWE|PR zI!If=$9<)7&ppSs1t_&GQqhEV@ehCKWrtd!>K(DDHiW~&M_Gl3`|edQdC5lk6Jw2< zKyUK;!U~L6XArq)5E)3^k1$*)Wd=nCNW{ws&+d$8nR&A}bo)BAKYz?y_f9Cx$~mlc z%swwdcHtt1Z-OGkb(!r7s#gQYd|z`2X#3tLhytO>{C`1PGQPy7@S>~x+>SyTHV>jz z{{tM1Qg};98nv4YP(IQMEgfTd5Jn+hY(BlLckWNB#REg0#;eV%M_0+#BWd(om#_|@ zN8JK^9HaGeQcB)IMAl6;UN<0~Uvt}LqivJlG^GiDU=Fyv@vm3A@>oRGaI@S2|2hSp&& zX6x);CXu{zJHbMe!Eps&9e|(VlvtAb&M70O<+NK#mRx4JO+Z*B>!a4-vL9^|*r6j$ za@`?W^bD*)k1a+T17C!d%tycTI$sMS z!DaRJ7s#ZPla+Hk}7aBC>+#(^@mk= zd3x!PuoHWSx=wmT0ZRX6)F`LFQO(ZL5w{ZyB7=zz&+$yrcXm6~AJ0I+N+mc^+%iV& zxuTp*BYH-2j$K{msS=s$?|OIP|>@|`LF+{fbQTo!mor=ht2w|j^_Yk zIFPUK^n?2AcaYq7EY5k0RH;b(a;Zt7l%1ph9MYzy`iFR?#~0>kRvVjp*VLwf+Rs0*-%FtnDe*<#z{4OYwGAa&!GOruuS=#) zbpu<~kLRA%u!*C)@NskMKb0b8?kBVLiIL~RX8v^J_SFGAz3o8v?VPk@f7IKff}l?( zq1niSe)>#sHo%W3fBy({uEoQ&r~Ci0`Wi!?M&U|KvWk)Q8o&dJ)~Lex1~5X2LdB_p!FVD?#&0btRY2F{?8638&w?xk&8NNp-H~fm77L{ zu$pgImo;j@xWlQxm?LyJ-`7RqFaoePp$We#BloLiT==WY-(K4~|K&~dz=-@*;~NOg z86#sXE6-ERQx9#1Ox4rf15j+-r&q!IpbVQ2YViyOcA{@ONIrU#!wTgDF1(KLdK|(A zKXf1=kaDu}oCTni0=XxD;j~)anqQ@vk~!qnidnU+Z`<_%h+5MW)|Ih4m}E(oHE7|1 zF2eOmm!s8+#N!*^?MTBWp9uWs=@GOA8pnorJFO`x`}s!*(I#5m>tuLuTh1l=fgE&5 z{iVsVJL1P@w{!=>UPXUEG%6!Rh5R!36)WafX+iroxNuxT(28B$4$pYiW7Zs8mS5sm zo*S*rrVsEZM#C7|W5@kvqbNxM#SI!S(mqY42{R9&+H=!YU-BCaOR|&05Gc8Zeq2>2 z|DNNDD_j(MaQY;39~p^95mSBrwegt|%ZJs(4)^LLpHs&CB`vSVKR6ROOwxc1-C>cG zR%Rlo&B!u9I)iJ}Y_&46=CwibS|)F(pemSQ-OIrxSW%TvT?bHdi=$0>I@LACq=%y0 z@|_PLt&3LWX7*zNQF>9rDw~&UPNi$wxLH4qRuLX@KqVDG>erb>dYADFO2%Y&;E1c$ z(=(i_5WXiaU{S5Qa>0KjOjp5gzub}hvrA%0{L0{`2PZ5wZc=(c!#`pwjdXO-+{|EK zHc29ySaP1N1V8VNskRZ9ClUZrb}Bg~h007(2CCDNGLrHM7>PnESvjSIJ6A_fODZTR zR;o!doD`E(kW=821pm0axoCd>BPAs(qxApIY7TIeog-S@-vxGxJXf$I>C}d=bu^a|($&ymmQHhZwslix=k%Umj zE;2FM$~Iw;WyUgwZ(gT4-}n1{^Vj>E_j&H+x}W>H?&ocA?YvpKM-1q4*A{O6d1}Sv z^t}hJvKklo5)#7qyv%4xe!%^}Q=I#ijJqiHo|otT%Q_a)u`l(V(VOIgCv*LE#JYNg z*?FuJtO^_HvRzGFHP~7!7@VWiO6uRot}X-20s5!yt@(ZdBA`3FW4!siQxWV8jd&a*` zyr`2@ze?MLj(=@OJUgeX=M$(USIluB&taD|;ex`iWX@_IoCWZDOi!jBo5q!RZ2hF? z{-;Q#|WMK8$c*Yqoj=xe%Bl z>}%c*lb8oWhxu7X2T+a(yjSyc0!P4t;vqr$1~oqJ`zk+q_s8>@tc?6GU6gl^Qc z59Bo&Dmif!{=-T=WIJN}A02pVC*)X7u8tw#AaD~Q7X&mX82D)8geFd|O*tIa_vL>E z+Kp_Xe*vcTF-v0P$2oB9of@M1*RkAEh%eyNS|?87_S=3$&w=&wa;SnqI%i7{W@NwI zQ=8jkb@GRIC})L%+#&Q$E6zeItZ={(pN`HZn{LvQf;euZQDeb@9s5U#W|3N*%x(T62_4S z(?**np8nYmNSi8{b&K~Y)Ia8K1=JWF3V?3a_uB@Pc)dxX6jrpV4Z6vjb!hBUyi$-u z)Nji(3j3`Fj=iIFwb1$0r7!;}ZKBl|-Msd440P4&Y>iq&gYvaxJBIJ@xob%oN50%=MRfYIVxz{3iqzl7x!hC>u(!KB?=RYMdvuYC`%r_n%WrE(^GPNV+2-TcnWM$esY%x@<>HNAP~ukNkObX zU*OrTw~*_GtZX$?}s?M(df>F9BOO5%6R&O7=^2cST{{be-K@nT$B>i^Ys%r`Ix={fesz zAR1;xC5lZqQ3_n>kMRRv2%Mqmnte&kJNs z9>@Cu{<%k6#NB*v=4jT09HC@^ek;mTsUFFJzX2m(!~00g|FNi>m_dz0w%cf+A)7b?SMP}fi4 zlmD=_ZAdhgi7Tz5iblSj0K5j)ioN^$*J@9J@p?Ee4gqD+Bp5n%h8!NL-F)4ut3Zpa zX{q2amG1T5kwQiP&aA)Qx3`L09T~EJGEI!U#}noLweIjv&b%Mq1UQ@x6E-2eUg_SC z$&kDBU*<;Hy&os?Gu~vi&p(#GwUw>{#tUY?)|5|Cp09W;S-Jx7d)gh%rBF?@mcdNb zSet)w#)^~{#pprBkm$MU&{6Sxqwo=9l3q?4$OkF#=&r;KJE&ESJxpmnvB<#Q12{+T zV=R_5x0BI1H{=`sYp;ztqIuK?J?c>{(;nt;B>b0!Vb#xUOGrYZ%Ll@(=hh+VnqdHL zxh5?q%{J-{3@jN=%U#mj2nS@A2KjgWYVVtII<3Z;3_X*0U?^)(Gm?#J&9~&@qi|H5 zMWz2Gub_=!T=9cat(J3*-;tp%fyn_<+Krtt8Z3CqEDF#V7l^jDi(m#Cp2~nSjtJ7MFKk zAEWYgO=d)W_xLK=ETK@+5Dd{UvORd+gQ@0%UT;DJ3yL?J4~cfcn+BI!$={ z{&+u2Js=$eyc{c_1c?N+!0n+QyuaB5e*_Me(`@hy5!F{_cs3~bLeF$2e%~y-uyV(g zrDD9#3tyMVh28^KhuePEW6b=VY4L(JeKxX7Q)lyN9hHNl2vYZH$?F;n9rlrro#&L> zY~Ljq(w*-uhs$w2W$> zb2kUaPSj3M)`7JzL(4zIn+GRl7P!vs8&p(3)^G1pfg@=xfbwA>D1B^UqI#1s#2f1K?hLgh|)A3Gv^%Pki{Wug_NY zcE4QlE;bl>Lg_PP;QlqeC(ebrZlR)yJ00s7=9bInOyY{rrh8V>?+XoPrImsn%@kF% z?4HsVuAi!p!9`u}vXU8eI(qsrptQ;!k62`mDBo3AQ4vamTt@p;_EV)S%AH?XWH%u} zmnrZMnJRZ-;}7_CAXvZUOLru?P5!8kPmUu2xssTxar)BbUkQIO1HY5A2ZFLkxg?^}DU#(i&R$exY^wM=$U6?IUi(ow&66M(W+=cvXLNd#>EjwXsT8T7 z@BU7`487`@%%=2=1y1cAo<=S5l@WsDzD9_UE?AE1MdkS^%??yx^m-F!UqXP~J5Vg? zrpF$~a*rcJgt->4v9lkL9EZJ=k6IoFJx<2^h`(#3!?#l|DjT!$x3p=`P&#?<`Iw!d zJZnM`dWD8|7N~uWV7%R~U(E#^lXLq{aPaZ3I z{Z#Ay`>1mNaU4(wR6kCby)-abv{aX(J%nh zc&WQ_mr5FN!N(}bi2$`6?h7k@A=`8I<9*YqLO@IfNb)gZI$anIBFC5ORqFO$& z%|!ZYU3I4yEU!#=6<2~2AHmvDT<`S7x6B@@>pKU>j;+9~`VlNCpnF@#ch9l^3PF@a#&=`%9xOLBFQP#7=Ll^CZ&&|z#gV<6iZ-FlwhdxI zb^~R-p>eXBow&vVr}};uG&S?RT|g(Ka7NTg{nsEkCi>*CIBV;K0>%$!x;!q;wyij=lJnv+6rFfFYq+1d%jK3whd4%K$O@V#Cjk8IO}c|s+3ed=;0;->eLMty25zQczAf>yxzgbuTG>0ffFhK$3k4m^A;q=nu#lL*n)bGEH3vgd^fG#GJdjA#wmSem2WIGwyQWfBx7sQIjMIMuLp`t zS%lIc7KM}COE7J6GcWR)Pm~SQ4jAHhf?L~ z)f2m)PnLSnUJsV9s`02V?4Q+5Ki7VS1p_w-Lz~_+hQIt_+~Lis8Yw?1Y>8}jmU@ZVsr=hkn`0$}&Y9yYUMDC% zDucA3o!bP9aUqQ+4j64baYjr2nT4|YXoUSLva=@##vZw+<9&ST98i+ug@1gKFe6?^ z27Piwc+so7V$PvjG}^;nSQ{T}OD^^u_H{4(CR@Z%6*U1^CE58lLTAk|h_rJIPtKJ= zhP#FjjzD(4a!ZCKCwwVz^C@bHgiu~0ff}jUmGe-6e(3QIQ-L+&EA#WnvYCaKS7*K$ zYYtGJqVtn`6|kVbh=jLP-b_2QTb72vsx0S)|L=7xj5Ye zt`{rU>&$v|TqZwe$#q97!RYdY)UI^|9bI;I+YjRX3hfJ<(?uDQ2LUYu@MD$b&Xq&C ztWD(5_Ii_nf7PJ>_7Vj@%KZ;G-7yS!YL(@AJ^b8}L4h7_zTlJp4R7AFn$l;a!3Q;M z?Q`ruRnMgEtns!R*%^odv^)!;w0H>;|rW(FX`S7mOs;cVeq|bmq mX+LS+od;D_t#j)C?>}u-^|VD56TY)&G_-l;thdH)A2uESga delta 4737 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 PymW~}TwKpYpW}Z3$wCqK delta 5076 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 Date: Sun, 30 Aug 2020 18:16:16 +1000 Subject: [PATCH 16/31] Adding README.md --- .../pathfinding/comparison_platform/README.md | 3 +++ .../comparison_platform/results/a_star.pdf | Bin 12749 -> 12908 bytes .../comparison_platform/results/benchmark.csv | 8 ++++---- .../results/bidirectional_a_star.pdf | Bin 12749 -> 12869 bytes .../results/modified_pledge.pdf | Bin 12924 -> 13021 bytes .../results/weighted_a_star.pdf | Bin 12755 -> 12944 bytes 6 files changed, 7 insertions(+), 4 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md b/nova_rover_demos/pathfinding/comparison_platform/README.md index e69de29..3409700 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/README.md +++ b/nova_rover_demos/pathfinding/comparison_platform/README.md @@ -0,0 +1,3 @@ +# Path Finding Algorithm Comparison Platform + + diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf index fac2ee851858f93061a61f627f2665a68e079768..d0d709d2b6ec9b41a426ae43bbafde1fb33d3bb5 100644 GIT binary patch delta 5298 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 MK51zqnDM^<08wrEI{*Lx delta 5137 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 delta 5141 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 delta 5312 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 H^_c$$vVORY From b49f666b84c1bb772bf7a52760f9362b7d495549 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Mon, 31 Aug 2020 21:33:14 +1000 Subject: [PATCH 17/31] Adding comments --- .../lib/a_star_variants.py | 6 ++++++ .../comparison_platform/results/a_star.pdf | Bin 12908 -> 12905 bytes .../comparison_platform/results/benchmark.csv | 8 ++++---- .../results/bidirectional_a_star.pdf | Bin 12869 -> 12907 bytes .../results/modified_pledge.pdf | Bin 13021 -> 13455 bytes .../results/weighted_a_star.pdf | Bin 12944 -> 12905 bytes 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py index 9dca348..a334fc5 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/a_star_variants.py @@ -1,6 +1,8 @@ from lib.a_star import * from collections import defaultdict +# Wrapper function + def bidirectional_a_star(oc_grid, start, end): diagram = OpenGrid() @@ -14,6 +16,8 @@ def bidirectional_a_star(oc_grid, start, end): return path, maze_solved +# Wrapper function + def weighted_a_star(oc_grid, start, end): diagram = OpenGrid() @@ -27,6 +31,8 @@ def weighted_a_star(oc_grid, start, end): return path, maze_solved +# Wrapper function + def dynamic_weighted_a_star(oc_grid, start, end): diagram = OpenGrid() diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf index d0d709d2b6ec9b41a426ae43bbafde1fb33d3bb5..5ef155cfc66e315e6286371746a805be2603c5af 100644 GIT binary patch delta 5286 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 G-Twjbw)C3- delta 5276 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

AF3-XB-XQuJ4hyWJ4edq zxe1>4iv4)=_R~%vOZ7LV`XOyCs-P}|{gZs_KO_sL z+vSaX3^6)wfP5VyP`5Tlh%MU=sdw2^|NgeDq7gV-8+v^Fu>?{5hAelk7OA`f;UDAt zxjSRJN%Qy+UiG~^XTM8!$PI9RPEeoj%hJ@`BTskp)Z`9NN?QK8Ml9lDhxw!G zevldl7-N{~qeTdi-yEm)qiw}VPM5y=@qG1&m8nS!xzYHpVLS=2%;pGW2NTD%a}Zn7 z5gxM(vj)HA>WEPl@_v2w92&5jaRlG4{@t;q;U&tR<#>qsmYLK2;;i4ge`mC?&^dkX z_E6F`di<3=>DLFT+hYpe+1H-r9G9DlDAZf`_2e$dE~yAEO8`qi8%i?^V6t3gGrBz+ zIRpWfB6E&gvloLz5tpJl0)H&^3>~Ip-sM1FdIWQf?Y)`8o}=@6$D635ORmZ9tknlu z`*xzB#+6Yq!?MX|nY!F@;_fvX$=qiV-Ra{!Tc$8Y^l;KK^yC}5iIT3ZW%nw{d zVEzGJn6Li}x85=7&(SvvOh2Zs)*5T;2@o;9N>&4chIl^dh?@y+;yTQr8vrHT%G&9% zZh~!wIsG0*wI4>>KWLjrsisizET$b05V1E{OlTYdU;gwnK*^`1XGA@WqIAPZDV?Sr z;~n~c(YfB=?jcNEw1M5HjNi`cnd}XemW@AhaEJx{B=bcL7m!MiR+#5pd(1SW!dLln zgwg#nm0i@gm}P%Uk{wL=uWD5;o$DMdxb{=U`OEm(H&jLPYoo_fKW|~!N>eA~E_C=+ zA(l%*Nk!&-7FaRDf}en>j`0zONYPTfXQy_a_&BG#-oEjqy-s22*~oM-Xy!)NJOHt; z78;8^b~vfU$N`Vz(T)t_(5+IAeyp{62`)xcATVmJMDUCybl<%w7oCM ztVM&W0hI$1GwIG472ZtN^@RW?j#II>=cOw2#&+>jXEQg!-89nTAr^Z`&b17Aj*|vC z7jQFNvoQM5W%^KEqDRNLntMJC40Op<`uhoh17geNt70(FIeOseVM z(4f_gO)9}0sc>)<-oaIYgX2Axv?MqZ9=6F*|Lqs>oR`t+SFEz##Y&@SSwCebT){x7 zQ6;llsUArEN;{jGqDl>Als|47#E2D`hn9StvxkcK0?34y1yeU zRhAg&wJYhb03`gA90$F)qF^UhY;~wk?A990>ZcMJBm(aO3q|Mo@=|*E+PKlp*=Y2` zg|y~64hEM8lHU#awNp}-ON-MgxgcYWOZ#5;w#};FyZT~yh4N_9cgb@5`QZB&368~2RN2=R7l;6g2 zr%@-C}l diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv b/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv index e2756d3..2471a43 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv +++ b/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv @@ -1,5 +1,5 @@ Algorithm,Mean Runtime,Std Deviation,Peak Memory Usage,Avg. Path -modified_pledge,128.93174091974893,53.452233629593024,124104,259.0 -a_star,232.69499672783746,96.13462418851634,793704,225.0 -bidirectional_a_star,118.28094720840454,45.9440489355572,477516,227.0 -weighted_a_star,20.697457449776785,10.18373596218028,123536,237.0 +modified_pledge,123.69400262832642,15.438351262264522,124104,431.0 +a_star,407.61271119117737,47.74750238141489,1668762,301.0 +bidirectional_a_star,16.973352432250977,1.748764510765177,213590,301.0 +weighted_a_star,13.459157943725586,3.165068100577722,142168,301.0 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf index 1ec4471b3a2884d17bc190fbda13ab50efe243ce..382a3cd4df32d9c26254cf7792e463f52a7555d6 100644 GIT binary patch delta 5301 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 b|Nrf>jFMd9nyenn<;zMeVq(`|dMy6~b9_0( delta 5259 zcmZ8lc|4Tu_okGPY*`9nkY#K`VysapYf*!-m#vH?`~IlNntfkGcFH;$g?N)?EKQbX zti{;3P-?8-dAxalpU-dpn$O(N+~?faxz2U2`&qW_u&qA90l;F#8ks(An9gXZJcUq4 z1ya(SsO(~oxBiepsdbKPk>mN9x zKY%h|cxNIIEeViFZ{j*kX@eU&c7b-EsIZ5574P6giCH@8m5Y6P1%c0&)}zlzI4 zn}6SygZdH2jeuzY7c8?&Pl4~lt{?mw=$zRg#I>rZBG1=-bX9z!b@^ru(0MSs-Dty; z>UfI65?4vVxEmk%GqJ1|@ITPs!=G)OUi@W_H*UGTE*ZVwxB9~IREUWJvL@?MI}2*v z-PxE*MO?}1L&0yUKNZ^bC$7cVp9;Y{2`vnMmF!fFr2)h|_^(}S?{8)MHTxptt+@MC zC6Qg~cU3)r@mYgMk~hPL547$sZukc7eaFrmYT?~8Jav4ZvRb$dVRq5nbX-c`ue;KD zU5r3bM1aW!=n*bi^AcwDS1;RVs4lCth#^b_7E8r?KzhnuJ^iUgG=h`L*bn@Ph`v8Q1UT2`e-R? z7}Da)nv>M!s0RfD1TlFRm%ITqX2`dNOO$k~#)rK|XimZSZtPKF3Rtvy=*VLYV)ZVK z?863y@TN64Y8)*EER&VuzNA&qZu7>BZOvOYY?z0}N^5_T{P?flm^=0OH$g5sYnU9d zdKm@s(=|9;Pt#t)%{%ZsBGaVunZ%VZ)crD6&Uh{RuOo48vy4C$1!JKpC2z6$qqllbm(diNHhNY_GXMo z2wjp6@X-c6-n~Tift{Ic?v9#zvksAN7s_LtmWxn1W}2443YvFv)7AG( z(v*j;kvBvYISLMm-Mi;T)CI!^p%MA+fb-pF8ykCpMPa{P9WpG4Y~@X|%nmqR>!flA@MZ5Zlabwxq>fAxe`o zU>)E%?f8J&1n;2TDXbB(Elf!G!E5pR1yaC?kQNY_7nY9}7EJ~6HcNXRv*{s!p+;~9 zxGQY_*U_+`PncaUV@As_+f({r@=w~&czI=sCYCYLiZH#Z=U`I_&HS-y)7dV5N;xs; zOaYl6SICvR-&d=*xsuPvm!~&qIm+gxkke}}wCt;7fBLHl)pB;LC2Tj_@e~k(KY`PZ zozJy47F|g8t*B5e^8XdEr0hD@3K1(VpqcHql2AX2N;$`tYx2@34Ij(^QzT;f7V5eS z;k##9{t^i7)`M1;-nd$nG_RSWJ%~3W0qQK(LiHvp4y^fz`CapK_nVn@X z^14Mh!4YK-kk^_G(M-KnGXY61?cDx>`k&0j16B&`Iv7FRY8^XTXxyT!^~&}=k`_zU zw%tv_0Og5)em57#u>1>Mk)m3sXNnO{eKAYm)YuESs(1jy$Ic>oZo6!Xm>>E*+gt0w z7q?W_Uiy3wOPv|}^*U9?2V2tTtIsZCMgatYqG8luD~Qgna75g>^LQ{MaX)jb4ZB-n zFl6AK0r@uz!FKP0uA0HuxzqPHbaaRNieGFU_;gUn{F_4aAdP5dVaAX&>wS#UwDtDp zcGO^s&H{qxc2_@6MfK122KJe`dNbG|EU!??1{ftQrfX-@%0(LRps)D;V^19u-FHcH z3iaiO`!Sz%To)d*X;wFGmJ0hI5`H$Ev@loSFX)=eEp@;6o^Z3abp?Z8_!XmNLq)+q zR7umL!Bs9V=)>irb_>HaOLYDShh+8k{k~+a|Ji41;BjYUDCkiXa~v!{SZTq;l`~3=O2F7dc*G@8To(*;PL$pLd9F z_DVAitTizn%RC0>>uw7~bRDOgHBO^Y?@0yeoEN{~$e>t*G;W2E#+wyO;z5aIgCM&X zm0O|G1|i?d%2UjyP_5(1vTAaVf$+hb$E`;+Mc?Xg8CbHh)zKaXt~s1;EGX?*ng`f` zJM&&3cF`%d&X__8hadfQ;?Tsaid#nGkM_XUJQ7!voR^$S6U!I2-9LbH!=%zt5F;JN ziDJ?>*6mKreCL7!g%zAXCYAc1JM0r|T(e&Tg1&4KuVeq+L#mBDENdQn-m3fi+(NQ= zbwx9D9Sjbtq~_lR4iU4Ll82$A&WKCQY(JAL^uLPj*>ox;``_CsSEgW*<*~3g~%jA|8w`b ztyH>GX-VUd<&QrOtW;h-`FLwMYU9DNKgXTYaWlqJ)S|vmhi?``!hz#x85Gk)6wAqU5~Dn-{DhU zyOSC=bcnB(s>#RaPy>V(KAs(I)-XXmW%FizbXDgRW14$N2ItqN^d+=hKuX>FJg_g1 zT+>@qG*kTD7U5APG17PeCKu{bgtetM@cP3Blw00fdvWh4CaNdPqCU-3J9o*Z`6@U= zvb3NYgPIBN+R$%KmvekLcheBQ2(PYv#y^iGgl8riU;ayTT~iLq<;{W7Qo3^G&NnJ6 zX60R0hSe=iCpr8qV?Z~^fs1-RukT_o9^>ZJGm#y@FohVXrLWEN^Ah!+05lAbqJa}@ zf$E{}ob>akG09KopVrl-i@#yckGCMcTKT5W2Et#!N)IgD@igG%djAvJ5e#qHuEwxO zUD#31O1WDsbt0tWGg->V0?WQjeNq}~x$O%G_jWVxlwuFtzi#^+AuR(s|Y#-qY!nKYuB3>%T4ZV$5wU-{IyXVF>`A z$?p7eFJ%R!tqEdsU=fcb_OFUgU39qhnb>U`a^ad4SQ$$rbU)L|%!XNto{4aB)dH`) z5Z5jPKFb54zgd!deHBUDs*bbuG(=PEJVLf*n<*sMJ36wEg5BejiSToYbbT@Jf=b5% za9NSJ(^`KcsQ2+k?vY1^9Uwb)(hN2)hNn?iPAXMIVw5kcOn5bOx2xPZ4elU!mQ9Lp zNkoN_xWZ~PNgKj6dBIwxULZAbIWhtvuro2ZXH!;v?z-ZxI{m$u%bWTmIsLiEDvw`& zpJFa$@30wF%&f$-B>g>1u1 z8)%ev;j~N5kwnvUjeuE>*1?&+-o9`8n9w=P#$#b^uFLP#z#=z^9_&k0eJ`@<)pqP| z<@(|Ktt4uflM!)eCcMEWvI}EMjFg)n`qbE&u)wW?@?hbt6xMP|vvUNzcAJ6@TmhVp zR{zU@PX;^SkOjv^rI=k7F?-mZwD>*U1$v7RE26h#YWh|2m#-hrG)n(%;BF1u@VhdN zuIDYY-D?5b>~tWTE6VJaO@%!#jugaQpx746jmqw3d1MN^`$%--%B zj$-^f$`EABqTO>27&%z-X18~f!erboa#qGNc^J^h!oCjfm#|P-JL@?;9j$xSPC4f- z&R_hzDKbl(x-AUwI6>;C`bR#Rwsrpw0|-cF@jnf3s9rEu$vYwZf(eCoZ9bvzrq!bm z0v4Alee-$q^h56i9{bWvdqV%j@U0GsKBq&kTp%M;y&`Yv_NXFVAQv3mjB4<^w{v+C z%_4CfAIjACx}=F^KI2WS5d`4!nBqKc$fwf!;-?49YQ8?ds~g@huTnpt%qJq8FWS)h zxfAxg3Y^Lnw+Ip+lN_p?`d>KEP-o3du^M}Z*D3gzhy7LG8fQf{K(nd7GX_7;n>2kI zR~i)nU*6RE^OEdM@jWgldpEGF))pFO_nY?{V36b?-oGV6AyNc)6{+N`Hb*aC#l3@FT1!|FOHQU zSJ6+JVANHXDghQiCo$(!2xRy{x7V|_ZQr__&$8zh{G`Ik5aBm*+7cOt^)I*Fg2xv=ra&dVqML4eF=W zd{6MrhhE|T2YJ2<@8m6Un8W-k8%zOLN$&r#5*FLu%P1?E*sP>=VQ=#Q<;&#)^esc6 zK#22H`68kX)0r&@i}>xOQVpm-j zBo3|i;F#^(o5PJ$27x34t5))xk%8d7hH1=!u1RP$zz8j`h*6yz&Ve$N9OdiQGtznk za`!4-0=%v&2l6zPLSRS(ym%eW;PxC|>+0YwyJ%5gyy9v??WyW~=fadTkx*1&^V=u$ ze{!j(f@GLp|HpQ=T)XJ&r8IPOi^k3LAQRAfgvlosooQx{u_XsEBygM|8^mtxsi&)j zcrE94x;q?c&~w%L6#B?s>%}5OvwdRXR0B!8NWaAQQ?$l|S|%t6F1Jv;T5zPSUd z-D#XjRp!ySj=E^<2MYjq|Y>(WH3K+8t9;zb30D$I>>1k4zb zceZIdCXL~Nmd$G3LqJ-Jrh(@jc-K3!S2YT1xwqY1UM^&Ot=1C`7+sh2PhI);b1el= z^J~~Z9xU@?Tu-X$hv6wVBE8)FQlsDJEtq6$UEjlF-;FZ2p#qdl*=h9&K3-W|oaZnM z^`#O(Sl??NP=jhtr?cNjy~Pl6<`Ge}fEJPYb@R!sKmXE^f{}BA1{nmioaldLqM<_w zFR1We*8v3s|JJdi^~rXV%e`qwoy54_mZ5dGd&fXr6|xJ6vN~U3S7JG?jeDQ+$2gb{ zjFsd-&~&Mao-Dn?$6^ zSyX>2dpFz3GVHWXTz_53d0P8NBz4*>Qs;!epCE12OPP0CMG91^(oDk}=PPe+4msea z5X=?#A7rZ?Z)f`uRF9WK2xuPy>1YcFHSRc?tH1!e9coAIs}GDgBV5k0vR8f;pox5t zz%+i;^&$lU=yY;V&0D@GqKX-Ny}vm=3n!qXw)U2fqqmU1`h*vrT`XiW-z?{G*yu~u z3PlYe{5I?H6^gQvc;+k1boyx)RFC~_PH>Pmd# z_{=OARyHM6sPZk47Io5tCgxHF`NDS&_mHG;lE$zEpWqcn##@L_eM2l^`#N{r>LSe8 zgdTfU>_jKbd`Mi~xd+PMZM^4R^~ES8fl({^Ink>Q!IS>FSTk!vo;}d}_K@mWf|h|X zAPfk9q^FWF5~6zd(He~|QD`o9Q;dV~tXn*DuCMxnFjP)f8!105EX2g9gKn0(ByFjTPl>3%WELOM8Ye0gEe zpF8kjZRpz|j1~h~Z38lW4G=voz}|lBe_TYw+_!5^@Z&V8ThDXne@mOJTq_$vVB0yv zOtJ98UmCEkqC$SC1#U^%;F(=-+!~$cE5)^5k^RXvqlVPuhuWayGQ0$y(gKNg#udJh zaQIcv%eo^O0*aDeW_Gqa+hKl3;t3QBNiO?eQlWhgvb#=dP+12^@`C2@{)kDeUQiGGaOY}+BBH3g_Z_wExz z9*MpGwKP4!kc-e^4r+cy^^rbC^kd`ghNxR_jTA9^7H95w-ntnL&tdhTQD+6!j7e+% zXsnQd2eCu;Bls|F1FuzzhHv%9-)}srPL!z~jZzAOckj$tH($Li?P_rv&qXgcpu zuS$0+tUi#~Sb`xe<-~CMY1t*W$k9-=zq`)U0vEvvuLU)8WGdsv%}3%)w8GwPbrlO1 zlH}0Kj|{fk3FN@Nog=&B-L5gLA#(+(1UYpJ4Izfrt!b8$BuvvZZB#rj5rA*FC4n-1 zlJF2$Efq^*riEZDZIeq@f-jN7;T4-mnG$!^X}NQk@=rlUlL@zEi8|f84+%wTl$tzC zt8p53NlIHYy(RsGl+UBqa>k>bZnp7L_`D%`x}d=*=d2P&NJikqFm%aOS* zSuZl+*xwEsT9aaG0KZ&S^zcWe@1{kjhTO~&TxxP)`8AB`p|xZt@dUl~f+x>IXe`^ihDv?o%_?IXu2Br`&+<;5!#UlT zy8J6CuhsK7%2Xr7CpGgI3b{j!2lLANXS$EYITyEMH{F{@JxX4|YWmCJ04ElINYsfT z|DW^;RP>jIY=lMs>s%?Jduc;%M>VLAz60Znj?cWAx7u5;la);%S#wb7Ge!=oQIQAZ zDz68Qv?QLEh^FDa8l>8-kKm45_A&fqx4)7_676{j!Z`Enwbg0M3YL~Rt6u@ork)nm z@-GAPIzI9tZlG4#k$6e1;8=1ET5N-{P|gk0M_c2wHTy17*@Mj9!|`6|i~D=2jjr|U za;A0dnfTf3AR-ZiNS~(z!_&twbGM(CutgEK5!}t}G#?5NNYDue{L9v@q0-w{DI$3o z$%s}qSJIW0Zje-Tg)+I!{eX?Bj_AkHykp&Z-~YSXZ}HWiX`M!svl=z-mtr`{9JC;M z5dvPif%jCl@YAsiGV(Jte-BrOMpas_>1mPe)V48Qi5d%Q=ubPLz#3_3JBkrA+9&)p z1_=Q~Rzg%fgok)wemxZ?c4Swxo`AGN*3Mi8g6%=IrJ3tIxx7$r7a0?^&9ONxrLLhA z%EiAl##_o`u~r3aFY9h2q8OCBtZ;`0f8;jaYhr^;)r57da=91%unE)(Ynb>O1Px4z z2hSZ9*V@X-glO5u0m#gU5Nt9BqS6kQwx!0(<6-^}00#h(K)P)c!7Z zN)R#e z=zWkL!IBbIqszMi4{N-DDez&e?zPRnJ`nSwm_w)hJnXQ^u9F(f#U(*J-$}&v!o54s zUv?yls^*-K>i=wlOpbioq*5!t&vWW^9VJTuE4(lv#(y;lhK%{~=r{JpsVcLcYm9BK z*#pcc)H0mMkCIh5K)gQHpH`GAolv&h8hM{v<{D7YfMln}N!9N^{6EqrkkfO)*;;Q* z+FA}$OpQAW2NJT5S!D{Fmp(jz;ij^pg1CVN5V?!SLfK&lCk66=Yq@RlDC`QqH@mH) zWo`fO2uWT*AT0Up%4bk3*lI_14}l)pkRe?d_S zsCH564%h8SC`$ql4Iq7PZx5O^hIm%qDoYLU)2zL!=*-^6$?85%Ctw7g7`2FYtmj$_ zJkjhfw?Q}W5X2^W6xc+sRTN2Sq?b;WC3se5|5|6xsl3dH=kiTzO z$*%nioScGe&o?gEcFpw278;z3A8ap)Tn+&~rmq#Zg$PnIcTdBl5^{LBjp&h-l>&Yr z_4*LnBlmv)?w$Ub-NT513Gt7!aT!{|>w&vCRgkS$XL>wZ%S2@(Li)dpzL=Dm>`l8J z&WsptUD?^4yg$9QLSY9prq~0#@60fC)GN5;Z7J;aSK-g=%E=L|sNkr)bw4WYm1aJ7 zQcE1$knEl#FO8)Vis-SJV+#!=)RYXVKOMwUk8&?#znpgXCnf-SVq=QkD;vJE%y-Ex zX&e8Yzpt4Oimbh~FK_5S6^!?PgXce>8<@7^{t?L|y8gh?(s31@57xq;?i!u7Ho@jy?1$OUxrW8=MeCh2n_Rtru9=ftS{yTYV!^w&lVkjSws(;&tJ zbC|Bg8S9^OL77ug`;j$dF~usc4J}Puo(^K0#XFB?6b7zVnIUpRZsuNp9(M7z{i_M& zj;|{z7aRZ=_0dnd_eSVzReGg6=)T1R%W7Nw%)s>H4%hj=D^qi)ORMLr_;y%!=ff}N zm!169KNfgzZNudW@mfVMuu^=Ow~99#ggW>Ky|i4aGAa7Deiyir^b8c1H9oz{w1Y()N;s$HI?w6 z*slVgMM|O`y}$=eQ%DoB<$nIEVSzLt9z_FnW>qP3p zD2=f8X63V8Gb*39Zon8>kb~b$VI>8~{{*{L7291X7@sgTwlJj`o#88P^CzZfR9C3? zUF@7zxg~^0Xasd@h zyb>@nsfDBFRVxsd85lx#tAO3DMGtL+%Jv>N`I+U@evf$6)feq7=h3A0IS@qvdl}eG z`Y3F?e_9o#MV$rTi!!zlJvH;QOb7$OV+;z24iCvt52gfsXo?%@A<=xumwYpyH{uYXEnVgsvpwQtAKK~vc;N5aC_1)8bA&ouk zG3#!N)~g*rcT!cJA24oAiaSHHL79NH_u=!YCftv{YAjUg=uAte_rap;o``u%rnml} zCc2~gAgX9bgc9Zf8M^e+dg5yc)N~fW8SeG9x5iY-Yz8oVt6_Mj+P6r&TU}nw0QIz0 zMu5FD;$xUYdv@~cMW@sVQetG7QexU|9_uS6Zy;!r;Ee9pqtgbC|1i=Z$9sfrXwN5LZOm*lko2MUlCg*^ zR~l|KslGB5S^G`>w2mg^WIGCsv7txzl1G!ns7lAT54rxEOjh$Nb9`c3rqdUh5c#1= zgTlp>h5EC!Z-E&B%L5Ie#Z<^M~XaqGn&1K~d3D6x8_so6sw$=?lN&RExdJ3=R z`>QE&V7%(|h4756h$EL@U3aGL+>3u1-Jrwa%Ukqn-`53b#z0*!QlNa+=8Zz0Mmdd) zL)$RyP;8IF!`F|hryT+A-LDfENdj%iSTWcjb5v^^#d@9wd|nX@m+!2)Ar=}vA!Ww7 z1V!^-z=j+XL9MOh7JEM<9Ux;4T*UU)oGh9}#2tlnu4$IkT-OLQ&nG5lJi+Y@#QD#n z@AKko)+_4v0H?C!`#11tzjoBvYDrl^3yW#U? z^>AZMzMbj08msXcNi)Y*jDWR7qte^{K(Y9L2lIwETNZm|SmI0#B)?%uNvb5H)n8{s zycbnpx2(aRK7brddBO+6NrIDhBOwX0&Wk6vE=Q#D<9u+jI7YP$Yw`*OOdZ4Or;P&D zLB~M8(1+pa`Cs>#V!rq!kBiRXp9{UL+&Lsbr<3if3f-?TfKIK_xYZ%v{;+Zs5e$u3 z|FLE_ZIW(=Onktns7K)h!>Q{-z9rl8XK|IiY)e1ddEAqzsKPdEmh|T1h%^@ZMkem& z4V}H8fQQ18loa)JXa-1a0cDvB(8KvUU9G6C)%D9P zd2O{CN)(;I2R$@I=s9vtKk=kvKg*f^$I7(fr0KVRrbIFw+=+BH--fB}TTYoQ_=Tfa zdYOKmaCi(Zy;g%XOI*P|ydFzT*LtD_iFXl$0wkkf7)k<9WTgA-muID)xB!1y7Np)? zF>Vc;rq$^4wo$F41=Ww!EVT{*PQ)dj4IcL0JSUc?%W*UdyHpXf=YDT~|N52vmJo~* zmGj$3m8&Qh9chxX4c{yI%PrUQo#2?{xzuEGG8o{)W{)-pj)at=2}9|3Nesbbvg;6K zX!9gzcYydtsDR$Z|?XpF)QS- zL1=uLh|pU?$~gDOV66++s;7iX(kry;n!16{5#SPG&@##bDd^w&e%~Xe0etkiLVonY z|2v_&io=TTF7a|dRzXYz_)+?p^NgMeCXYJYUt`ar7mXoC{wZxebi-7Obi~g_%MWws z@bseOxcqrNdFFlM{lR|G@gy0*g(GGeQ<}q!RN-sXvI+{QI$;)SIw=WBaT#eTnT#H> zN@^Kdi41>nJhi;MILc50azaR6Mu9^d{BXcI=>L3?kd%>@_ zn$VazoMXa)Ar0tQfiO6!2Da?bzC4}%wSmiXY_UnRo~h4i4d%VIl2-*Z?0JvJOO!FR zvMNCtKIn9#luM9=FL;zBN~OIpGFqFR)^m1g&!g%~BmTJs!{hm3GzrOzsKn1rl(Xr` zXa%+wEXe;VGqPb6HLPK}x{{MZ_6}k?c4=kD*UWKB07xLtP;%1mGEd>5WD$yejLGgo zZ+&bn(^X39K=b~7WJQ}~u9HDG>n3Rdo5Ny~`)iP>mvj6R2LtQ{KZA>i5%z>Z8;T<9 zQHcI79b~bQkWz1DmMlqw_KV+)x}Hi0boT}{qP~z#Zv0VD&iw+-&je}l3P$ec=YHa4 z45tbKYerEF#t)(W`JV!KTwC^7?$F(58%A@M&7S|RPHqW#v)r>nnV9BG`DQSiy}KagVj-$J7f$F43`9-AVJ0V=J3Q7X!{)ygq|IVO(J(qR=aPMqrVrnt$!7ii-p` zs#$*6U)G9iw;$*eFi72-=)z9!1wf2flKO413{3(#7N6%47Y%y1-ICWRy3gF@?taz! zIr<3iMxEFRt+?=sGX^?9n?is-fOGgr@!SiEq{Fpuy!Ga%%vV9dQ= zbN=UU%tii06Q*&FkMyMCG<9QH&xYGvOmml@DmE}LpBvR~fL^0_9vfuSy(HwUHCl~> zA)l{u7U=a^tMh%(l4P?Jlw= z+SNO`M~V=@NNL@T z#-Vn<%vsJ&|HIoO;G39fCBS&q5p1a;LV06Dy1FF-mLxw!PJYd5@M(mD^%uaTWSr!g$rDG^+p;=gmT zDmBAe=V~imnk)34$iN!pm_UA(r-q@lJy^yvk1bzlae(b)(VHeLT$*XgExPNj1|pvij<(Y}MWcm+*fx^cQQohbKwrJk&1y zCX$R@b=fnS_fM<~;ZY|e93gn)AO#{RM;ig4!7x8l{M|x5Zv-anY<2D0o;aHxCPiQp zK!a7UF~ain*>`P;ksd-eeq|?B*--I`m~;BC06OK}y*u_#eHH&l#hsiNe*(@`ozZ?} z_viPMUuZkP!hta+m}!ua-f);Dq}Z!qLm&Ns+?kz+!L!cH-pYRJp3RW7W@3|nT5=?2 zIu0{ST(+0-q+k$PKeAH4_@wN=XjTPGS{n?Foou>MfHGUJXMJmTJWwTtEEglI60JQeQ6VH4&9GSDVKQhx zV>+LPn_c5c3yZj}9s?hbx~^iIwR$&JT@aTYb%mxV@FL`&(zZ551%0FvETSNg=*-<+BtIY5IHb7^(_ z)}4);$&e1|v|~Kyj;5_U=cT#vb=#m<8h-+o6zbOT*Lxj2&h_OpL%j2ful?8 zY`M4VDBo0x+^X&-gZf(2N-6)-#w@KKm0rS@wYDKP4Y|j9$07)Nrp{^)*d3U09EmbW zs%9B9C{6M2g)D^}U)3Tih$&JZA6wL2qahos?FKDKeG7 zJG|x8p%c(~0vZ(f9{~y5mvRU9Cj32wLHKbd&@56|yJD0iqks5w&{IIsqT}f~-r>Jw z6BQgWeX<{@`X6_}l2QTm)~rAs}Zjxg(*A7{&!iE1bzFtq>*^z?#? z3PSa}11WZ2VaMmPQI;O(UXiPKIlLtJ7DW6}ir`}3uW?bXHv1>F<@udQuR)q0I_3_Y zOX?Wpdsa<9^Fn?jAX>XW!Xj+zy4uAgI=B^b;ul~z@-dFPcxCMGu^O%c>;)6dN)Wb z`8FDrU@?>>h&bCMX>=uY z^7u>|!AspaonXqUnX|yRt9n+IbGJ%NYcc-C1S{~)!!xrMm%>Wp9@$^~5zXi)UoY>Q zzdS5Fs1;$a)=Ag=8L}mCKn%W+huW$+h*&bbwFCcg>WSwIcK!1BA9K%9z~3ED!{~R} z4}$(Z$lk=a`N$-k!WE_|B%>vmBoWz2`;HHvB&|wT$6ur`479lhjSP?PkA3mk(BrlyV?5 zH3`SaE5Pkyf;9hCyVX9Y@$Gs5rUY(f;>YA7vD0mi-gSs}2TI$$Hoo@2|EFPT~07WPJwt3{k>5C(%Z=`w7JD{>v{0 z!1cQSYAu!+=lyy|Nd5ZFp5BsQ3A8P9gQY_OD^- z)!bv%dT|TtM_M2_#;(C~p-;g#<2d3J*C_j~Fr}&agLm`2AM2!PP9ln$lEo3PRiaK( z2h<4h8ZE~30ano{%l_tZ2Ed8s)!ou9dOarr#4Sj^mM`1TaVj#a%(qCbW znRg_xF{f16Ud&axu%=c;ZJ6qiq@(UWvL0K)5RzdvOwwBgF#O@DP9GM7rl)x!n81e^mFK;0`DepP zeNCDkSKU?1^_v)5WSim9W2C(SNXN;0SgxZVovua9M~_h6VPO(@w6o~gJG+gLh@DWE zGuNJU+2dD3#pqakZ8}T5b-qOe8?3n}#AmB^8xyGsyD3v%q@zC)!5 z4)}Z%?uhli(q;STo5FW61!I=Ydsc}{q>+nAefYN$O7Hb2hvVh*$*7oxu&Q7TJQQpt z4~T`>l$?6i>Ahn3Z8Ao5jcGVczj95+c=c}aZeDW51b!WzM#x_s>8 z%y-F1L$fYvLhhAvTMb)idu0%Yw|pCd#LXv^&0O1 zGJb~s7*dy5?}cqO9$m^SJuk@?9^H7(FvnJ>^!P{0vu$ zImo+rQUt?q)(HyRF7}}TyO=eP&|O3azxH%#KfXfm$bj=qo&jR}!s0HD`jUx)*9vVA zy^XTK!?Q0^WbTzo1F;0&Te3VlhLz<7GF3YJRj`ZFCAvpvr&Ii~G<`somD%m=$A)E& zC+E~%B0d~Xb^w`XD_7PxA;e!9U(R9Kx>(EpLH@|^J})1$FCKC^GjJP12=5QQd@%mQ zSw9ez;4>!BB2!-2J!6`~^4LHm=618@4JsQyddlnQ>>0|j9OF+Dp`7=>C+W(DrB4+2 z0|#@3Hd=d9pzdvc>S>(*9$bUf;kWB^S#7>zS0Sp7RMA1c=gIEXF|B5i2iNebO$}Y_ zJT<;kg%ZtWI8+-zaNX88LEWF>hh7Eskeq5!9rqgT!#h~K;}Amn=tM)+*bge7T-=@! z0;9|i_tYU`6!IIr^cE7N0cJ5=z^7{BUmb4@a_eK)c8=T%OQgDD-I#dr!fd2X%{kJu z0vvBF4i5Q!1^T*K!MSfQCLbE82M(X-|6GuDJY2ZMYOBT3=D!Pe8`2YDFV=<&!}=Qr zN5wS{bS=Hu*M&OzeJi@IrkA#5XwXL$7+?49P_$JV2}tQyKw3tMVM}{uyRdy*-NNvZ z&1{3CZf%=9yWTfc>sb-cK|wzh%nwMQ)6ef`?P4qX|^gPOUU$wLq5=npqtK!PZN{~Q3P z?ZnJNR-5#=S74-3FKr3pJ!qu?sFPR+n`z$Jl*z#U&NB-qv-VjmRMp62<%xn#FI6?y z*I+6ZO>OT#7QHr7=xw|~m3(LanDD0ARC`~>+Om6_#OhH0UpX!lCbn2&*DfuYAbynx zW!-InjRHM&0`^)l!2}IN@l%jK2GRr#_(hArq1!15dT96fk}ZIu(So_U&`2q17f7m>!4>Wkn7nA*T!i5iWT;2XI)FSuKy_+Liu&uKY_@@ z4+5n>8PF=4H<(%KOtkuz!NZD?XB)#p_s`1gq1fx5T8Th zookHoOh-mCROlyuv(tB4id1&l8ach&#f;OF>DA%0A6<61A`FHpw48F>8{QYoyMYXX zs%@bix8ANDy=hdUXjQ)wUFudwa2ic|VY~Vv^^M5W;3-Z&jE1q&kXkPu{+EL*=il@F zsj>e55hF)5a*rl*p!IaN9@zf50(r0qR&bwFjE{pORaf=`vx16pjg#ytW;O+N7!0Ne zQ%sG76*I#WR8z$j2+T@KDm4cR{ESc~1!Ylr@FN-^%5nGyOaUgZ`v1REQ%!{{8FDBp N!8jx&3=oDK{|D{yGtvM6 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/weighted_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/weighted_a_star.pdf index 2e3d048c0d46ca184e2749195cf3279c77a69d3b..a94a99fff360704aec7e0f78fe476b35e2914267 100644 GIT binary patch delta 5313 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 emR3@d{{R2UNGV9iU6X;)$;i)BhjM3H*it delta 5329 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 DT6-P+ From 1125e5da649fa74581443cfba665abe47d575b81 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 4 Sep 2020 00:20:58 +1000 Subject: [PATCH 18/31] Updating README --- .gitignore | 5 +- nova_rover_demos/pathfinding/a_star.py | 23 +++++---- .../pathfinding/comparison_platform/README.md | 47 +++++++++++++++++- .../comparison_platform/img/lib-folder.png | Bin 0 -> 7769 bytes .../img/relative-import.png | Bin 0 -> 17425 bytes .../comparison_platform/img/run-file.png | Bin 0 -> 7732 bytes .../comparison_platform/img/runpy-import.png | Bin 0 -> 21189 bytes .../comparison_platform/img/wrapper-demo.png | Bin 0 -> 56773 bytes .../lib/a_star_variants.py | 5 ++ .../pathfinding/comparison_platform/run.py | 3 +- 10 files changed, 69 insertions(+), 14 deletions(-) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/lib-folder.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/relative-import.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/run-file.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/runpy-import.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/wrapper-demo.png diff --git a/.gitignore b/.gitignore index ebb6b47..73ec5e1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -*.pyc - -.vscode +*.pyc +.vscode \ No newline at end of file diff --git a/nova_rover_demos/pathfinding/a_star.py b/nova_rover_demos/pathfinding/a_star.py index e2b2138..f961ec6 100644 --- a/nova_rover_demos/pathfinding/a_star.py +++ b/nova_rover_demos/pathfinding/a_star.py @@ -1,3 +1,7 @@ +import numpy as np +from itertools import product +from math import sqrt, inf +from pathfinding.heuristic import euclidean_cost import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../") @@ -6,10 +10,6 @@ except: raise -from pathfinding.heuristic import euclidean_cost -from math import sqrt, inf -from itertools import product -import numpy as np def reconstruct_path_to_destination(prev, end): """ @@ -25,6 +25,8 @@ def reconstruct_path_to_destination(prev, end): return path # A* Search + + def get_successors(node, grid): """ The neighbors of a cell (node) in the grid are the 8-surrounding cells. @@ -35,7 +37,7 @@ def get_successors(node, grid): n_rows = len(grid) n_cols = len(grid[0]) - for dx, dy in product([-1,0,1],[-1,0,1]): + for dx, dy in product([-1, 0, 1], [-1, 0, 1]): # skip the current node itself if (dx == 0 and dy == 0): continue @@ -49,17 +51,20 @@ def get_successors(node, grid): # put infinite penalty on successors that would take us off the edge of the grid cost = inf - successors.append( ((x, y), cost) ) + successors.append(((x, y), cost)) return successors -def node_with_min_fscore(open_set, f_cost): # open_set is a set (of cell) and f_cost is a dict (with cells as keys) + +# open_set is a set (of cell) and f_cost is a dict (with cells as keys) +def node_with_min_fscore(open_set, f_cost): """ Find the cell in open set with the smallest f score. """ f_cost_open = dict([a for a in f_cost.items() if a[0] in open_set]) return min(f_cost_open, key=f_cost_open.get) + def a_star_search(grid, start, end, heuristic_cost=euclidean_cost): """ Implementation of A Star over a 2D grid. Returns a list of waypoints @@ -108,7 +113,7 @@ def a_star_search(grid, start, end, heuristic_cost=euclidean_cost): if neighbor in closed_set: continue - curr_g_score = g_cost[curr] + cost + curr_g_score = g_cost[curr] + cost # add neighbor to newly discovered nodes if neighbor not in open_set: open_set.add(neighbor) @@ -122,4 +127,4 @@ def a_star_search(grid, start, end, heuristic_cost=euclidean_cost): f_cost[neighbor] = g_cost[neighbor] + heuristic_cost(neighbor, end) # if we get to this point, it's not possible to reach the end destination - return [] \ No newline at end of file + return [] diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md b/nova_rover_demos/pathfinding/comparison_platform/README.md index 3409700..bdaaa5b 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/README.md +++ b/nova_rover_demos/pathfinding/comparison_platform/README.md @@ -1,3 +1,48 @@ -# Path Finding Algorithm Comparison Platform +# Path Finding Algorithm Comparison Platform +## Introduction +This is software platform aimed at comparing the relative performance of various path planning/route finding algorithms. This software tool benchmarks the processing time, peak memory usage and distance of the path found and presents them in a visual manner. We have designed our path finding software in such a way so easily a range of different algorithms can be added to the platform and their performance can be benchmarked. +Currently in the repository there are three classes of pathfinding algorithms are present as default: +1. A* and variants (Heuristic based family) +2. Pledge (Wall follower family) +3. RRT and variants (Probabilistic family) + + +## Usage + +Our goal is to create a scalable easy to use function. To use the comparison platform you simply need to: + +1. Import your algorithm(s) into the comparison platform +2. Select it inside the run.py file + +### 1. Importing your Algorithm(s) + +**Step 1:** You can import the file or folder of the algorithm inside the lib folder. + +[IMAGE] + +**Step 2:** Ensure you have fixed any relative imports inside your files. This step is only applicable if you have multiple files are they're importing functions/classes from each other. + +Because our a-star variant file imports a class from a-star and both are under the lib folder, we import in the manner shown in the image above. + +**Step 3:** Write a wrapper class (If applicable). Currently the comparison platform is designed in a way that all functions accept 3 arguments in the order: +1. List of obstacles (A list of (x, y) tuples) +2. A starting coordinate (A (x, y) format tuple) +3. A goal coordinate (A (x, y) format tuple) + +If your algorithm accepts other out formats, you can call the main algorithm with all the necessary arguments inside the wrapper function. + +[IMAGE] + +We have put together a very short guide on writing the wrapper functions and you can find [here](). It has a template code for you to get started as well. + +### 2. Configure run.py + +**Step 4:** Import algorithm or wrapper function in the run.py file. + +[IMAGE] + +[IMAGE] + +Note: Remember to import in the \ No newline at end of file diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/lib-folder.png b/nova_rover_demos/pathfinding/comparison_platform/img/lib-folder.png new file mode 100644 index 0000000000000000000000000000000000000000..7d74ecdcca2b85317a710bf5665986fb24035250 GIT binary patch literal 7769 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 Y^&PJ(87sNO-@$;6hQa*`(36+{25=1PN&o-= literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/relative-import.png b/nova_rover_demos/pathfinding/comparison_platform/img/relative-import.png new file mode 100644 index 0000000000000000000000000000000000000000..fd3063b80867f0cfb9b6b3e937a8d19da492e748 GIT binary patch literal 17425 zcmb5VRa9J0^d*eD26qeY?hqij26uONcXtWy5Zv9RgF7URySuy7ANl=ft#2M?9_FFD zPu+X&?NxT_>|MK}loTY95%3Yfz`&5DrM@eJfkD!I+Rkt=pWp59_wS!S;4aFNqF}Yt zgvXx+C<_sJ5iqcZ1jIKZ=+82|qm-5l7#KF?zYn;y^4BXcFtJkU?;@(6`seG&x~gg) z!dHrPODyE5v_IiYg1O2gH4TFq(@=|*0YgCFC7NVW*+uQy)EbtWG~j)HZ5pcd1@I*i zzdan)vb0z^I64x7wwR(1;!8P?9K;GJ$LI3*B+KtfFutwFckj6A9+%7x)WaN~-p3r5 zOFtnYAwUQk{ne@icNpjr0BE`rCM))$QA8K5CQ4Nq%s>HxLeWIw$U@Pa7k>o)XNbZz z;6HkKdMe>C|4%tmtpFSIf0^?IU}68`Z_G*a?enpJ*ENw5l>WWq(^e0G_&>QGaSi;t z-ErtzpW0`%g**BxK-azK)+GaZKSS+!e&)X|NVYfq3mX$CMDw;)mbj7ZuE_NVRp{j& zUQ{aC^y>Q72-Heh(>9GFWJ2mf5_wV;2F&3TFl^8eVqy@J(wSSBNhTs9B-}{;e3BZ| zfx!oQ2IVXkQaCUDphXfv&eshl&-={C^^F&+W3hNyeF~L*BRitP|A3GHI=BoFji=Jj z!eojBvqT)`d-v*j-a#s$nHL)il8$MKe6f<`Q#nBd#~- zwe~B>IUL1r8zTl;RWqekh_x0(KT9LsEH}+GVk}_~rL9HC&I1uv+lWj-bS%!pwgU4C zI?5@trR2>3M5T=QlxE!&%QLd3B%y9dQ!bCI5qy=b;P&<7cKgeSdhRmvKy76PSBqIi zA2I??NR^N^(yp|aIg{h|IVz^e$np3gvg#(R23lDvg$s>nv; zh+0VOC=L)h(WpJ*3Ph4o`2IOBtr!`G-R&n9OUNR$1@WLnOy_<-5a*mG5srl1Y#qib zez7V$l4C<5-QT)momdWGQ!~X{JYIKEWE!`kzQ<~p(DFUG0n$?3$g=VDD-=#o* z?q}g4mZ^DcQxp_L_v^&olA0`A^5Vk4QWfJGDHo%+1v3*~|J>1!inJ~iz(vhx@<7+OY=a0S=iiiluLXNzSqbNU{;*^3_1 z{SV?iN1|7%9O7rd3fRz66|D&b|85*kr<6*lCZN?jkK>(dz}IkXcY1WW6R8Z7{i+#2 zaOM?u+zLZ!@o03OPFs$ajycxNa?`;AMXP66$M~m;PU&ZItepW>6T(+^hA*;Ip5QoN z(0YW#HH#HU$?gKW3X;B}!uKUdhjuvFFpvb3axYzwvpMOSYpWvZt;o`y z(i3eC8Aj`m5H>ZwFWgk5DqS)yBmCGMAyh_R`Q!T=vFHfbFk}3@nBeki*#U(nMlyVf zG!mgEK$4SIa84{GqV?GME|(!I7n)%7XJeXfJ{(f7cZ9E8ncq+1``(@qLWOaV9B_PC zkuApy_);U6ax>2`E7St=Z|@m-@&es}&c@nR245maS}q=cd04TyiPmReXJ$o16c5)` z$&(a1Fo`)TZr7l+>fLG-e9O*T_PK`Re(0h5ia1hhPd_Qc-(p3M-#|U2)$&Zshn_WN z1h-HM>wng}8N1Ze!S@>bo^>cC_hyo~(L42S#4nSQ1b0SjpR6FmnQ6QAebO8Y8^?{R zl{rDI@*;t&U(>(tX&;xXP9`+tB$m*kS5BJir^g_f7Pa2|c}z&X7bg<9;E>&1imCDD z3s13XgKrr-$r(@C5#iy2REVyLnf|#2-|Kpc?~*GoE$d_VUmE}2a6=voI|(^$he^+2 zR0L|f6(*5~$5pg4l@Hw2R`25kl8JuRuhr?}y^`jJW2Tg=O)yIzE54k8e)-$fS)Ff& z&RUC_UIuM(4LA{V{^6@>Z6?bA zmHV5jA91OW660jEz(!sMO^ac-GXuj@)jCo;Wi>Cd=!XyC!u#)wVkXfg9;IxI0518U zEgUL%vl_14>&Ew`g?XuF2cGxn{dTMS^5OAVm`t^No7_f3lxhf}bK0kl#e3~PDSKO6 zt(v)wolFUg{8QseWsqA`HDY#JQ(Y0<%Gi;wg-N@H&CD4UUZOf93}P>btV^~}dO-hp z^NEZJ;O*YJ@e3|y#pbcyVWFp-6NVP`%#N`?Enj>4ZlC_fRqM<*nbtXOJ?y|MuWdNx zQKwfK6d?Pw*ic%}`56p%*cUMvcZrLHL#J~b&b0`XARTT3RX-19K;ZiTj{x^?ypm(5 zr6Is$<{}I8C=m@mv%kT${OJ1HcJ1A8h*{~Q80IVGYJtt>MtkN1Nwp>j>p{xT6svm6 zkKGk4hyNq|t%*7*H9Y}TVRrO)0@?44IBaBIwHQY~WcelHYvGGR;1~7bo@= z!0Om_X+gMhMRB7AM9B~$Q6X^x_fLI*)Nzn}6gqm0WbVWv6hFZF@K6p|SJ2zucfz3l zXo5KHT?rux_|n@f9c^L0JD;RqUq>shAOSON@Iq4A=}l(X4tvJu`VBVM3F>WWGD8^4 zzq*=nMnQ7e3+qE;KXN1QeT%!D|0cooR|>O+PdBW{u~PWtEH6zvtz-f$Noe|G$kEN8 zUEJqH7>ij=zH&iqeZJMfj4YI=Uq$978%zF)>rZ&pK$pRNLfx&m*BL1xJ2dF5oh$@u zX0^hZ-;%7RmLzND$EUyUlAM67PuI#t?6SM|elP|34CzD|R)!N4 z%sX-Q;72z)LTn1=QC@`+qPhy56Z3Z2)9sgZuRe>!iJOM0AIZFf^w;2zEY$S^pXF9E*w7xl@bH zrN>4S?%zZwV$@nIn3<{WC-;Jj2h_h0wvBN2lwy(66hgbl{7*$@z#RcjaMS_l>0#uU zO$J2JbxdtPvM5S=HVL=yEztzdmK@v+Q&|u%+f`M5hTR!UB6*s^LBR0u?EGa&kuZ6kO@W>Trm@uL_78O^ zN8eZ>y%@rrpEkZ zTC#1s0dj1zVQ%-K+1~$|P?RY;W><=zVp>u(Xap9H1Rt0`D^4i5_1ck z=Ww|b`^rQ`(NnN}mtAChJTU03YGNi4GFdUxBDy>j*2{&O@M!FoonL&5$bWf%V`#=% z)s#YY%a&U;VIrorzGXfwotCbtMVdOlG0rq9HD=Y!F#4l{Ko~{hw5aqTO0**Wnbed> zYh`*)ag|~qFQiS37KM-n2_oBk%2cWY!cp8)cQJVUy$h zUk7IzUqWjoM^i@iGoW-S{}96K;D?AO-yW$t^*-soF`h5XWB3dW>9dX%uX(Y9L#s3N z=mtIVw{ErYwRMKhg{T`d%A`o*OX#{j@ZV#qR<*QeM#&^GZkxxtnI6dEODx>3m4>Tr zau%-{=hepd!;^+IVpO7;!@oeqwwSR>-~QIwXG8nGfMX+Bl!!|4C0uneEsG^L5wSM# zX?Vp)7=28Bdx|B5Hzi6jXG7tlS!zdty)Cv<;b`B8`iz^%p{UMjrQ&Z(H0PY7%h(}H z&7E;_@4LQ}rqu60&Up6bh+*Bk`OA#&C0A__vvs#C!@dN)BP4dai`z|vo~_t^PcVKR zoQbhZZkLo(gvE~~EHE7Df}*8gBopbzW|*w`dZsCT0P`qzV~oJ)+v5G9&mO;V#PL4P3Vp5vxRY>8E2dt_;{ zd6vcE?i<^Je~MY(UzTr%2gg(O!2FAm?_Ni(B%)rT*jrXdX?fc z95+}}Csl%??PTjksgWsZs1P>G2#H|on!^E#DjCu3%x#M;n7f#jIMWhfh-ty5QBpKA zL%q2S2J(*~38!wDXL99Td=stZT*6JW-c+x0{KS(Eou4zeMq=D2vkIxA%A{WJRn2Q> zUYC*{^3I>40-~u%QnV1a|G^|)>$M>sX0a+XXZ9wyS6*S_z&g{d_D6aXf_WB4NkV{o z6A!BUW2(tTK4D46l#znJ-Kf-)XT7z~4}_}fQwHWHoC!sFljC&ODq=J3%pW7MFF9JT z{jv8n6XM2ie7Or>{5N9E4+WW#t}TQMUCPaB^^i|Ql(n{g4VL@=KDdoLmrdIw;75sL zrBwWy+h0No-A#-T`g8werBU?(v)jjAbZTGDD*SnpPjSP{+~WKvd-lEJL8WW?_%f)K z&E5JS7=4QpvewKb-(H0A52@QJZJHdvNTDef4%MR}3O|v1aQ34L1Ff_*swfJIb%2dW zj(+J5M+D+;0xdI%i_X71X}r!S3i&w`jwI?{l|d)%eGg8R-@oQtuoHPx7^3Anp_MT; zT2V7YJ>aCF(L^+cMj-4F<0$I%edya}FGbn5iC{EalQ_$2xjub!ct@bB@;xw>zLfv! zGuah%zd-5&yV=%RY;tQu)%%yX!=H3o|%5I1#3dyk{ z!VNX2d%+tkI{W!+v2LAV^kw7X@PI3m%Si+*j0%^eUu^*#Qqw!H?HGK^(oGCTXFe{n zp_i#{=#TYYR%NXCd&KjK)LECyy@v25$#xpoo{hWPlzYdjwp>y^-2t|x&~c{T#p4ax z;cB76R-OH)+^V#D^OHo#P}H#*0rZKv#Q-}(gF}@t+gE{<>hS_u$a!fy$Np4OPEhAn zEyF26&*u0Tt>J`QupcV++^KachbCZ>y|lvDQlD3=?D#euFE+(M$xiabENv@i4d07J zi;t^r5m|u;%Q@y5$%p4OW&eP+uDWXeGpS7}+GM;pWkRT20x{SXpMJo|;y`zAhY~r+ zMyy_AH)JwsE}GhnMAxK+@gTEtGGE;9=lQeE)dk0!*~HSv?mN_Jy4nW=PGP7C z`7f~$bYNd$hj?3}*^sBj>530;wPTSQshDHAc6l;VsFf4PPcyn1=4sPSi&B+bfm^^R zKOiA{rdM9~>Lij92h9Zc+G|Jqw8hvt8I^+*nvr~k%ppP+iaa=-C%LO*IBGuAN`$Td zugl{w!(*OP;?PcmpaT%y4Xt%7Ze}QEO72lS%j%x;|@<2~+m=?H- zddGm9&kRv1?-o>LsEO;i>o>BjS(R%kk*|D7!EWytB6`xG5JnUa%DW^a;@dhUo~BQ- zjZ3Q1?sRhbtk|o(j!7wLq3Jm3mx9R~OrW6$k*{XeqO?8psq`s) zFJU=7Y`8|V7Q1m?KQzgUM=F$V_}?-HmRQpt8g3zxTN60WwVmG2X>jUtmiVKr7P^~f zGuSW}yWqwUuCmXB&&NswPz%Yu-vi2AZQ;d|vPamR$SvWxjxMIh&6T*75=?M# z&ux8XOVYP=pu$?mg{s)aO&m(K9R#aNBvB!&Y_nFF#Wih8f3=QeJhmU8aeOwMF3$ z`fkWRWwPV^xqJ;NMndb+AB}OPar-PWcvj1*j4jh|3w;7tTi~O@2Od~3y#zk@Cx3su z#2nas@KQj(#y50I!g51R>jqN>WXDAXu$0{|=Xj@BnS~Q4pSmy_xWk(=!QpaZCAn<= zezVL2nAFFXV40j8vbq4x*yBT@yvW}@nO2>BJdx)YAa$?i25fca=!!o`r`RH(568M{ zN(fvT3;OyPu&nty`c6>=#ARW(wV8g}paw$}x)iYn09CF|DMRGd@SNF|lV1E#s!%k8 z)q1mh92JN$@|uk5;Lzv|2OtU(7r(ig=YNbPtI4n>l#mV`(d!8Z_vqOf8R>-Jvv=Ms zV4C4;;T*f&Fb&PUUFcjgir6YsA^0bYY?DOe1;j|S12W6j51^=Zi$(&^4`n`tNwU%6 zj_?ZM&JK~X@zu4ajE}D)TrsbrBY7Ew4j6|%dt8^3vlKOoOWFlNPkp(o>$MlW<|m9i z!>u+QNh?)r0DkE<4r|=c=Lm`y2X?e^old)DA*RXi*4hZbfDYM;EvCbFbyNkOWMJcQ zR@1bvKveB!^evj;1hHP%8ub*bp2#)hac+h7MNXlNcH9wQ#CS6k!tz3cbn6%|(w}-Q zl%G9QC!w)8&s4^*Hg%lIpUKlgh${T4Pu@P{1gM)MBP;G4Z`Lwcs_9E8H-(|~nm9(6 z+!z6YHd?0ljO?JUXyV>s zmGn)>w-*OI8K%hDZos}!-W5?d+8rF)*(w3s6lD(Z*rd9`$i`w~;Z?G=mOrlNXPki( zyI7c`+X5cbaMrkJ(Jnbhm)SHp3Ews7K~7uD3O>m}T@mEc|ejxLWt8`B73- z4GX6k4G+bXHLZsrGFJ}j6f?CBvBQ21==4nUVQZuaVn|}-W}L;j9res1opis6hC!

xO9ZFDqXKM{&H_vi4`+Ekvbx~bnuc{i?&P47uRQLcjhj+__l$q(J+&!A4%^_GVen9WFHFcF*&U>=B`F>c7+zYGDi z?k(We@9|{hP|Iju4Fn6S`#&K;rWExoFLy#^!cJBdaUKeIwY7)_{*0BwT7^W}@I1jA z&~IRH&J%#LXW+*)J>3ZU_L7~a4@WRH;&g;kYOH%6hM_!E_u_|*wVQg@JjW&zAMHnt zB^I|vktLqr_r5ggjHPg#^EL=b5@EHZ^TlM?HAsOOkyW0)ZGf6S+uQJd%$S*?HF_<^ z@P3WJyAx@Zydv>isymetVFCYS`?p6iuf8=W6NXCuuzcsV`4Wb;;S&|m_{wE1KF zJioCu%!(xis#}6Eo*k+mI_)j1)K2SB(e4%BF4JJZ3AxFcC&8-JOAJAF&+@uaRoh8+@E|EVp2oK-vK zYbnjU+;2^1%d$65)1E6G5e?!pkW@cDRvqy7(GVM3eXut+d9`l!%E5j z2GC!{x>5ZrBeiTZE)kY$3TXVyiOc?h4VFm<%iG`4g`t}wrWsf$VlT0t3AB8X?}WUk zkuLf#%qZW=E_F;ogWsBqQRPlxhP;zjS#K=hF(dxjb8^H3g**1n<}Alj8l21_PmN(@ z`SG~1qD4o9|Bgx6l?IZG%$8&GDBg7GN%R~=)P{{cnVOM@vfPeI4aVL>+&qw3*Lc2? zoww=>SCnI}QD$ z4prc(ht_#%Dq1bz;{!BE`86}8o;YR=e;eMGyVv|)c~Zq(+k@A6%LOYDlA%KqX8r1XBRX95@S8Og7!zl~@MWa^y*M$R;N`Ef{ zR`%kF@K?nGnZZtEhI(Ua8+{)5(*b=U!DZASz z=h_6xAyWqS=BuldTcKU<2>E9MVfc$+PMb&v?-puO&uteqPAX_^jL^{4zxIFzy3-MA z*2w@K8goNI{IA0#p_Rc{hLFpTg8g((@(zE9jLlc9N`J011e{NQk1Ayfpe33}>@*{C zeh&0jNhSV%mNpe>vw%g0tjz5nJSAMNNqT@(0!X>&?)+7%6c)TUJ*G@#HuL9yE0?<4htMD~Q{b7=ahqV5s7lJ%_{wkq|Ng|e)N=_0S2f$$ z6miJhAMPC3uyF!S-$6DnGY?(WzIQYx`WFd~;YeE*>5+UVn7+8L@on5xb`mG5K$x$?UX| zu~tFNKdiW9;@CERseiG(ZJqYiGF)+D8J`sB3+X}7ADP1>oz3aHW^~T8g^D3Y3Xvut zkR6cSl?(VOKz5!rt)frhqs?Rm%@#Vf>(NSI|0I2L4q4JS9JU|?&gWgUJn$X9V&v-h zsVD!n+gIkqTS3*LJGa>eK|<~Ow{lE4hUL)Ns<@pSlunb~T-R%B3nd0*?h;1tzzi|8VESX3f6XN88tz4>6vI z%;qqY>q~mpY>3fTlA1WVT$VoS=j8kIWC!Ktc(Wi}yZsW!uO#1i!xy`GM;Rx~E|nWH zbvcw3fVk!p4!z%XMmrf#4ByrtqS-hedrf@~<#tW}{TsN9&8-g^f?}7ol5Y8zd|ca8 z23=NHm!r_E8&})c*8`uoJqfFNC(Hsg(G|Mc2@k+n($#Yf#B|8})zeTfdP)_jkF369BeUy4WS zdZ|M&;){OkH0)~aDMvNz_oJ7SHJms?^NRMw@W1#VUGz$t}wTa0579v@D zuTmO7{Cq}^1puCz-;v_0%a3*=JJcn3gEGhij?A#zxpBXQ!x1hcJJvvN&=0nHvFJdK ze}av=h8M7*)`%~CphpOD3JP>yecCCz>@#o1!Tv@6{p_^ejAqr<7I2s0xB;GR ztONlo`()L#%RIAy+dB?l&p(d5fJL!~-LFYh8Hjyo# zOfutOKp)Oh^9^V0(J+;L!(tp;TEyN}E@p_ljtNVUxA2!w0ZD|WMIf*baUky|A_B4s zT2*)WFZ&P>)-IEI&GRzd8Vd!~j+0(F)DfEKlS?RmOxx}Y!qBXD;#a?inPX6jTdId= zW%k^ba3>!3b#9>X7Y<)Wb5tmW06~mXf7B5JN$4W(%P;N(?O7m3E~+82)SkNeLgD_m z0akNE#jBxqYd5lKqPT&|7_D+l3-FCg6In-(9EBx_`zuE%Hw#1q!Jzxqhu@5QjIkO^ z4Tda;tM0y`q1nJq&DaFVOt6{!T~_-C7^^%Xp<2^ErS*w^>*9A4a%?|p`4hBs=+`$j z!W;cy4GEwAs5X{0WeU(BcC{v9g00h!m{Hg;@|`ev+>J#n=ZgJbC*J5c@q^nTil{}p zIc8)Ip}lxP@If1nsa$O*-a?I!4VNE_tgZ8Fa10xrU>|y6Q7{z=%tM1i5hb+ji?3rt zOCM>%zX7`{TP+?2eHlUu_4|zA`(9FSu4F>84b9Lt2*&2|&{Z0X&t}Y}U+t5qnu`S- z?U;YLyclmM>(`5MG7&}fy_)UTzhz2pdm3=c0J#k9Ur_rEBA-R#OtKfYj6rar*0aww zGMJ_yoYVLVPRojhfxrlI7QgbkrPQBQ<`W;yummdZ+d1|de`~o776tL(5RoLyJrtL& z{gkyLXU7Px8tBsHrB3ab-+qM9&D8eA7VUWJj2~ZjJRQZMwKoM8zfG$9UilL?Rv0Cr ziH-^mTX%Wx6R(B$2=FA8t`=Y1qE!*W39D3YExj7Mp9@@L?J_ddj2vt~UeCZ64Q_>+ zNRIztMQD-~8mKh#D%ZM!GP%415FhKgFNqiz_I*QfI7?Q%CnlAlQl zL!ILn5Q{r!;OpRKyLAtgV8CUDrq-3@U5k(~{D9aEIhALJK>T>X7loNqyWw4}t-T@! zfK7mG_qHSSDFm-XYpPAZf?Zs6tN2Xdr_CWuAnqZLHDK=?y9cGTBLLQu6Jyi0g zDmQtABrAUgG^bMbz&|u^(%iWo%^|D5X*13* z>8G~Nt_H6XuH)Tv($kO)9(cQN-vk7Vst3F3s5f#3Z_p9_L$^YkcD*dI&G}_!Yobeb z|Ds1~wGm}wBT1?$5YLr((VPn6O@Qv9(*V5SAKj-o|AJFO{R-IrhIs@yBv$>8s(N7~ zGV^NWk!lAv$9t|S8!se@$YxcgEli|?_2F7Gqg8dM4%&uG{EM^osw=`P>Gr4a7GvHMu+Iat>T%uc z^ys`v@A6L;QoHhut$9}g61u~_I%p+CiY@NUOwuj{rkg}e^IA`ewhRilVwX!8_DV(` zYhMUE`%CRQi`ts%iw9xiQMk%g{bKH&d}AjFeSK9aOBcaSSoL+`j)V{c@JHDO&uw@- zw(>n~1P$_eBUdtGAvWlaenU7LP=L2*GedN$7ww&)_)d<5*MQ(&1B^B|3i)3i_9sAr z3EX(L2I4U4i}p=VjotU(k!K1OfA6-5Y4Z7zAJmg1dNA}ajLp{HIr8$SeK;O+|0Mlf zSufBr3z|#mCx!|{JZt)n5x8cghN#A+K*i%RT~~c+9t{ocN=Kz`Eu?sd&zq}D-@5+@ zVk>$sH;gY~5x!hXO10B5jf}Jt$`}OKIWJ+>8G1cnrqvGl2k3ZX*QV*Br`Ju28q2WN zs;eVn30c;W>g3X45@|)HANYqCBX&#Z#WyRa@1P|#nG#?5>uQcdL|hvUa!kH{B_0XA zG@E;tdijd{{MI9fLTyw^8SNON@q78@IpI3Bw~Wy1m5Y>)9ATIrkU8Feuij*Me4fs7 zIQw<)){S0%@WYl&G{_FeD2l%TKOMMJ-<1W80<26g1`&WNCdEts^!zEUb(8!Z9C4>P zxl9ltmioqIwCMP9hEKRJHhbYACQO@wCtLvdW32hJ^9#vd?zf;nxu^I{SVQD5flKRu zOCDLUk?_iUgXh)*`qqlN9J4HfSGATr^QajLWG${+$7;^6U}st4O3nvLfU)tdw#+HJ zS7o;>i~0;~CcT=oSAB?k%M_5w!T`6%WGNmBtU}pxG7lJjvUG5xwpKRW~?T zGEW5jlJ5;{YYt&jjA#xCx~Fel{X-!K@w5%0{D@5OWS{FX9yE=eo*P!JjKih)&B1r7 zwPXjAcmCwg$A3)emvQF;NQqpZSP&gBx+!r%q~`;{mmJ9X}@e%uDmB06Dd{MBDXw?@NFx>>)bzwMO8uvol&kIlvnYiHjN zoWv-sQ%J*R*(B0(sNzEKCl>hjqv)-ZN77Ga6z%A-UZhQ8xb`#Cf17F%Ek<^R2eAWddoym#;noO_&Sxu6?c8ih zJx&rfltZG51~e!Ay%AupzJ5%=pQYKy{#k3baJ_zi~yG3KqN>HpA z4$A@IyJE4YyBhuO{Y+5lQm)bPglAAzt5}XPRacnVNjw8Igv8 z64Tv~!}}$9k;z+=zg_x>2rfFlz28+^=SU1ZQKElcXd%C0kIuY6z|6W!gfN-4B0s&!s^r0ata)6vSKKaZ$jST z4o3raKX{STouv&czteJ{?E2s-XdujhzdXrcZ2Bd?uWOuLT2r7fKRo_8yNvUAuT(!D zdi7RpPtOZc?(#3K7h5_~%h=Nbacl4J()`0Bh1e;rHO`2?dRKzy3~CFtUw>z;+PYgY zJ&b@#n0TyqZ&?PxKB0n7Ji%>d9 z{}XCU#Wbz_({!WjC@HP}`kX?ci4O_?8+iIOSw)gfZ148S{MT~Kg(8z2KNYT@Zfib# zd^|ke)IHS2;;|_0K>=?aa5D+LFg{(YJom|RFU1NvI;D@1(r_p9TZyiaLr46Ukb8E9 zT|Db%y)O^b0=(<0#KeVgj^NRa7;yrLDgUt2IXW~=u@-qA?PAs4&G<#N#l+RF7C+&{ zXM0DU-qQ`+Ic4@{#a;Or^2UF5>{pT}oD@BwzS>Y`R%SlpY%aSm`jj{e(i3OHNnDM3 z;S)Kp&;G|4r-=c)=mz-(|6#_CbfrMito_{dx;b@kH~KDFz?r(v@_Y^MEZYJA>0g74 zu73wdu;S7`KHof~8irMyQ+IE1r5|pNy=NBtH@ltN{*rqAYXCIS$oYa*B#i&Dt6`x3 z8wj7*t3<#N{@wn>e%7D=_MhvglKvm+{m=f-RWldeliwco;cPidtScBODy1?^Uu zu(i7r!Qr7k+5C&~)J0OaG#r@+-n#h{%4yXTJ9)%&e@&IVo~LF~(ELB3#UYI(ZaAL@ zf0a@SB|KuXc7_ZL?M07iHR)68;25e%dPs=UyvyaVI?vOMJ$HB(TMCwFZJN6EC(#MU z>R%mivSHahLhbi4rlrl-RU810#W-qatult>xShiTuTGBN#c{J=tfljAY>1L!la@gWn-S)4{vk}#RN;~8uoiaEc5 zkMv@O5J6bq8XSKXH+(M5U20+z&HCG~&FB!ma~`+az;4efA@vz-_w>z6=1p}3IBuZj zh}c8b4o;_IiOxIw=#R7nK$<$fH!Va|NEfJGDDyPDJlaV{jQxw>#ld zckd)oPuY!b4`Gy;jTjv}wQxLMI5|HCCd*~9j2ZdjPA`HIGH$(EIqHZy$8P!nnlA>z zu=$u8GVH53Bld#ZOIlf$CVMLRfesq#SjGc`|=v?4~YY5HGKcZ2(nV8lCEZSG(E4>MhE)oLd`%YGnWZS5v#xK;XPuDY+Fxf z2ay~0!Jq{pB48~>c78|q^EigYhoIgv;4{jB$aa`hV%YyJr~CzRaUxD)S22Z38wNox z*V#^Y(Hvd!xZwbW?65vd-)`wYS1lQWXgu%ta@DVbgaJfYu^Zj8OLkkMU93e>hi-kv~f zat*HcD(6NOLHPOaCiHChwoi#Kk=aWi9m0fQs+UQAqruZlQr}Q+-I79jwSBK8kQav# zziqX#x$XKylE;?I_W*C)euM5t1fTvp?-_!mh$kl(r7kRq4=QFO!UJC>dEB3`#y9x} z1G8f5Kf3T2Z$ z@FIJsZ8K3A6m`|M|9s%uGO$}#uyTS}s1D_G8#s|wj2>4!u1T!MeU-EP)-Y=INIta!?@h=Q!P=uP9ehVxViwSj%NUfi=`YcOxB>2c_6#cO9m6Xcp5u{k14 z9s7m;8zH}PeDseD!5h3e^>aR`-MSg(!LNYMaV!gp%cwpw#0Fna$Mr@Cf;*%^`^pKaBOGZ+X9^6x5V=U=)p;IEe?Ky7DIza7elXiTf_$m6WvXUNj zepBjzpCym+0<%Qq1@5Eze*DBQ)=u9?$6^w)j^&nLHH!IK0>k+UpvJA}S+hX2*$12s zhQH#*Ei*pdi!Vsu=;Jr?V4%nzoAk3}qD0K%V)%9x_*uE+u2+h;d0HUm=d2BHt^q4a z#}T-&0O9BjL$9lcx{shh!q6EOsT&3Ki%x11#A|JuZqcop6D0J(C8Z%C&XvwzTdGRO$zHKQefNUqeEt7!<;T;gDW5RbOy0>Jd~1m3mEi*?Qm5k}$mTFRU_d zXFg%me$LzV8w29vfZPqOgW(OBdKBG^#2a-|#^`I8V(j2J(X#Ei?KbZNXQ<4C^9`*m zi>#&x=M9SOZ}LLnm+#;G>%paQ#+AA<^Jmao^8wAfhEG@;pJYnOtatzM+f;k#u+Lh8 zCq2YRKhxy5HCUi`#7y5f|Nqtz(d|IWdv?d1Q_w5%P;#Q$SkZZv!Oa$&Vsc5KIWed1;T;~5bh?tH?!C(HNi zyNZvmCVtM$O+vFAQ2>Ld5tOc7Rbqf_*^#Koc*t(fDb&NPA}OA%)$D%;c_> zj8sGnnn!rs$k_J#)9emgjf_S0xG-=Kn_vU@E0?;*Rfm6aH6j+zOJ(UWAQw#W;a+VB z&ut%JCZC^8$yH1nDWbu$@h*3Tm8*MS;*}p5qpkP}Y<{(36fDuA^J&9(RYH6v;Ze~* zZ#LIRi%BKkZhZV12=WgNt=e(^q#FwFD4*yeXVF@~QIR+XABA-~)4hWi#u z{D|-NqrXlMh|v?(O{MrVX`L*c_wZ}dMJP`wI7p8z**Jo%Zh4{Z&V?70lqmB zCXUBj3KfO*_@?(a<5pS#7;10RovkXMJ{>n0;bD4p1r>_)<$?6)MneArrd5yZZQ|XS zf#$x_Qizg}egJBvODnncg3Q5R3fb)WRTeODPX#e)K6A z8u)rsT%W<5*KpGLjYaCaFIYI3=uNRV@)p3xG-2`H)e z57Pp~U?HMVNgDsfksifnXOoSvTIv+mkVaJA@i32r2Oo{=HB+rCWWT}dsOiiNq&8GxC8O> zRw*=x;yzuKdM^s=fN5I(f!3jy)bnBMbSJbx9A;f}iQYKzDbvQl$Y_}4Lexx<#LDLK zV7(>hZ`dYQH4kir%OJ1YT;vSK1L;{V(qjR>R+Q7r2z8HKwE&*f+bayANvf9DrV>Ns zYDjMO0@=Y7{1pI^`wu(+RGQvzt^t7`nvq{V0_<2!v_7`8rn76LvteQq+jKJi@(6oi zS2lhV;l*1;20rF-lJ#30ErjetO1O7hSpErqC|IB>-qnkI~-2fH5L!Wf1Su1?c~4Y$b%Qrm4s6$ia0O*#Ntc-Yk`XV6Qxylbq;vALSc`z{H3;BU8*m#3su`EVb92d zVYEf(OnsfGvL2z+N=d&cRi7T=uB!f(LK>RLHC73k5-%8G0^HlaI#P;O>1y4!G-Brm zw9#9u-U`vLzZ%Q+95O5!`6gWScl|WDoP@l(8TTT=(eZpzu)G;RMpkFt(o1}aShx)S zih7G#canBMA)hgug+gI)bfX+vto7M1uKF(4T^##`v5UO6f?GZsu%L}CH~IpL00F&A z2mm35z|cbVul|Dz5l%LDzi@FEgWzYkQHbq;qD!!&Z%N1<>S)t}DUb%}5w4*U)D4i;Hrza(T zm@q)IiAbyyn`Offg>O;-{>=QzwTJ^cv*+aZ!xaapm7QB&c(Or!O}jwjO$VgXcoML( z$_bv%U7O+`6H!49P7gTh11EnlO!~3OCmYH-0z2cLLi`7awzyk(pnhJPPf1pg^=S4JYD4 zLL~^xBW)bIeO4mU%f3?8^r9OE@sVZSC2m$yLdw&KI`Eq~8e|9iXr3~9c{wlPTP>-l zSFK51o~bs2hmW4|k$roTCGS9nP10QpBUJJ`zlYqQ3uC3FDUxKI8c`mSeC5=*=Bc!c zK6Fo?bsWu)11Kn~1PXrq^x0X*XFeYr8$=sIEv2d^3Wz;rf5Ycpcr%U-uh<02iop&S zpJ&~J>An0a?je&uJ}j@uutMa34z@(KQNS#g;+q|l#MK=&;UhEJK(G%n!_hMna)+&x zP8#zf;~&91#y+t#>(QIjxPAfCYgQU(52&!Ip_}wUC-ax$-z!!uqSV(j`;H{<`070* z;G1dMHO`!&YYT_)>aCI7=jAj10?j+#Cb?oa7g^6NE`h&cN zft(k6ag=l9=fSm%^kz$K=x3N}h;1Zj!K#BF^fpf2D)4Xr$6}|K%9kD4kGY)&xSb%j%J} zZ@X#`?>^5y6vl2yRClcUSmm8)3FRFG)*~{JGg6j&u{DpA!KL|81)w(wb-V(z@k^elz;whsLytC!e1^iRSmFKhiO{l z+~CW%59M%udcW_U_9x5`y8Fg%oR>@QG|70&stnJS`Zdkk?ru(9zHwe!HuB)+u~UOs z%=hIPN3=9~t#EZu^bo9vU6k-;6id8D+wM(`s{FI|*Xz{<7afPX3J<+9ZU{e5*_7&c z{xrD(t%f?9y>rqss|`f$)2?r_F>l&DoAeD2;r78+5d2wHXnH8j^h&<=H&Ywvi~noU z!O`t-^hq2g`uteM{i+ySwH91n*GhVyZd1PS;J@p^NH;a~@dP+htJTiOmnP|sE)O6Q z^XCO%(sYza{O$Pe`%-ZM&qYA+v~CywNf&ucMt8z3ccmM5DmVgPP<98jenhhCriWiO z;0>qYEWE2!v#2MTV8xn!%7D@j#+L(m5xKWADhbv21WD$HmZfz0^q6^AH;t+_2@*I$ zE^9mWJ$xAu6)qssNGj{F$vKZH-al0-7|(|%_|*!0LBUn?{T^*_X?X{Jl|8RS10Qn^Cyq>i=;N#?QZHfTI|5cdpV7oKwd&ef5psx3{n8 z2F=$2RlW_lEvb_Kx~1KXr+s>^D3_5@fZka(uvE(y`D@l5^IqG@1grBj>^13(7CrIz zpR|lkyy98Vm@v@!Thw!3n;n*Y`%v_cj8pC0C6W-~3Ez(FiVi5bd26Bj{)8TxXN$b~HL7|!q1QX| z^DfrzfreB5tqZYx-dtFFzQE@7d$v1z$6IA~^~1c;JGIa8W!uBx`9~XW-7bH*BewOl z`~E}sa;kik;bvw!u3YD`@|DQ9{O-lz5kg?!tc>%=|J~b86+Uzqi3c9z!QkoY=d#Wz Gp$PyS^zjh@ literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/run-file.png b/nova_rover_demos/pathfinding/comparison_platform/img/run-file.png new file mode 100644 index 0000000000000000000000000000000000000000..53c7da66687cd5fb00a231176152e587ce69d982 GIT binary patch literal 7732 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 LLUby$9=`Y=JZa@_ literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/runpy-import.png b/nova_rover_demos/pathfinding/comparison_platform/img/runpy-import.png new file mode 100644 index 0000000000000000000000000000000000000000..ab51da6e01a434056a93cdf1d598c4f8ff6f1e08 GIT binary patch literal 21189 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 BOo9La literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/wrapper-demo.png b/nova_rover_demos/pathfinding/comparison_platform/img/wrapper-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..51b3e5d140c3d1be6cf62473bd79569908d7fabf GIT binary patch literal 56773 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 aDbetHn#bc!$MRG3 Date: Fri, 4 Sep 2020 01:01:01 +1000 Subject: [PATCH 19/31] Adding results in README --- .../pathfinding/comparison_platform/README.md | 58 ++++++++++++++++-- .../img/algorithm-list.png | Bin 0 -> 20038 bytes .../comparison_platform/img/csv-sample.png | Bin 0 -> 31413 bytes .../comparison_platform/img/map-density.png | Bin 0 -> 17436 bytes .../comparison_platform/img/map-sample.png | Bin 0 -> 49240 bytes .../comparison_platform/img/results-fig-1.png | Bin 0 -> 82085 bytes .../comparison_platform/img/results-fig-2.png | Bin 0 -> 52783 bytes .../img/results-folder.png | Bin 0 -> 6797 bytes .../comparison_platform/results/a_star.pdf | Bin 12905 -> 12806 bytes .../comparison_platform/results/benchmark.csv | 8 +-- .../results/bidirectional_a_star.pdf | Bin 12907 -> 12806 bytes .../results/modified_pledge.pdf | Bin 13455 -> 12944 bytes .../results/weighted_a_star.pdf | Bin 12905 -> 12826 bytes .../pathfinding/comparison_platform/run.py | 11 +++- 14 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/algorithm-list.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/csv-sample.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/map-density.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/map-sample.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/results-fig-1.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/results-fig-2.png create mode 100644 nova_rover_demos/pathfinding/comparison_platform/img/results-folder.png diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md b/nova_rover_demos/pathfinding/comparison_platform/README.md index bdaaa5b..a8986aa 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/README.md +++ b/nova_rover_demos/pathfinding/comparison_platform/README.md @@ -14,7 +14,7 @@ Currently in the repository there are three classes of pathfinding algorithms ar Our goal is to create a scalable easy to use function. To use the comparison platform you simply need to: 1. Import your algorithm(s) into the comparison platform -2. Select it inside the run.py file +2. Select it inside the `run.py` file ### 1. Importing your Algorithm(s) @@ -37,12 +37,62 @@ If your algorithm accepts other out formats, you can call the main algorithm wit We have put together a very short guide on writing the wrapper functions and you can find [here](). It has a template code for you to get started as well. -### 2. Configure run.py +### 2. Configure `run.py` -**Step 4:** Import algorithm or wrapper function in the run.py file. +**Step 4:** Import algorithm or wrapper function in the `run.py` file. [IMAGE] [IMAGE] -Note: Remember to import in the \ No newline at end of file +**Step 5:** List your algorithm / wrapper function in the algorithm list. + +[IMAGE] + +**Step 6:** Run `run.py` file. After completing the easy steps above simply run the following command: + +```python +python run.py +``` + +You can also select the number of times the functions will be tested. For example: + +```python +python run.py 10 +``` + +**Step 7 (Optional):** Configure how dense you want the environment to be. + +[IMAGE] + + +### Check algorithm is working correctly + +Even if no errors are thrown during runtime, you should check the results folder. In the results folder a visual map (PDF file) with the planned route should be automatically generated with the name of your algorithm/wrapper function. Please review this figure and see if everything is okay. + +You can also check the CSV generated inside the results folder to cross check things. + + +## Output + +The main power of this comparison platform lies within the extensive results it generated. The comparison platform gives you visualization of the following key performance factors: +- Runtime +- Memory Comparison +- Average path length + + +Upon running the program you should see a couple of figures which give you a visual comparison of the algorithms key metrics. + +[IMAGE] + +[IMAGE] + + +Furthermore inside the results folder you can also view the map of the environment and the path generated by each of the algorithms in separate PDF file. Sample: + +[IMAGE] + + +You have also have access to the raw numbers inside a CSV file inside the results folder. + +[IMAGE] \ No newline at end of file diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/algorithm-list.png b/nova_rover_demos/pathfinding/comparison_platform/img/algorithm-list.png new file mode 100644 index 0000000000000000000000000000000000000000..a758184ffdd53d2baf462a96b1603f80eaa99f89 GIT binary patch literal 20038 zcmcG#WmsEH`0h(fOAU&<2QSt_aSEjbFB06P6eqZAiv|r)v`BDw2_8yuFAkwVafcE# zNI1Oj```PVkLSbQb6rW+%CgDK%FO-z?q@})smS3yr+SWsg@vae4^+p(!j8XR9(js$ z|IX-fT6zERz*SxD16JiI&CdPGBP%IoDJ-lS=!+Y($M@^coaFUfv9QQk{&_u6P-p&& zg{8cp0F=`7GCo**V5n(^P*E(Yca&>XUDXoF$`iJ`K+$W8j4laSlHx^Blg$ay>36YV}fIL3-Ti8|x ze^=THmem)jLWv_CV%L{_;rwH+Syov`-lMLg?hz3YCc%(@OMeK%0UP1J1yn=HzL z-Ub&C@!#gRIPt)L%V(-!dBDGgFGh;_za!Fm84~_G%|~+rh5z;|d;?+rZ@<FIMdkg> zsTw%6=)H35Q6l~j!r(Jo>x-QX%s%sX{V&ON?!w-R2J_e-CW+p7j|=A)*>U>BNlq4K znPHlqORHl>`jeTGkyHStfQk!HJjF>~O{z2O_yP}0PO8`)JwEdObewhd-prXUga0SzcU{(Of zQ6sA+6p(5LP5XJ>E&aoA%xYhc$2p7I z@pH5M1jV;E@44yyku7dL&~uq?-3MEwO&CAxe8^9O%0DOzaHz3iF+`*4=gyUp8-ysy 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 literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/csv-sample.png b/nova_rover_demos/pathfinding/comparison_platform/img/csv-sample.png new file mode 100644 index 0000000000000000000000000000000000000000..29d9532babb6783dcbfc06875881ebc346fc7e7c GIT binary patch literal 31413 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%0D|{pE+;NX( zzc9xSUCSMEY)ZQxX4R?g7j>TKJJ{DAvUjhxTwc8Niq~#5tSZ#Z@!g%RFW+6vDA=8> zj}o>Vnmm|IMbY}<);dI|llD&B*}cYUPgzi(zh=8-uterK^B}*(s@m1TTyH5c%2+OR zlx1JApNys&o9VLX1yBhc;i$N_3YT{!Y~*H)7}pEAW9=^snjH>G<&2goE{H6)w?` zQDH7*A8PD+vYOYxFC@yH3VgDaEKu>W(O=I6%z`7Oh2G8eaXlJ=Ft5S0=U8{SN%d+1 zG)^TV;TeS*#w6P4FIcP5ngmzR*V!7P|H9799P~rpGwTvHTP_f?qgr;I+SbuXS8U>x{Nq-i zw7S(U1xsEtIo{ltZ}PQkB2w^?IsXhf=&Uz`&G#(31t?)J=aeVn8EBh4E-RKr5@*g8h0~Pa2?;2hsYE_1#(1o%nYGNS z9*nT0rSPRS0FgRB@jO+vEd7x$t~+`8yqO&T3X~rPew{XJB+0~6q^8KqK>OCFgJ{VZ z|K1C*?#$LK>0;y6DMYR+7JOefO242&$55A~cQqa!FY@zjjp)4<`GlSNCL0%ojN{W( zk@le$f6=d5{sQvGmR#)yuPpcdpKS*lapI1<{MPpFRhC;37#JJh3H$5$!p#{yG#=}@ zACE2V#go!N>X%!24fRa-^_w7ArYX6{xKT)VfmoEYbGyLrtGGit72euGeil$+5wrQFUO*|rMiFgvZ{SEFi(HXX1}{4bA6ouIwNxi zbw*Qt^`(&_F+7~OsLBOKUk{Hb&W!7|hz}}0r3o;VW#*^6?t_WEZ&_l~+6se4RKB}pqLh}am;f^S z?_k|b>Wp3oEPIe5STBvWZLrNff6s1?($%;gL>FOenrv6kd-Dou8{YvH%;@gBJ*CTw zptHx4&6PEfi!zHMXEJ2?r`JR~#+6%%phONPh)ot&YG*_PjZQXLpZ9nluhPf558cKG zOj7{|CxDc63?wRlW&h{dO&lkE}y-LMHc-J9Y5kn^vMm`mJ$`(q|u9;~8- q|9Ug+zdv93fAVFbY!B`c-_N+D9Pf?20gswScqywaQzE7B`@aCyWdSq* literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/map-density.png b/nova_rover_demos/pathfinding/comparison_platform/img/map-density.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b3ac491c5f948af8b380f097b2770cc0d77f4b GIT binary patch literal 17436 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 z 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 literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/results-fig-2.png b/nova_rover_demos/pathfinding/comparison_platform/img/results-fig-2.png new file mode 100644 index 0000000000000000000000000000000000000000..44d3ba880f904b47fc4dc2fe822b7770b0bebecd GIT binary patch literal 52783 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 QLHUXpoX)2GA9`ZO-~a#s literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/img/results-folder.png b/nova_rover_demos/pathfinding/comparison_platform/img/results-folder.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c38634048fb06e1977a0fed7d31edf5dd31e92 GIT binary patch literal 6797 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 B)&&3n literal 0 HcmV?d00001 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf index 5ef155cfc66e315e6286371746a805be2603c5af..82752c311e929eab4211afb67fc59b1f6a4f3aab 100644 GIT binary patch delta 5197 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 delta 5297 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 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv b/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv index 2471a43..1bfa59d 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv +++ b/nova_rover_demos/pathfinding/comparison_platform/results/benchmark.csv @@ -1,5 +1,5 @@ Algorithm,Mean Runtime,Std Deviation,Peak Memory Usage,Avg. Path -modified_pledge,123.69400262832642,15.438351262264522,124104,431.0 -a_star,407.61271119117737,47.74750238141489,1668762,301.0 -bidirectional_a_star,16.973352432250977,1.748764510765177,213590,301.0 -weighted_a_star,13.459157943725586,3.165068100577722,142168,301.0 +modified_pledge,36.167542139689125,2.391340146035558,124104,298.0 +a_star,87.76553471883138,9.33659105469145,1092816,224.0 +bidirectional_a_star,18.201440572738647,2.7570686991386473,228868,224.0 +weighted_a_star,6.618521430275657,0.8068808778901773,183294,228.0 diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf index 382a3cd4df32d9c26254cf7792e463f52a7555d6..393c428ce19f513f49f65e26eca713bc4ae62fd4 100644 GIT binary patch delta 5196 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 delta 5298 zcmZ8lcRbX8{HGzwEUVBdq(YIsGos=;k-ZusnT4}`luGtaTwPWtXFGdcwulp%$0>W9 z4kzo3-+g?$-|zAG-Cy^(&wXC=`Fy>e@An(KMZ2QIyg;->1;?A;XCIxvsuB0lpPrlZ zVlRU@qr3grPATE9Om!zn8e!?GH*??>#=G|3;eENTo8GT;q z?mYO*M^^+O1|j>D*+~U872#pHZt`Qyatav`rhcH|hQOP%92{k%G(>4daB&#f!*w^H?Ji zbKS}warA|%b8}No@n&<;Jxp{Ci67K8hIu`!c!3GaMh;rbntfs2ANP!u@8jyc1yB=0 z;Y#Y9kxvYh1wQ>zni!7Bmlz)5SuX3Jp14ti(aG>J6r}o`EIo9cSnVt3d&;^ZuDEIQ zH@e<$TqYwJ zp8IFW`3d{a;w3HJz3)JcnUv;d$w%J;b}Eel?;0Z_S^WV!HFz_a#pzF}!yC-Vwt~8m z$RoKZA&h)~mlv*@Z1@;sfG zVbLo$`!iT*!`jP4SCw37TOYVz5hwt2!Qm81thTX~E;c7OJ3kxMpT8R!sD4lv`);?@ z_Z?N9A6-E6qJJ8`-66#CI3E4V`N4$l?Oz$4<TtOT739Rri2qot!HE(_3>bY(S|^)HnOgeP&3o6kRY)bCixO9 zHnxm1ygQ?8wVle8!NJ;IJLlPySbf@6@-X8o>U&bVf?wQo*Z8oAyfM^%6NE2djA;7? z5lL*te$Apnqpy#N32;Iv%I@Yazb?U8ZnecoAWJXq9J%!m<&W59evB~v$)b-|y?SZV zpq-4Lp5Ee``uv0%vsCZxTQ;E)Ryd~-_Kt3$elY@(GH?>-R<^l@h=#>76|9(CJz)#F z0kf|Q*y{4m9dCNL{=7!;TY1P>V7K~0@u!XyAU9W?e<~Kv#xfwcjq$xbAFmp5!g-GV zez=(kKEgEG$389EbB+1SRVzqm-pGr0>A(5lDxkR{ z&N-`kcR#E5siR~iO8Bu#)}+JBqVda4FX>)2fk2$o=<(sjWD8GOcd8fU{8})t8(4YJ zlJoQIBR3SKSmWu?b1=)|-VWK71{6q)Ad^aBB5+6H<%)PSMU-<0{G#M8q9xp028l zmxY;9g2G;wI>7Q=P@mz>7Z7vFB2@1}`NA_;sHMsjBfN!-O>vn?=T@-<+C;Y>)9_aF zR~%1F^&3~+pN^9>9luS0g_@Vsq0;OS@mP;KAOSAUgGnR2_(uyV28~On1zJ_uv~z1^ ze;$nHn_^*ORlx2^@@+ICsh4K<5qn~MTuMa>g}nj2n~yPl3qH6hhVKY!IRUh|UdIQ1 z*;uUI2Pd$O#Wy<)K9*jQC&2rs2{APpD*!OjKrF@B@c`lTAp-LQFcKYE(5*5L{0PQU z8h z8okf(pMykaQe)p;F1OT?KDlAQnG}8bfX*E=X6I!l@^qAg*3c=B5ll)nKrp{VStdD~ z>tE!2%Kdx?_U<6%j0aX--SAS)^9gEYC{k;?UqJ-cpH`^ipG65k@|#^bm*8;B2U~$g z1?(LjHo)vD<9(*vv2>s zf$kxSKe+l6v~|KQR~ya3GyPa5G5B8>z4Fwr_|*GruyV@3r`K-)he9BG;(6DtDE)Cy zZmXI$t9e#b4?(xJ0L%1R$$DUrR3-x(rW} zUyWw{uUG)x+cH@lM&62Up9?1#0SkwWzs#VAA6r z#3%Pehb4K-l_+*w^cQOMtxCnzUtz*fga0qA?N-L}&J01LdsC@O6yswY4s2C3-60OR z(YQb_Az&ITg&a&Q*|$De1{$5G)-((ljTy8aA4ekf*&L!$TWtd+XiP5uSdlR?8ZxYI z|E#U%-gA|7qi(iD=Q?x+ovxgoL^IZjH+&31@M(XX8r~Ie zFYxUD&^dQF*(IQJIXeX7ZMD)CVfw*-usAX907t;Jtju0}Sp9c}92r3zcXjUNO7qBo z!~Zc9i!qIp%a4(ZNLJ4jiIM zKolzgV%Krn8~L1A>;AyB{rpvnzi+YmF$TT3ZVyueC{)13Dm9`2u*4-#f3VK%t?Cz? zd*E^^hXWcB9DeSs%Lh7rsbV|CXG5+IIjATGyU&phzq%wzP)?$~yel|&0du3x5*}~Wodhn$`CGS3X9uOg3lR^-XGsV}ajmdlk*Bhep!bOUe7Mla#uDH&^ zqQI?YSH2JJ?WD7zWTT=c9_p$(X#Y^QMo%qg_2TFet@WGxt>lRBxs4Z;T>GCj49o9N zOa$*w6YsEg@3(^hU72U_FtS_%E`${*3b?*+Aq>@&HIS1kE7{&yzh3fp=AzO6uX#Cs z?INPh%&v0rcgcwa%@t94uF#Bm7WMt*mXIg2ol)4+V5ZmdN7D~SH4AW84XNn<5?}W# zpUi8`FtBZ(z=nOCL}SO$B;3uDYbpox15`E7*{2-6fp^}vB5S^Tc1!dn*>`*|klvOk zT_=lY)!r|jChjLqXRr739HWL}RcB{8ln2T0A$aH`X2MK9a>*($6sFhP!xPZa6&5O5 zQ;0?57G+^-u{>lyj#5&^?|z(I+kr_(j(aTmzp1;a z3#r$$Og_H7eXMK6)`3IaW6btovCB(KhF9VE7E5J2B zpsF6rQpSB7CtX!zD3^gh;?+uPvE?1~ofq*E!9Wc~F#n$a(-E)cT2qV@{NB8O(u!l5 zkhy)<_K75I-S@Qowgug@Qx9F0UX+1D#Y)6dw7`_ZGr%si zkiQfC$+)-6m8Q$`)EMKPvpn%qan{S+(Pva(3U07Gd{8~aP#^^Zpt$L?LwG=8Sfe7{JR}L;H)#C#lL#YNs1iG68z}z0b9`J2$^U>c8T`>ie+TN@KyE^&Fa_AK2KZD1!(PHnUU_#oK?9EU)p&y{taErqD2$V zVh+Quir#5%4fwOz8tn}RYiJ#5T%8GL7$BYU_{9BinEd-Hf2Jmn*JU}smV6sGV6TT+ zj1R6mz}o`xXWj}}?RhB<+?TeqGs{(+a!(?cL6N<_O~%$ML{DNMfIqOKI2NF0^&Pog zHGSmuqO8|4w99tvP-lDF9i0*L-DWi?PJ^ z{_IMHF=2)`{-0JHkYh}hx%})8S#qx$@BBWv7Kwd@kMui`@&%=aV{aEL(PF)|(MX`i zMy$wWy_{i^h8ZWZVR&9Jy8NmO(<>n@N#_v7o-nY7W%i3hSBDNe9o@X7xGS6E@;E(-f!jRghMn|LlT|aD#ys(xQ`ySgD(+mtuoWSd=%4VnLOcX{UPZLm0h6P+E@r%c|8k`>s_w3&b`JrG#a zhFYHPS8&ZuIB~9q&fx_+B8@Yx^#QJ$Lv_LZul0VJTTD%%B+C;o}O@Qr9G9 zWu)a2NLR9tT$7ZNPDs5vd{|og8U`-OMK2~TB_${cegs_wnGU{4NhvBy|Nq~vNy diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/modified_pledge.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/modified_pledge.pdf index 1be660bf515e8b05ff3f67455b9d95610c61bc0d..4cf293b871cb06fbf89e081254741bf70d388046 100644 GIT binary patch delta 5335 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 Ind)=?4}>T^5&!@I delta 5873 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 Y#d$Z0Q+;{!~g&Q delta 5297 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 diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index bc5b627..4f8aa84 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -4,7 +4,7 @@ Place Algorithm Imports Here ''' -############## IMPORT YOUR ALGORITHM HERE ############################## +############## IMPORT YOUR ALGORITHM(S) HERE ########################### from lib.modified_pledge import * from lib.a_star import * from lib.a_star_variants import * @@ -20,10 +20,17 @@ ''' +################## List the algorithms you want to compare here ############################## algorithm_list = [modified_pledge, a_star, bidirectional_a_star, weighted_a_star] -density = 'light' # Density keyword describes the density of the environment to be traversed. Can be 'heavy', 'medium', 'light' or 'sparse' + +############################################################################################## + + +# Density keyword describes the density of the environment to be traversed. +# Can be 'heavy', 'medium', 'light' or 'sparse' +density = 'light' ###################################################################### From 47afa8b4c68adaaecf2406b8722e8bd0bca33d15 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 4 Sep 2020 01:09:35 +1000 Subject: [PATCH 20/31] Added wrapper guide --- .../comparison_platform/wrapper.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/wrapper.md diff --git a/nova_rover_demos/pathfinding/comparison_platform/wrapper.md b/nova_rover_demos/pathfinding/comparison_platform/wrapper.md new file mode 100644 index 0000000..310adea --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/wrapper.md @@ -0,0 +1,30 @@ +# Wrapper function guidelines + +Wrapper function helps us run the comparison platform in a systematic way. You **do not** need a wrapper function if you algorithm has both the following characteristics: +- Accepts only list of obstacles, start coordinate & end coordinate as function parameters +- Returns the path as a list of tuples and a boolean indicating path was found or not + +If not then you can either tweak your existing function or put it inside a wrapper function. Here is a template for the wrapper function: + +```python +def WRAPPER_FUNCTION(obstacle_list, start, end): + + # Instantiate appropriate attributes if necessary + + + try: + # Call the main algorithm + # It should return the path as a list of coordinates (tuples) + path = YOUR_ALGORITHM_CALL + maze_solved = True + except: + path = start + maze_solved = False + + # Return a list of tuples as path and + # a boolean indicating maze solved or not + return path, maze_solved + +``` + +You should create this wrapper inside the **lib** folder and afterwards pass its name in `run.py` file. \ No newline at end of file From 2e4359321bdcb894b0df7b7ea9632623569ee85c Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 4 Sep 2020 01:42:30 +1000 Subject: [PATCH 21/31] Adding images --- .../pathfinding/comparison_platform/README.md | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md b/nova_rover_demos/pathfinding/comparison_platform/README.md index a8986aa..6e5f844 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/README.md +++ b/nova_rover_demos/pathfinding/comparison_platform/README.md @@ -20,10 +20,12 @@ Our goal is to create a scalable easy to use function. To use the comparison pla **Step 1:** You can import the file or folder of the algorithm inside the lib folder. -[IMAGE] +Lib folder **Step 2:** Ensure you have fixed any relative imports inside your files. This step is only applicable if you have multiple files are they're importing functions/classes from each other. +Relative import + Because our a-star variant file imports a class from a-star and both are under the lib folder, we import in the manner shown in the image above. **Step 3:** Write a wrapper class (If applicable). Currently the comparison platform is designed in a way that all functions accept 3 arguments in the order: @@ -33,21 +35,25 @@ Because our a-star variant file imports a class from a-star and both are under t If your algorithm accepts other out formats, you can call the main algorithm with all the necessary arguments inside the wrapper function. -[IMAGE] +Wrapper class -We have put together a very short guide on writing the wrapper functions and you can find [here](). It has a template code for you to get started as well. +We have put together a very [short guide](wrapper.md) on writing the wrapper functions and you can find [here](wrapper.md). It has a template code for you to get started as well. ### 2. Configure `run.py` **Step 4:** Import algorithm or wrapper function in the `run.py` file. -[IMAGE] -[IMAGE] +Run.py file + +Importing the files should be done as the following (Remember to do relative importing): + +Importing algorithms + **Step 5:** List your algorithm / wrapper function in the algorithm list. -[IMAGE] +Listing algorithms **Step 6:** Run `run.py` file. After completing the easy steps above simply run the following command: @@ -63,7 +69,7 @@ python run.py 10 **Step 7 (Optional):** Configure how dense you want the environment to be. -[IMAGE] +Map density ### Check algorithm is working correctly @@ -83,16 +89,17 @@ The main power of this comparison platform lies within the extensive results it Upon running the program you should see a couple of figures which give you a visual comparison of the algorithms key metrics. -[IMAGE] -[IMAGE] +Result sample 1 + +Result sample 2 Furthermore inside the results folder you can also view the map of the environment and the path generated by each of the algorithms in separate PDF file. Sample: -[IMAGE] +Map sample You have also have access to the raw numbers inside a CSV file inside the results folder. -[IMAGE] \ No newline at end of file +CSV sample \ No newline at end of file From c030479df35774c798cdc066092a8f6570e1488e Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 4 Sep 2020 01:45:07 +1000 Subject: [PATCH 22/31] Adding images --- nova_rover_demos/pathfinding/comparison_platform/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md b/nova_rover_demos/pathfinding/comparison_platform/README.md index 6e5f844..a30f168 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/README.md +++ b/nova_rover_demos/pathfinding/comparison_platform/README.md @@ -90,9 +90,7 @@ The main power of this comparison platform lies within the extensive results it Upon running the program you should see a couple of figures which give you a visual comparison of the algorithms key metrics. -Result sample 1 - -Result sample 2 +Result sample 1 Result sample 2 Furthermore inside the results folder you can also view the map of the environment and the path generated by each of the algorithms in separate PDF file. Sample: From d8aeef998cc67c9f367378f350d8402f3225d84c Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 4 Sep 2020 01:45:58 +1000 Subject: [PATCH 23/31] updating images --- nova_rover_demos/pathfinding/comparison_platform/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md b/nova_rover_demos/pathfinding/comparison_platform/README.md index a30f168..f8dac69 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/README.md +++ b/nova_rover_demos/pathfinding/comparison_platform/README.md @@ -90,7 +90,7 @@ The main power of this comparison platform lies within the extensive results it Upon running the program you should see a couple of figures which give you a visual comparison of the algorithms key metrics. -Result sample 1 Result sample 2 +Result sample 1 Result sample 2 Furthermore inside the results folder you can also view the map of the environment and the path generated by each of the algorithms in separate PDF file. Sample: From eabdb7e12521bb4d743d060a113c489771e812d6 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 4 Sep 2020 01:48:08 +1000 Subject: [PATCH 24/31] Fixing typos and images --- nova_rover_demos/pathfinding/comparison_platform/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/README.md b/nova_rover_demos/pathfinding/comparison_platform/README.md index f8dac69..a3d2439 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/README.md +++ b/nova_rover_demos/pathfinding/comparison_platform/README.md @@ -79,7 +79,7 @@ Even if no errors are thrown during runtime, you should check the results folder You can also check the CSV generated inside the results folder to cross check things. -## Output +## Results The main power of this comparison platform lies within the extensive results it generated. The comparison platform gives you visualization of the following key performance factors: - Runtime @@ -90,12 +90,12 @@ The main power of this comparison platform lies within the extensive results it Upon running the program you should see a couple of figures which give you a visual comparison of the algorithms key metrics. -Result sample 1 Result sample 2 +Result sample 1 Result sample 2 Furthermore inside the results folder you can also view the map of the environment and the path generated by each of the algorithms in separate PDF file. Sample: -Map sample +Map sample You have also have access to the raw numbers inside a CSV file inside the results folder. From 46f6f2aac4691758c48d2e41ef047749b64d2385 Mon Sep 17 00:00:00 2001 From: Xuester Date: Sun, 6 Sep 2020 12:21:26 +1000 Subject: [PATCH 25/31] Add files via upload --- .../comparison_platform/lib/rrt_star_2d.py | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py new file mode 100644 index 0000000..8d0b119 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py @@ -0,0 +1,64 @@ + +import numpy as np + +from src.rrt.rrt_star import RRTStar +from src.search_space.search_space import SearchSpace +from src.utilities.plotting import Plot + + +# wrapper function +def rrt_star_2d_search(obstacle_list, start, end): + # instantiate attributes + Obstacles = obstacle_list + + # dimensions of Search Space + X_dimensions = np.array([(0, 150), (0, 150)]) + + # length of tree edges + Q = np.array([(8, 4)]) + + # res is taken from fastslam + r = res + + # max number of samples to take before timing out + max_samples = 1024 + + # optional, number of nearby branches to rewire + rewire_count = 32 + + # probability of checking for a connection to goal + prc = 0.1 + + # create Search Space + X = SearchSpace(X_dimensions, obstacle_list) + + # create rrt_search + rrt = RRTStar(X, Q, x_init, x_goal, max_samples, r, prc, rewire_count) + + try: + #call the main algorithm + #it should return the path as a list or coordinates + path = rrt.rrt_star() + maze_solved = True + except: + path = start + maze_solved = False + + # Return a list of tuples as path and + # a boolean indicating maze solved or not + return path, maze_solved + +""" +Obstacles = ([(x, y, x+res, y+res) #res is taken from fast slam +x_init = (0, 0) # starting location +x_goal = (100, 100) # goal location + +plot = Plot("rrt_star_2d") +plot.plot_tree(X, rrt.trees) +if path is not None: + plot.plot_path(X, path) +plot.plot_obstacles(X, Obstacles) +plot.plot_start(X, x_init) +plot.plot_goal(X, x_goal) +plot.draw(auto_open=True) +""" \ No newline at end of file From 171ff0d2bce342d4f2260b85a2b5bc7bc74ce634 Mon Sep 17 00:00:00 2001 From: Xuester Date: Sun, 6 Sep 2020 12:40:21 +1000 Subject: [PATCH 26/31] Add files via upload --- .../rrtStarCombo/rrt/heuristics.py | 40 +++ .../pathfinding/rrtStarCombo/rrt/rrt.py | 40 +++ .../pathfinding/rrtStarCombo/rrt/rrt_base.py | 176 +++++++++++++ .../rrtStarCombo/rrt/rrt_connect.py | 83 +++++++ .../pathfinding/rrtStarCombo/rrt/rrt_star.py | 113 +++++++++ .../rrtStarCombo/rrt/rrt_star_bid.py | 127 ++++++++++ .../rrtStarCombo/rrt/rrt_star_bid_h.py | 122 +++++++++ .../pathfinding/rrtStarCombo/rrt/tree.py | 14 ++ .../rrtStarCombo/search_space/search_space.py | 77 ++++++ .../rrtStarCombo/utilities/geometry.py | 60 +++++ .../utilities/obstacle_generation.py | 60 +++++ .../rrtStarCombo/utilities/plotting.py | 231 ++++++++++++++++++ 12 files changed, 1143 insertions(+) create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/rrt/heuristics.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_base.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_connect.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star_bid.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star_bid_h.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/rrt/tree.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/search_space/search_space.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/utilities/geometry.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/utilities/obstacle_generation.py create mode 100644 nova_rover_demos/pathfinding/rrtStarCombo/utilities/plotting.py diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/rrt/heuristics.py b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/heuristics.py new file mode 100644 index 0000000..7e5e1d1 --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/heuristics.py @@ -0,0 +1,40 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +from src.utilities.geometry import dist_between_points + + +def cost_to_go(a: tuple, b: tuple) -> float: + """ + :param a: current location + :param b: next location + :return: estimated segment_cost-to-go from a to b + """ + return dist_between_points(a, b) + + +def path_cost(E, a, b): + """ + Cost of the unique path from x_init to x + :param E: edges, in form of E[child] = parent + :param a: initial location + :param b: goal location + :return: segment_cost of unique path from x_init to x + """ + cost = 0 + while not b == a: + p = E[b] + cost += dist_between_points(b, p) + b = p + + return cost + + +def segment_cost(a, b): + """ + Cost function of the line between x_near and x_new + :param a: start of line + :param b: end of line + :return: segment_cost function between a and b + """ + return dist_between_points(a, b) diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt.py b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt.py new file mode 100644 index 0000000..5d05601 --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt.py @@ -0,0 +1,40 @@ +from src.rrt.rrt_base import RRTBase + + +class RRT(RRTBase): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01): + """ + Template RRT planner + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc) + + def rrt_search(self): + """ + Create and return a Rapidly-exploring Random Tree, keeps expanding until can connect to goal + https://en.wikipedia.org/wiki/Rapidly-exploring_random_tree + :return: list representation of path, dict representing edges of tree in form E[child] = parent + """ + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + + while True: + for q in self.Q: # iterate over different edge lengths until solution found or time out + for i in range(q[1]): # iterate over number of edges of given length to add + x_new, x_nearest = self.new_and_near(0, q) + + if x_new is None: + continue + + # connect shortest valid edge + self.connect_to_point(0, x_nearest, x_new) + + solution = self.check_solution() + if solution[0]: + return solution[1] diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_base.py b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_base.py new file mode 100644 index 0000000..e5c95a0 --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_base.py @@ -0,0 +1,176 @@ +import random + +import numpy as np + +from src.rrt.tree import Tree +from src.utilities.geometry import steer + + +class RRTBase(object): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01): + """ + Template RRT planner + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + """ + self.X = X + self.samples_taken = 0 + self.max_samples = max_samples + self.Q = Q + self.r = r + self.prc = prc + self.x_init = x_init + self.x_goal = x_goal + self.trees = [] # list of all trees + self.add_tree() # add initial tree + + def add_tree(self): + """ + Create an empty tree and add to trees + """ + self.trees.append(Tree(self.X)) + + def add_vertex(self, tree, v): + """ + Add vertex to corresponding tree + :param tree: int, tree to which to add vertex + :param v: tuple, vertex to add + """ + self.trees[tree].V.insert(0, v + v, v) + self.trees[tree].V_count += 1 # increment number of vertices in tree + self.samples_taken += 1 # increment number of samples taken + + def add_edge(self, tree, child, parent): + """ + Add edge to corresponding tree + :param tree: int, tree to which to add vertex + :param child: tuple, child vertex + :param parent: tuple, parent vertex + """ + self.trees[tree].E[child] = parent + + def nearby(self, tree, x, n): + """ + Return nearby vertices + :param tree: int, tree being searched + :param x: tuple, vertex around which searching + :param n: int, max number of neighbors to return + :return: list of nearby vertices + """ + return self.trees[tree].V.nearest(x, num_results=n, objects="raw") + + def get_nearest(self, tree, x): + """ + Return vertex nearest to x + :param tree: int, tree being searched + :param x: tuple, vertex around which searching + :return: tuple, nearest vertex to x + """ + return next(self.nearby(tree, x, 1)) + + def new_and_near(self, tree, q): + """ + Return a new steered vertex and the vertex in tree that is nearest + :param tree: int, tree being searched + :param q: length of edge when steering + :return: vertex, new steered vertex, vertex, nearest vertex in tree to new vertex + """ + x_rand = self.X.sample_free() + x_nearest = self.get_nearest(tree, x_rand) + x_new = self.bound_point(steer(x_nearest, x_rand, q[0])) + # check if new point is in X_free and not already in V + if not self.trees[0].V.count(x_new) == 0 or not self.X.obstacle_free(x_new): + return None, None + self.samples_taken += 1 + return x_new, x_nearest + + def connect_to_point(self, tree, x_a, x_b): + """ + Connect vertex x_a in tree to vertex x_b + :param tree: int, tree to which to add edge + :param x_a: tuple, vertex + :param x_b: tuple, vertex + :return: bool, True if able to add edge, False if prohibited by an obstacle + """ + if self.trees[tree].V.count(x_b) == 0 and self.X.collision_free(x_a, x_b, self.r): + self.add_vertex(tree, x_b) + self.add_edge(tree, x_b, x_a) + return True + return False + + def can_connect_to_goal(self, tree): + """ + Check if the goal can be connected to the graph + :param tree: rtree of all Vertices + :return: True if can be added, False otherwise + """ + x_nearest = self.get_nearest(tree, self.x_goal) + if self.x_goal in self.trees[tree].E and x_nearest in self.trees[tree].E[self.x_goal]: + # tree is already connected to goal using nearest vertex + return True + if self.X.collision_free(x_nearest, self.x_goal, self.r): # check if obstacle-free + return True + return False + + def get_path(self): + """ + Return path through tree from start to goal + :return: path if possible, None otherwise + """ + if self.can_connect_to_goal(0): + print("Can connect to goal") + self.connect_to_goal(0) + return self.reconstruct_path(0, self.x_init, self.x_goal) + print("Could not connect to goal") + return None + + def connect_to_goal(self, tree): + """ + Connect x_goal to graph + (does not check if this should be possible, for that use: can_connect_to_goal) + :param tree: rtree of all Vertices + """ + x_nearest = self.get_nearest(tree, self.x_goal) + self.trees[tree].E[self.x_goal] = x_nearest + + def reconstruct_path(self, tree, x_init, x_goal): + """ + Reconstruct path from start to goal + :param tree: int, tree in which to find path + :param x_init: tuple, starting vertex + :param x_goal: tuple, ending vertex + :return: sequence of vertices from start to goal + """ + path = [x_goal] + current = x_goal + if x_init == x_goal: + return path + while not self.trees[tree].E[current] == x_init: + path.append(self.trees[tree].E[current]) + current = self.trees[tree].E[current] + path.append(x_init) + path.reverse() + return path + + def check_solution(self): + # probabilistically check if solution found + if self.prc and random.random() < self.prc: + print("Checking if can connect to goal at", str(self.samples_taken), "samples") + path = self.get_path() + if path is not None: + return True, path + # check if can connect to goal after generating max_samples + if self.samples_taken >= self.max_samples: + return True, self.get_path() + return False, None + + def bound_point(self, point): + # if point is out-of-bounds, set to bound + point = np.maximum(point, self.X.dimension_lengths[:, 0]) + point = np.minimum(point, self.X.dimension_lengths[:, 1]) + return tuple(point) diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_connect.py b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_connect.py new file mode 100644 index 0000000..767bd4a --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_connect.py @@ -0,0 +1,83 @@ +import enum + +import numpy as np + +from src.rrt.rrt_base import RRTBase +from src.utilities.geometry import steer + + +class Status(enum.Enum): + FAILED = 1 + TRAPPED = 2 + ADVANCED = 3 + REACHED = 4 + + +class RRTConnect(RRTBase): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01): + """ + Template RRTConnect planner + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc) + self.swapped = False + + def swap_trees(self): + """ + Swap trees only + """ + # swap trees + self.trees[0], self.trees[1] = self.trees[1], self.trees[0] + self.swapped = not self.swapped + + def unswap(self): + """ + Check if trees have been swapped and unswap + """ + if self.swapped: + self.swap_trees() + + def extend(self, tree, x_rand): + x_nearest = self.get_nearest(tree, x_rand) + x_new = steer(x_nearest, x_rand, self.Q[0]) + if self.connect_to_point(tree, x_nearest, x_new): + if np.abs(np.sum(np.array(x_new) - np.array(x_rand))) < 1e-2: + return x_new, Status.REACHED + return x_new, Status.ADVANCED + return x_new, Status.TRAPPED + + def connect(self, tree, x): + S = Status.ADVANCED + while S == Status.ADVANCED: + x_new, S = self.extend(tree, x) + return x_new, S + + def rrt_connect(self): + """ + RRTConnect + :return: set of Vertices; Edges in form: vertex: [neighbor_1, neighbor_2, ...] + """ + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + self.add_tree() + self.add_vertex(1, self.x_goal) + self.add_edge(1, self.x_goal, None) + while self.samples_taken < self.max_samples: + x_rand = self.X.sample_free() + x_new, status = self.extend(0, x_rand) + if status != Status.TRAPPED: + x_new, connect_status = self.connect(1, x_new) + if connect_status == Status.REACHED: + self.unswap() + first_part = self.reconstruct_path(0, self.x_init, self.get_nearest(0, x_new)) + second_part = self.reconstruct_path(1, self.x_goal, self.get_nearest(1, x_new)) + second_part.reverse() + return first_part + second_part + self.swap_trees() + self.samples_taken += 1 diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star.py b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star.py new file mode 100644 index 0000000..dc81c7c --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star.py @@ -0,0 +1,113 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. +from operator import itemgetter + +from src.rrt.heuristics import cost_to_go +from src.rrt.heuristics import segment_cost, path_cost +from src.rrt.rrt import RRT + + +class RRTStar(RRT): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01, rewire_count=None): + """ + RRT* Search + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + :param rewire_count: number of nearby vertices to rewire + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc) + self.rewire_count = rewire_count if rewire_count is not None else 0 + self.c_best = float('inf') # length of best solution thus far + + def get_nearby_vertices(self, tree, x_init, x_new): + """ + Get nearby vertices to new vertex and their associated path costs from the root of tree + as if new vertex is connected to each one separately. + + :param tree: tree in which to search + :param x_init: starting vertex used to calculate path cost + :param x_new: vertex around which to find nearby vertices + :return: list of nearby vertices and their costs, sorted in ascending order by cost + """ + X_near = self.nearby(tree, x_new, self.current_rewire_count(tree)) + L_near = [(path_cost(self.trees[tree].E, x_init, x_near) + segment_cost(x_near, x_new), x_near) for + x_near in X_near] + # noinspection PyTypeChecker + L_near.sort(key=itemgetter(0)) + + return L_near + + def rewire(self, tree, x_new, L_near): + """ + Rewire tree to shorten edges if possible + Only rewires vertices according to rewire count + :param tree: int, tree to rewire + :param x_new: tuple, newly added vertex + :param L_near: list of nearby vertices used to rewire + :return: + """ + for c_near, x_near in L_near: + curr_cost = path_cost(self.trees[tree].E, self.x_init, x_near) + tent_cost = path_cost(self.trees[tree].E, self.x_init, x_new) + segment_cost(x_new, x_near) + if tent_cost < curr_cost and self.X.collision_free(x_near, x_new, self.r): + self.trees[tree].E[x_near] = x_new + + def connect_shortest_valid(self, tree, x_new, L_near): + """ + Connect to nearest vertex that has an unobstructed path + :param tree: int, tree being added to + :param x_new: tuple, vertex being added + :param L_near: list of nearby vertices + """ + # check nearby vertices for total cost and connect shortest valid edge + for c_near, x_near in L_near: + if c_near + cost_to_go(x_near, self.x_goal) < self.c_best and self.connect_to_point(tree, x_near, x_new): + break + + def current_rewire_count(self, tree): + """ + Return rewire count + :param tree: tree being rewired + :return: rewire count + """ + # if no rewire count specified, set rewire count to be all vertices + if self.rewire_count is None: + return self.trees[tree].V_count + + # max valid rewire count + return min(self.trees[tree].V_count, self.rewire_count) + + def rrt_star(self): + """ + Based on algorithm found in: Incremental Sampling-based Algorithms for Optimal Motion Planning + http://roboticsproceedings.org/rss06/p34.pdf + :return: set of Vertices; Edges in form: vertex: [neighbor_1, neighbor_2, ...] + """ + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + + while True: + for q in self.Q: # iterate over different edge lengths + for i in range(q[1]): # iterate over number of edges of given length to add + x_new, x_nearest = self.new_and_near(0, q) + if x_new is None: + continue + + # get nearby vertices and cost-to-come + L_near = self.get_nearby_vertices(0, self.x_init, x_new) + + # check nearby vertices for total cost and connect shortest valid edge + self.connect_shortest_valid(0, x_new, L_near) + + if x_new in self.trees[0].E: + # rewire tree + self.rewire(0, x_new, L_near) + + solution = self.check_solution() + if solution[0]: + return solution[1] diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star_bid.py b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star_bid.py new file mode 100644 index 0000000..56e52fe --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star_bid.py @@ -0,0 +1,127 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +import random + +from src.rrt.heuristics import path_cost +from src.rrt.rrt_star import RRTStar + + +class RRTStarBidirectional(RRTStar): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01, rewire_count=None): + """ + Bidirectional RRT* Search + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + :param rewire_count: number of nearby vertices to rewire + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc, rewire_count) + self.sigma_best = None # best solution thus far + self.swapped = False + + def connect_trees(self, a, b, x_new, L_near): + """ + Check nearby vertices for total cost and connect shortest valid edge if possible + This results in both trees being connected + :param a: first tree to connect + :param b: second tree to connect + :param x_new: new vertex to add + :param L_near: nearby vertices + """ + for c_near, x_near in L_near: + c_tent = c_near + path_cost(self.trees[a].E, self.x_init, x_new) + if c_tent < self.c_best and self.X.collision_free(x_near, x_new, self.r): + self.trees[b].V_count += 1 + self.trees[b].E[x_new] = x_near + self.c_best = c_tent + sigma_a = self.reconstruct_path(a, self.x_init, x_new) + sigma_b = self.reconstruct_path(b, self.x_goal, x_new) + del sigma_b[-1] + sigma_b.reverse() + self.sigma_best = sigma_a + sigma_b + + break + + def swap_trees(self): + """ + Swap trees and start/goal + """ + # swap trees + self.trees[0], self.trees[1] = self.trees[1], self.trees[0] + # swap start/goal + self.x_init, self.x_goal = self.x_goal, self.x_init + self.swapped = not self.swapped + + def unswap(self): + """ + Check if trees have been swapped and unswap + Reverse path if needed to correspond with swapped trees + """ + if self.swapped: + self.swap_trees() + + if self.sigma_best is not None and self.sigma_best[0] is not self.x_init: + self.sigma_best.reverse() + + def rrt_star_bidirectional(self): + """ + Bidirectional RRT* + :return: set of Vertices; Edges in form: vertex: [neighbor_1, neighbor_2, ...] + """ + # tree a + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + + # tree b + self.add_tree() + self.add_vertex(1, self.x_goal) + self.add_edge(1, self.x_goal, None) + + while True: + for q in self.Q: # iterate over different edge lengths + for i in range(q[1]): # iterate over number of edges of given length to add + x_new, x_nearest = self.new_and_near(0, q) + if x_new is None: + continue + + # get nearby vertices and cost-to-come + L_near = self.get_nearby_vertices(0, self.x_init, x_new) + + # check nearby vertices for total cost and connect shortest valid edge + self.connect_shortest_valid(0, x_new, L_near) + + if x_new in self.trees[0].E: + # rewire tree + self.rewire(0, x_new, L_near) + + # nearby vertices from opposite tree and cost-to-come + L_near = self.get_nearby_vertices(1, self.x_goal, x_new) + + self.connect_trees(0, 1, x_new, L_near) + + if self.prc and random.random() < self.prc: # probabilistically check if solution found + print("Checking if can connect to goal at", str(self.samples_taken), "samples") + if self.sigma_best is not None: + print("Can connect to goal") + self.unswap() + + return self.sigma_best + + if self.samples_taken >= self.max_samples: + self.unswap() + + if self.sigma_best is not None: + print("Can connect to goal") + + return self.sigma_best + else: + print("Could not connect to goal") + + return self.sigma_best + + self.swap_trees() diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star_bid_h.py b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star_bid_h.py new file mode 100644 index 0000000..5ebf54b --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/rrt_star_bid_h.py @@ -0,0 +1,122 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. +import random + +from src.rrt.rrt_star_bid import RRTStarBidirectional +from src.utilities.geometry import dist_between_points, pairwise + + +class RRTStarBidirectionalHeuristic(RRTStarBidirectional): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01, + rewire_count: int = None, conditional_rewire: bool = False): + """ + Bidirectional RRT* Search + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + :param rewire_count: number of nearby vertices to rewire + :param conditional_rewire: if True, set rewire count to 1 until solution found, + then set to specified rewire count (ensure runtime complexity guarantees) + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc, + 1 if conditional_rewire else rewire_count) + self.original_rewire_count = rewire_count + + def rrt_star_bid_h(self): + """ + Bidirectional RRT* using added heuristics + :return: set of Vertices; Edges in form: vertex: [neighbor_1, neighbor_2, ...] + """ + # tree a + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + + # tree b + self.add_tree() + self.add_vertex(1, self.x_goal) + self.add_edge(1, self.x_goal, None) + + while True: + for q in self.Q: # iterate over different edge lengths + for i in range(q[1]): # iterate over number of edges of given length to add + x_new, x_nearest = self.new_and_near(0, q) + if x_new is None: + continue + + # get nearby vertices and cost-to-come + L_near = self.get_nearby_vertices(0, self.x_init, x_new) + + # check nearby vertices for total cost and connect shortest valid edge + self.connect_shortest_valid(0, x_new, L_near) + + if x_new in self.trees[0].E: + # rewire tree + self.rewire(0, x_new, L_near) + + # nearby vertices from opposite tree and cost-to-come + L_near = self.get_nearby_vertices(1, self.x_goal, x_new) + + self.connect_trees(0, 1, x_new, L_near) + self.rewire_count = self.original_rewire_count + + self.lazy_shortening() + + if self.prc and random.random() < self.prc: # probabilistically check if solution found + print("Checking if can connect to goal at", str(self.samples_taken), "samples") + if self.sigma_best is not None: + print("Can connect to goal") + self.unswap() + + return self.sigma_best + + if self.samples_taken >= self.max_samples: + self.unswap() + + if self.sigma_best is not None: + print("Can connect to goal") + + return self.sigma_best + else: + print("Could not connect to goal") + + return self.sigma_best + + self.swap_trees() + + def lazy_shortening(self): + """ + Lazily attempt to shorten current best path + """ + if self.sigma_best is not None and len(self.sigma_best) > 2: + a, b = 0, 0 + while not abs(a - b) > 1: + a, b = random.sample(range(0, len(self.sigma_best)), 2) + + a, b = min(a, b), max(a, b) + v_a, v_b = tuple(self.sigma_best[a]), tuple(self.sigma_best[b]) + + if self.X.collision_free(v_a, v_b, self.r): + # create new edge connecting vertices + if v_a in self.trees[0].E and v_b in self.reconstruct_path(0, self.x_init, v_a): + self.trees[0].E[v_a] = v_b + elif v_a in self.trees[1].E and v_b in self.reconstruct_path(1, self.x_goal, v_a): + self.trees[1].E[v_a] = v_b + elif v_b in self.trees[0].E and v_a in self.reconstruct_path(0, self.x_init, v_b): + self.trees[0].E[v_b] = v_a + elif v_b in self.trees[1].E and v_a in self.reconstruct_path(1, self.x_goal, v_b): + self.trees[1].E[v_b] = v_a + elif v_a in self.trees[0].E: + self.trees[0].E[v_b] = v_a + else: + self.trees[1].E[v_b] = v_a + + # update best path + # remove cost of removed edges + self.c_best -= sum(dist_between_points(i, j) for i, j in pairwise(self.sigma_best[a:b + 1])) + # add cost of new edge + self.c_best += dist_between_points(self.sigma_best[a], self.sigma_best[b]) + self.sigma_best = self.sigma_best[:a + 1] + self.sigma_best[b:] diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/rrt/tree.py b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/tree.py new file mode 100644 index 0000000..7ac0bbb --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/rrt/tree.py @@ -0,0 +1,14 @@ +from rtree import index + + +class Tree(object): + def __init__(self, X): + """ + Tree representation + :param X: Search Space + """ + p = index.Property() + p.dimension = X.dimensions + self.V = index.Index(interleaved=True, properties=p) # vertices in an rtree + self.V_count = 0 + self.E = {} # edges in form E[child] = parent diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/search_space/search_space.py b/nova_rover_demos/pathfinding/rrtStarCombo/search_space/search_space.py new file mode 100644 index 0000000..726b98b --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/search_space/search_space.py @@ -0,0 +1,77 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +import numpy as np +from rtree import index + +from src.utilities.geometry import es_points_along_line +from src.utilities.obstacle_generation import obstacle_generator + + +class SearchSpace(object): + def __init__(self, dimension_lengths, O=None): + """ + Initialize Search Space + :param dimension_lengths: range of each dimension + :param O: list of obstacles + """ + # sanity check + if len(dimension_lengths) < 2: + raise Exception("Must have at least 2 dimensions") + self.dimensions = len(dimension_lengths) # number of dimensions + # sanity checks + if any(len(i) != 2 for i in dimension_lengths): + raise Exception("Dimensions can only have a start and end") + if any(i[0] >= i[1] for i in dimension_lengths): + raise Exception("Dimension start must be less than dimension end") + self.dimension_lengths = dimension_lengths # length of each dimension + p = index.Property() + p.dimension = self.dimensions + if O is None: + self.obs = index.Index(interleaved=True, properties=p) + else: + # r-tree representation of obstacles + # sanity check + if any(len(o) / 2 != len(dimension_lengths) for o in O): + raise Exception("Obstacle has incorrect dimension definition") + if any(o[i] >= o[int(i + len(o) / 2)] for o in O for i in range(int(len(o) / 2))): + raise Exception("Obstacle start must be less than obstacle end") + self.obs = index.Index(obstacle_generator(O), interleaved=True, properties=p) + + def obstacle_free(self, x): + """ + Check if a location resides inside of an obstacle + :param x: location to check + :return: True if not inside an obstacle, False otherwise + """ + return self.obs.count(x) == 0 + + def sample_free(self): + """ + Sample a location within X_free + :return: random location within X_free + """ + while True: # sample until not inside of an obstacle + x = self.sample() + if self.obstacle_free(x): + return x + + def collision_free(self, start, end, r): + """ + Check if a line segment intersects an obstacle + :param start: starting point of line + :param end: ending point of line + :param r: resolution of points to sample along edge when checking for collisions + :return: True if line segment does not intersect an obstacle, False otherwise + """ + points = es_points_along_line(start, end, r) + coll_free = all(map(self.obstacle_free, points)) + return coll_free + + def sample(self): + """ + Return a random location within X + :return: random location within X (not necessarily X_free) + """ + x = np.random.uniform(self.dimension_lengths[:, 0], self.dimension_lengths[:, 1]) + return tuple(x) diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/utilities/geometry.py b/nova_rover_demos/pathfinding/rrtStarCombo/utilities/geometry.py new file mode 100644 index 0000000..e78b07f --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/utilities/geometry.py @@ -0,0 +1,60 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +from itertools import tee + +import numpy as np + + +def dist_between_points(a, b): + """ + Return the Euclidean distance between two points + :param a: first point + :param b: second point + :return: Euclidean distance between a and b + """ + distance = np.linalg.norm(np.array(b) - np.array(a)) + return distance + + +def pairwise(iterable): + """ + Pairwise iteration over iterable + :param iterable: iterable + :return: s -> (s0,s1), (s1,s2), (s2, s3), ... + """ + a, b = tee(iterable) + next(b, None) + return zip(a, b) + + +def es_points_along_line(start, end, r): + """ + Equally-spaced points along a line defined by start, end, with resolution r + :param start: starting point + :param end: ending point + :param r: maximum distance between points + :return: yields points along line from start to end, separated by distance r + """ + d = dist_between_points(start, end) + n_points = int(np.ceil(d / r)) + if n_points > 1: + step = d / (n_points - 1) + for i in range(n_points): + next_point = steer(start, end, i * step) + yield next_point + + +def steer(start, goal, d): + """ + Return a point in the direction of the goal, that is distance away from start + :param start: start location + :param goal: goal location + :param d: distance away from start + :return: point in the direction of the goal, distance away from start + """ + start, end = np.array(start), np.array(goal) + v = end - start + u = v / (np.sqrt(np.sum(v ** 2))) + steered_point = start + u * d + return tuple(steered_point) diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/utilities/obstacle_generation.py b/nova_rover_demos/pathfinding/rrtStarCombo/utilities/obstacle_generation.py new file mode 100644 index 0000000..b6f851a --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/utilities/obstacle_generation.py @@ -0,0 +1,60 @@ +import random +import uuid + +import numpy as np + + +def generate_random_obstacles(X, start, end, n): + """ + Generates n random obstacles without disrupting world connectivity. + It also respects start and end points so that they don't lie inside of an obstacle. + """ + # Note: Current implementation only supports hyperrectangles. + i = 0 + obstacles = [] + while i < n: + center = np.empty(len(X.dimension_lengths), np.float) + scollision = True + fcollision = True + edge_lengths = [] + for j in range(X.dimensions): + # None of the sides of a hyperrectangle can be higher than 0.1 of the total span + # in that particular X.dimensions + max_edge_length = (X.dimension_lengths[j][1] - X.dimension_lengths[j][0]) / 10.0 + # None of the sides of a hyperrectangle can be higher than 0.01 of the total span + # in that particular X.dimensions + min_edge_length = (X.dimension_lengths[j][1] - X.dimension_lengths[j][0]) / 100.0 + edge_length = random.uniform(min_edge_length, max_edge_length) + center[j] = random.uniform(X.dimension_lengths[j][0] + edge_length, + X.dimension_lengths[j][1] - edge_length) + edge_lengths.append(edge_length) + + if abs(start[j] - center[j]) > edge_length: + scollision = False + if abs(end[j] - center[j]) > edge_length: + fcollision = False + + # Check if any part of the obstacle is inside of another obstacle. + min_corner = np.empty(X.dimensions, np.float) + max_corner = np.empty(X.dimensions, np.float) + for j in range(X.dimensions): + min_corner[j] = center[j] - edge_lengths[j] + max_corner[j] = center[j] + edge_lengths[j] + obstacle = np.append(min_corner, max_corner) + # Check newly generated obstacle intersects any former ones. Also respect start and end points + if len(list(X.obs.intersection(obstacle))) > 0 or scollision or fcollision: + continue + i += 1 + obstacles.append(obstacle) + X.obs.add(uuid.uuid4(), tuple(obstacle), tuple(obstacle)) + + return obstacles + + +def obstacle_generator(obstacles): + """ + Add obstacles to r-tree + :param obstacles: list of obstacles + """ + for obstacle in obstacles: + yield (uuid.uuid4(), obstacle, obstacle) diff --git a/nova_rover_demos/pathfinding/rrtStarCombo/utilities/plotting.py b/nova_rover_demos/pathfinding/rrtStarCombo/utilities/plotting.py new file mode 100644 index 0000000..f3fffef --- /dev/null +++ b/nova_rover_demos/pathfinding/rrtStarCombo/utilities/plotting.py @@ -0,0 +1,231 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +import plotly as py +from plotly import graph_objs as go + +colors = ['darkblue', 'teal'] + + +class Plot(object): + def __init__(self, filename): + """ + Create a plot + :param filename: filename + """ + self.filename = filename + ".html" + self.data = [] + self.layout = {'title': 'Plot', + 'showlegend': False + } + + self.fig = {'data': self.data, + 'layout': self.layout} + + def plot_tree(self, X, trees): + """ + Plot tree + :param X: Search Space + :param trees: list of trees + """ + if X.dimensions == 2: # plot in 2D + self.plot_tree_2d(trees) + elif X.dimensions == 3: # plot in 3D + self.plot_tree_3d(trees) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def plot_tree_2d(self, trees): + """ + Plot 2D trees + :param trees: trees to plot + """ + for i, tree in enumerate(trees): + for start, end in tree.E.items(): + if end is not None: + trace = go.Scatter( + x=[start[0], end[0]], + y=[start[1], end[1]], + line=dict( + color=colors[i] + ), + mode="lines" + ) + self.data.append(trace) + + def plot_tree_3d(self, trees): + """ + Plot 3D trees + :param trees: trees to plot + """ + for i, tree in enumerate(trees): + for start, end in tree.E.items(): + if end is not None: + trace = go.Scatter3d( + x=[start[0], end[0]], + y=[start[1], end[1]], + z=[start[2], end[2]], + line=dict( + color=colors[i] + ), + mode="lines" + ) + self.data.append(trace) + + def plot_obstacles(self, X, O): + """ + Plot obstacles + :param X: Search Space + :param O: list of obstacles + """ + if X.dimensions == 2: # plot in 2D + self.layout['shapes'] = [] + for O_i in O: + # noinspection PyUnresolvedReferences + self.layout['shapes'].append( + { + 'type': 'rect', + 'x0': O_i[0], + 'y0': O_i[1], + 'x1': O_i[2], + 'y1': O_i[3], + 'line': { + 'color': 'purple', + 'width': 4, + }, + 'fillcolor': 'purple', + 'opacity': 0.70 + }, + ) + elif X.dimensions == 3: # plot in 3D + for O_i in O: + obs = go.Mesh3d( + x=[O_i[0], O_i[0], O_i[3], O_i[3], O_i[0], O_i[0], O_i[3], O_i[3]], + y=[O_i[1], O_i[4], O_i[4], O_i[1], O_i[1], O_i[4], O_i[4], O_i[1]], + z=[O_i[2], O_i[2], O_i[2], O_i[2], O_i[5], O_i[5], O_i[5], O_i[5]], + i=[7, 0, 0, 0, 4, 4, 6, 6, 4, 0, 3, 2], + j=[3, 4, 1, 2, 5, 6, 5, 2, 0, 1, 6, 3], + k=[0, 7, 2, 3, 6, 7, 1, 1, 5, 5, 7, 6], + color='purple', + opacity=0.70 + ) + self.data.append(obs) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def plot_path(self, X, path): + """ + Plot path through Search Space + :param X: Search Space + :param path: path through space given as a sequence of points + """ + if X.dimensions == 2: # plot in 2D + x, y = [], [] + for i in path: + x.append(i[0]) + y.append(i[1]) + trace = go.Scatter( + x=x, + y=y, + line=dict( + color="red", + width=4 + ), + mode="lines" + ) + + self.data.append(trace) + elif X.dimensions == 3: # plot in 3D + x, y, z = [], [], [] + for i in path: + x.append(i[0]) + y.append(i[1]) + z.append(i[2]) + trace = go.Scatter3d( + x=x, + y=y, + z=z, + line=dict( + color="red", + width=4 + ), + mode="lines" + ) + + self.data.append(trace) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def plot_start(self, X, x_init): + """ + Plot starting point + :param X: Search Space + :param x_init: starting location + """ + if X.dimensions == 2: # plot in 2D + trace = go.Scatter( + x=[x_init[0]], + y=[x_init[1]], + line=dict( + color="orange", + width=10 + ), + mode="markers" + ) + + self.data.append(trace) + elif X.dimensions == 3: # plot in 3D + trace = go.Scatter3d( + x=[x_init[0]], + y=[x_init[1]], + z=[x_init[2]], + line=dict( + color="orange", + width=10 + ), + mode="markers" + ) + + self.data.append(trace) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def plot_goal(self, X, x_goal): + """ + Plot goal point + :param X: Search Space + :param x_goal: goal location + """ + if X.dimensions == 2: # plot in 2D + trace = go.Scatter( + x=[x_goal[0]], + y=[x_goal[1]], + line=dict( + color="green", + width=10 + ), + mode="markers" + ) + + self.data.append(trace) + elif X.dimensions == 3: # plot in 3D + trace = go.Scatter3d( + x=[x_goal[0]], + y=[x_goal[1]], + z=[x_goal[2]], + line=dict( + color="green", + width=10 + ), + mode="markers" + ) + + self.data.append(trace) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def draw(self, auto_open=True): + """ + Render the plot to a file + """ + py.offline.plot(self.fig, filename=self.filename, auto_open=auto_open) From 3af5ff0d582d2e3269143e4d95176e97b94da3ce Mon Sep 17 00:00:00 2001 From: Xuester Date: Sun, 6 Sep 2020 13:05:36 +1000 Subject: [PATCH 27/31] Update rrt_star_2d.py --- .../pathfinding/comparison_platform/lib/rrt_star_2d.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py index 8d0b119..388e2cb 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py @@ -1,9 +1,9 @@ import numpy as np -from src.rrt.rrt_star import RRTStar -from src.search_space.search_space import SearchSpace -from src.utilities.plotting import Plot +from pathfinding.rrtStarCombo.rrt.rrt_star import RRTStar +from pathfinding.rrtStarCombo.usearch_space.search_space import SearchSpace +from pathfinding.rrtStarCombo.utilities.plotting import Plot # wrapper function @@ -61,4 +61,4 @@ def rrt_star_2d_search(obstacle_list, start, end): plot.plot_start(X, x_init) plot.plot_goal(X, x_goal) plot.draw(auto_open=True) -""" \ No newline at end of file +""" From b1f32c05bfe156477304c1bbd908969aa3b42a4a Mon Sep 17 00:00:00 2001 From: Xuester Date: Fri, 11 Sep 2020 19:35:46 +1000 Subject: [PATCH 28/31] fresh off the keyboard yay --- .../pathfinding/comparison_platform/lib/rrt_star_2d.py | 2 +- nova_rover_demos/pathfinding/comparison_platform/run.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py index 388e2cb..c6d6342 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py @@ -3,7 +3,7 @@ from pathfinding.rrtStarCombo.rrt.rrt_star import RRTStar from pathfinding.rrtStarCombo.usearch_space.search_space import SearchSpace -from pathfinding.rrtStarCombo.utilities.plotting import Plot +#from pathfinding.rrtStarCombo.utilities.plotting import Plot # wrapper function diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index 4f8aa84..f0114a9 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -8,6 +8,7 @@ from lib.modified_pledge import * from lib.a_star import * from lib.a_star_variants import * +from lib.rrt_star_2d import * ######################################################################### ''' @@ -22,7 +23,7 @@ ################## List the algorithms you want to compare here ############################## algorithm_list = [modified_pledge, a_star, - bidirectional_a_star, weighted_a_star] + bidirectional_a_star, weighted_a_star, rrt_star_2d_search] ############################################################################################## From bb82f8d1b42e329821fef5d9e9808f0a9dd60e0d Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 11 Sep 2020 20:03:33 +1000 Subject: [PATCH 29/31] Changed relative imports for RRT star --- .../lib/rrt_star/rrt/heuristics.py | 40 +++ .../lib/rrt_star/rrt/rrt.py | 40 +++ .../lib/rrt_star/rrt/rrt_base.py | 178 ++++++++++++++ .../lib/rrt_star/rrt/rrt_connect.py | 85 +++++++ .../lib/rrt_star/rrt/rrt_star.py | 114 +++++++++ .../lib/rrt_star/rrt/rrt_star_bid.py | 129 ++++++++++ .../lib/rrt_star/rrt/rrt_star_bid_h.py | 126 ++++++++++ .../lib/rrt_star/rrt/tree.py | 14 ++ .../lib/{ => rrt_star}/rrt_star_2d.py | 37 +-- .../lib/rrt_star/search_space/search_space.py | 80 ++++++ .../lib/rrt_star/utilities/geometry.py | 60 +++++ .../rrt_star/utilities/obstacle_generation.py | 60 +++++ .../lib/rrt_star/utilities/plotting.py | 231 ++++++++++++++++++ .../pathfinding/comparison_platform/run.py | 2 +- 14 files changed, 1177 insertions(+), 19 deletions(-) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/heuristics.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_base.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_connect.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star_bid.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star_bid_h.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/tree.py rename nova_rover_demos/pathfinding/comparison_platform/lib/{ => rrt_star}/rrt_star_2d.py (70%) create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/search_space/search_space.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/geometry.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/obstacle_generation.py create mode 100644 nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/plotting.py diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/heuristics.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/heuristics.py new file mode 100644 index 0000000..2c12a2b --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/heuristics.py @@ -0,0 +1,40 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +from lib.rrt_star.utilities.geometry import dist_between_points + + +def cost_to_go(a: tuple, b: tuple) -> float: + """ + :param a: current location + :param b: next location + :return: estimated segment_cost-to-go from a to b + """ + return dist_between_points(a, b) + + +def path_cost(E, a, b): + """ + Cost of the unique path from x_init to x + :param E: edges, in form of E[child] = parent + :param a: initial location + :param b: goal location + :return: segment_cost of unique path from x_init to x + """ + cost = 0 + while not b == a: + p = E[b] + cost += dist_between_points(b, p) + b = p + + return cost + + +def segment_cost(a, b): + """ + Cost function of the line between x_near and x_new + :param a: start of line + :param b: end of line + :return: segment_cost function between a and b + """ + return dist_between_points(a, b) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt.py new file mode 100644 index 0000000..0334720 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt.py @@ -0,0 +1,40 @@ +from lib.rrt_star.rrt.rrt_base import RRTBase + + +class RRT(RRTBase): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01): + """ + Template RRT planner + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc) + + def rrt_search(self): + """ + Create and return a Rapidly-exploring Random Tree, keeps expanding until can connect to goal + https://en.wikipedia.org/wiki/Rapidly-exploring_random_tree + :return: list representation of path, dict representing edges of tree in form E[child] = parent + """ + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + + while True: + for q in self.Q: # iterate over different edge lengths until solution found or time out + for i in range(q[1]): # iterate over number of edges of given length to add + x_new, x_nearest = self.new_and_near(0, q) + + if x_new is None: + continue + + # connect shortest valid edge + self.connect_to_point(0, x_nearest, x_new) + + solution = self.check_solution() + if solution[0]: + return solution[1] diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_base.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_base.py new file mode 100644 index 0000000..2d6a449 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_base.py @@ -0,0 +1,178 @@ +import random + +import numpy as np + +from lib.rrt_star.rrt.tree import Tree +from lib.rrt_star.utilities.geometry import steer + + +class RRTBase(object): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01): + """ + Template RRT planner + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + """ + self.X = X + self.samples_taken = 0 + self.max_samples = max_samples + self.Q = Q + self.r = r + self.prc = prc + self.x_init = x_init + self.x_goal = x_goal + self.trees = [] # list of all trees + self.add_tree() # add initial tree + + def add_tree(self): + """ + Create an empty tree and add to trees + """ + self.trees.append(Tree(self.X)) + + def add_vertex(self, tree, v): + """ + Add vertex to corresponding tree + :param tree: int, tree to which to add vertex + :param v: tuple, vertex to add + """ + self.trees[tree].V.insert(0, v + v, v) + self.trees[tree].V_count += 1 # increment number of vertices in tree + self.samples_taken += 1 # increment number of samples taken + + def add_edge(self, tree, child, parent): + """ + Add edge to corresponding tree + :param tree: int, tree to which to add vertex + :param child: tuple, child vertex + :param parent: tuple, parent vertex + """ + self.trees[tree].E[child] = parent + + def nearby(self, tree, x, n): + """ + Return nearby vertices + :param tree: int, tree being searched + :param x: tuple, vertex around which searching + :param n: int, max number of neighbors to return + :return: list of nearby vertices + """ + return self.trees[tree].V.nearest(x, num_results=n, objects="raw") + + def get_nearest(self, tree, x): + """ + Return vertex nearest to x + :param tree: int, tree being searched + :param x: tuple, vertex around which searching + :return: tuple, nearest vertex to x + """ + return next(self.nearby(tree, x, 1)) + + def new_and_near(self, tree, q): + """ + Return a new steered vertex and the vertex in tree that is nearest + :param tree: int, tree being searched + :param q: length of edge when steering + :return: vertex, new steered vertex, vertex, nearest vertex in tree to new vertex + """ + x_rand = self.X.sample_free() + x_nearest = self.get_nearest(tree, x_rand) + x_new = self.bound_point(steer(x_nearest, x_rand, q[0])) + # check if new point is in X_free and not already in V + if not self.trees[0].V.count(x_new) == 0 or not self.X.obstacle_free(x_new): + return None, None + self.samples_taken += 1 + return x_new, x_nearest + + def connect_to_point(self, tree, x_a, x_b): + """ + Connect vertex x_a in tree to vertex x_b + :param tree: int, tree to which to add edge + :param x_a: tuple, vertex + :param x_b: tuple, vertex + :return: bool, True if able to add edge, False if prohibited by an obstacle + """ + if self.trees[tree].V.count(x_b) == 0 and self.X.collision_free(x_a, x_b, self.r): + self.add_vertex(tree, x_b) + self.add_edge(tree, x_b, x_a) + return True + return False + + def can_connect_to_goal(self, tree): + """ + Check if the goal can be connected to the graph + :param tree: rtree of all Vertices + :return: True if can be added, False otherwise + """ + x_nearest = self.get_nearest(tree, self.x_goal) + if self.x_goal in self.trees[tree].E and x_nearest in self.trees[tree].E[self.x_goal]: + # tree is already connected to goal using nearest vertex + return True + # check if obstacle-free + if self.X.collision_free(x_nearest, self.x_goal, self.r): + return True + return False + + def get_path(self): + """ + Return path through tree from start to goal + :return: path if possible, None otherwise + """ + if self.can_connect_to_goal(0): + print("Can connect to goal") + self.connect_to_goal(0) + return self.reconstruct_path(0, self.x_init, self.x_goal) + print("Could not connect to goal") + return None + + def connect_to_goal(self, tree): + """ + Connect x_goal to graph + (does not check if this should be possible, for that use: can_connect_to_goal) + :param tree: rtree of all Vertices + """ + x_nearest = self.get_nearest(tree, self.x_goal) + self.trees[tree].E[self.x_goal] = x_nearest + + def reconstruct_path(self, tree, x_init, x_goal): + """ + Reconstruct path from start to goal + :param tree: int, tree in which to find path + :param x_init: tuple, starting vertex + :param x_goal: tuple, ending vertex + :return: sequence of vertices from start to goal + """ + path = [x_goal] + current = x_goal + if x_init == x_goal: + return path + while not self.trees[tree].E[current] == x_init: + path.append(self.trees[tree].E[current]) + current = self.trees[tree].E[current] + path.append(x_init) + path.reverse() + return path + + def check_solution(self): + # probabilistically check if solution found + if self.prc and random.random() < self.prc: + print("Checking if can connect to goal at", + str(self.samples_taken), "samples") + path = self.get_path() + if path is not None: + return True, path + # check if can connect to goal after generating max_samples + if self.samples_taken >= self.max_samples: + return True, self.get_path() + return False, None + + def bound_point(self, point): + # if point is out-of-bounds, set to bound + point = np.maximum(point, self.X.dimension_lengths[:, 0]) + point = np.minimum(point, self.X.dimension_lengths[:, 1]) + return tuple(point) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_connect.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_connect.py new file mode 100644 index 0000000..f08fe1b --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_connect.py @@ -0,0 +1,85 @@ +import enum + +import numpy as np + +from lib.rrt_star.rrt.rrt_base import RRTBase +from lib.rrt_star.utilities.geometry import steer + + +class Status(enum.Enum): + FAILED = 1 + TRAPPED = 2 + ADVANCED = 3 + REACHED = 4 + + +class RRTConnect(RRTBase): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01): + """ + Template RRTConnect planner + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc) + self.swapped = False + + def swap_trees(self): + """ + Swap trees only + """ + # swap trees + self.trees[0], self.trees[1] = self.trees[1], self.trees[0] + self.swapped = not self.swapped + + def unswap(self): + """ + Check if trees have been swapped and unswap + """ + if self.swapped: + self.swap_trees() + + def extend(self, tree, x_rand): + x_nearest = self.get_nearest(tree, x_rand) + x_new = steer(x_nearest, x_rand, self.Q[0]) + if self.connect_to_point(tree, x_nearest, x_new): + if np.abs(np.sum(np.array(x_new) - np.array(x_rand))) < 1e-2: + return x_new, Status.REACHED + return x_new, Status.ADVANCED + return x_new, Status.TRAPPED + + def connect(self, tree, x): + S = Status.ADVANCED + while S == Status.ADVANCED: + x_new, S = self.extend(tree, x) + return x_new, S + + def rrt_connect(self): + """ + RRTConnect + :return: set of Vertices; Edges in form: vertex: [neighbor_1, neighbor_2, ...] + """ + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + self.add_tree() + self.add_vertex(1, self.x_goal) + self.add_edge(1, self.x_goal, None) + while self.samples_taken < self.max_samples: + x_rand = self.X.sample_free() + x_new, status = self.extend(0, x_rand) + if status != Status.TRAPPED: + x_new, connect_status = self.connect(1, x_new) + if connect_status == Status.REACHED: + self.unswap() + first_part = self.reconstruct_path( + 0, self.x_init, self.get_nearest(0, x_new)) + second_part = self.reconstruct_path( + 1, self.x_goal, self.get_nearest(1, x_new)) + second_part.reverse() + return first_part + second_part + self.swap_trees() + self.samples_taken += 1 diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star.py new file mode 100644 index 0000000..f76bbb3 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star.py @@ -0,0 +1,114 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. +from operator import itemgetter + +from lib.rrt_star.rrt.heuristics import cost_to_go +from lib.rrt_star.rrt.heuristics import segment_cost, path_cost +from lib.rrt_star.rrt.rrt import RRT + + +class RRTStar(RRT): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01, rewire_count=None): + """ + RRT* Search + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + :param rewire_count: number of nearby vertices to rewire + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc) + self.rewire_count = rewire_count if rewire_count is not None else 0 + self.c_best = float('inf') # length of best solution thus far + + def get_nearby_vertices(self, tree, x_init, x_new): + """ + Get nearby vertices to new vertex and their associated path costs from the root of tree + as if new vertex is connected to each one separately. + + :param tree: tree in which to search + :param x_init: starting vertex used to calculate path cost + :param x_new: vertex around which to find nearby vertices + :return: list of nearby vertices and their costs, sorted in ascending order by cost + """ + X_near = self.nearby(tree, x_new, self.current_rewire_count(tree)) + L_near = [(path_cost(self.trees[tree].E, x_init, x_near) + segment_cost(x_near, x_new), x_near) for + x_near in X_near] + # noinspection PyTypeChecker + L_near.sort(key=itemgetter(0)) + + return L_near + + def rewire(self, tree, x_new, L_near): + """ + Rewire tree to shorten edges if possible + Only rewires vertices according to rewire count + :param tree: int, tree to rewire + :param x_new: tuple, newly added vertex + :param L_near: list of nearby vertices used to rewire + :return: + """ + for c_near, x_near in L_near: + curr_cost = path_cost(self.trees[tree].E, self.x_init, x_near) + tent_cost = path_cost( + self.trees[tree].E, self.x_init, x_new) + segment_cost(x_new, x_near) + if tent_cost < curr_cost and self.X.collision_free(x_near, x_new, self.r): + self.trees[tree].E[x_near] = x_new + + def connect_shortest_valid(self, tree, x_new, L_near): + """ + Connect to nearest vertex that has an unobstructed path + :param tree: int, tree being added to + :param x_new: tuple, vertex being added + :param L_near: list of nearby vertices + """ + # check nearby vertices for total cost and connect shortest valid edge + for c_near, x_near in L_near: + if c_near + cost_to_go(x_near, self.x_goal) < self.c_best and self.connect_to_point(tree, x_near, x_new): + break + + def current_rewire_count(self, tree): + """ + Return rewire count + :param tree: tree being rewired + :return: rewire count + """ + # if no rewire count specified, set rewire count to be all vertices + if self.rewire_count is None: + return self.trees[tree].V_count + + # max valid rewire count + return min(self.trees[tree].V_count, self.rewire_count) + + def rrt_star(self): + """ + Based on algorithm found in: Incremental Sampling-based Algorithms for Optimal Motion Planning + http://roboticsproceedings.org/rss06/p34.pdf + :return: set of Vertices; Edges in form: vertex: [neighbor_1, neighbor_2, ...] + """ + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + + while True: + for q in self.Q: # iterate over different edge lengths + for i in range(q[1]): # iterate over number of edges of given length to add + x_new, x_nearest = self.new_and_near(0, q) + if x_new is None: + continue + + # get nearby vertices and cost-to-come + L_near = self.get_nearby_vertices(0, self.x_init, x_new) + + # check nearby vertices for total cost and connect shortest valid edge + self.connect_shortest_valid(0, x_new, L_near) + + if x_new in self.trees[0].E: + # rewire tree + self.rewire(0, x_new, L_near) + + solution = self.check_solution() + if solution[0]: + return solution[1] diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star_bid.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star_bid.py new file mode 100644 index 0000000..3f12ead --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star_bid.py @@ -0,0 +1,129 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +import random + +from lib.rrt_star.rrt.heuristics import path_cost +from lib.rrt_star.rrt.rrt_star import RRTStar + + +class RRTStarBidirectional(RRTStar): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01, rewire_count=None): + """ + Bidirectional RRT* Search + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + :param rewire_count: number of nearby vertices to rewire + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc, rewire_count) + self.sigma_best = None # best solution thus far + self.swapped = False + + def connect_trees(self, a, b, x_new, L_near): + """ + Check nearby vertices for total cost and connect shortest valid edge if possible + This results in both trees being connected + :param a: first tree to connect + :param b: second tree to connect + :param x_new: new vertex to add + :param L_near: nearby vertices + """ + for c_near, x_near in L_near: + c_tent = c_near + path_cost(self.trees[a].E, self.x_init, x_new) + if c_tent < self.c_best and self.X.collision_free(x_near, x_new, self.r): + self.trees[b].V_count += 1 + self.trees[b].E[x_new] = x_near + self.c_best = c_tent + sigma_a = self.reconstruct_path(a, self.x_init, x_new) + sigma_b = self.reconstruct_path(b, self.x_goal, x_new) + del sigma_b[-1] + sigma_b.reverse() + self.sigma_best = sigma_a + sigma_b + + break + + def swap_trees(self): + """ + Swap trees and start/goal + """ + # swap trees + self.trees[0], self.trees[1] = self.trees[1], self.trees[0] + # swap start/goal + self.x_init, self.x_goal = self.x_goal, self.x_init + self.swapped = not self.swapped + + def unswap(self): + """ + Check if trees have been swapped and unswap + Reverse path if needed to correspond with swapped trees + """ + if self.swapped: + self.swap_trees() + + if self.sigma_best is not None and self.sigma_best[0] is not self.x_init: + self.sigma_best.reverse() + + def rrt_star_bidirectional(self): + """ + Bidirectional RRT* + :return: set of Vertices; Edges in form: vertex: [neighbor_1, neighbor_2, ...] + """ + # tree a + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + + # tree b + self.add_tree() + self.add_vertex(1, self.x_goal) + self.add_edge(1, self.x_goal, None) + + while True: + for q in self.Q: # iterate over different edge lengths + for i in range(q[1]): # iterate over number of edges of given length to add + x_new, x_nearest = self.new_and_near(0, q) + if x_new is None: + continue + + # get nearby vertices and cost-to-come + L_near = self.get_nearby_vertices(0, self.x_init, x_new) + + # check nearby vertices for total cost and connect shortest valid edge + self.connect_shortest_valid(0, x_new, L_near) + + if x_new in self.trees[0].E: + # rewire tree + self.rewire(0, x_new, L_near) + + # nearby vertices from opposite tree and cost-to-come + L_near = self.get_nearby_vertices( + 1, self.x_goal, x_new) + + self.connect_trees(0, 1, x_new, L_near) + + if self.prc and random.random() < self.prc: # probabilistically check if solution found + print("Checking if can connect to goal at", + str(self.samples_taken), "samples") + if self.sigma_best is not None: + print("Can connect to goal") + self.unswap() + + return self.sigma_best + + if self.samples_taken >= self.max_samples: + self.unswap() + + if self.sigma_best is not None: + print("Can connect to goal") + + return self.sigma_best + else: + print("Could not connect to goal") + + return self.sigma_best + + self.swap_trees() diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star_bid_h.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star_bid_h.py new file mode 100644 index 0000000..cf542b6 --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/rrt_star_bid_h.py @@ -0,0 +1,126 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. +import random + +from lib.rrt_star.rrt.rrt_star_bid import RRTStarBidirectional +from lib.rrt_star.utilities.geometry import dist_between_points, pairwise + + +class RRTStarBidirectionalHeuristic(RRTStarBidirectional): + def __init__(self, X, Q, x_init, x_goal, max_samples, r, prc=0.01, + rewire_count: int = None, conditional_rewire: bool = False): + """ + Bidirectional RRT* Search + :param X: Search Space + :param Q: list of lengths of edges added to tree + :param x_init: tuple, initial location + :param x_goal: tuple, goal location + :param max_samples: max number of samples to take + :param r: resolution of points to sample along edge when checking for collisions + :param prc: probability of checking whether there is a solution + :param rewire_count: number of nearby vertices to rewire + :param conditional_rewire: if True, set rewire count to 1 until solution found, + then set to specified rewire count (ensure runtime complexity guarantees) + """ + super().__init__(X, Q, x_init, x_goal, max_samples, r, prc, + 1 if conditional_rewire else rewire_count) + self.original_rewire_count = rewire_count + + def rrt_star_bid_h(self): + """ + Bidirectional RRT* using added heuristics + :return: set of Vertices; Edges in form: vertex: [neighbor_1, neighbor_2, ...] + """ + # tree a + self.add_vertex(0, self.x_init) + self.add_edge(0, self.x_init, None) + + # tree b + self.add_tree() + self.add_vertex(1, self.x_goal) + self.add_edge(1, self.x_goal, None) + + while True: + for q in self.Q: # iterate over different edge lengths + for i in range(q[1]): # iterate over number of edges of given length to add + x_new, x_nearest = self.new_and_near(0, q) + if x_new is None: + continue + + # get nearby vertices and cost-to-come + L_near = self.get_nearby_vertices(0, self.x_init, x_new) + + # check nearby vertices for total cost and connect shortest valid edge + self.connect_shortest_valid(0, x_new, L_near) + + if x_new in self.trees[0].E: + # rewire tree + self.rewire(0, x_new, L_near) + + # nearby vertices from opposite tree and cost-to-come + L_near = self.get_nearby_vertices( + 1, self.x_goal, x_new) + + self.connect_trees(0, 1, x_new, L_near) + self.rewire_count = self.original_rewire_count + + self.lazy_shortening() + + if self.prc and random.random() < self.prc: # probabilistically check if solution found + print("Checking if can connect to goal at", + str(self.samples_taken), "samples") + if self.sigma_best is not None: + print("Can connect to goal") + self.unswap() + + return self.sigma_best + + if self.samples_taken >= self.max_samples: + self.unswap() + + if self.sigma_best is not None: + print("Can connect to goal") + + return self.sigma_best + else: + print("Could not connect to goal") + + return self.sigma_best + + self.swap_trees() + + def lazy_shortening(self): + """ + Lazily attempt to shorten current best path + """ + if self.sigma_best is not None and len(self.sigma_best) > 2: + a, b = 0, 0 + while not abs(a - b) > 1: + a, b = random.sample(range(0, len(self.sigma_best)), 2) + + a, b = min(a, b), max(a, b) + v_a, v_b = tuple(self.sigma_best[a]), tuple(self.sigma_best[b]) + + if self.X.collision_free(v_a, v_b, self.r): + # create new edge connecting vertices + if v_a in self.trees[0].E and v_b in self.reconstruct_path(0, self.x_init, v_a): + self.trees[0].E[v_a] = v_b + elif v_a in self.trees[1].E and v_b in self.reconstruct_path(1, self.x_goal, v_a): + self.trees[1].E[v_a] = v_b + elif v_b in self.trees[0].E and v_a in self.reconstruct_path(0, self.x_init, v_b): + self.trees[0].E[v_b] = v_a + elif v_b in self.trees[1].E and v_a in self.reconstruct_path(1, self.x_goal, v_b): + self.trees[1].E[v_b] = v_a + elif v_a in self.trees[0].E: + self.trees[0].E[v_b] = v_a + else: + self.trees[1].E[v_b] = v_a + + # update best path + # remove cost of removed edges + self.c_best -= sum(dist_between_points(i, j) + for i, j in pairwise(self.sigma_best[a:b + 1])) + # add cost of new edge + self.c_best += dist_between_points( + self.sigma_best[a], self.sigma_best[b]) + self.sigma_best = self.sigma_best[:a + 1] + self.sigma_best[b:] diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/tree.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/tree.py new file mode 100644 index 0000000..7ac0bbb --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt/tree.py @@ -0,0 +1,14 @@ +from rtree import index + + +class Tree(object): + def __init__(self, X): + """ + Tree representation + :param X: Search Space + """ + p = index.Property() + p.dimension = X.dimensions + self.V = index.Index(interleaved=True, properties=p) # vertices in an rtree + self.V_count = 0 + self.E = {} # edges in form E[child] = parent diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt_star_2d.py similarity index 70% rename from nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py rename to nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt_star_2d.py index c6d6342..c20b319 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star_2d.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt_star_2d.py @@ -1,43 +1,43 @@ import numpy as np -from pathfinding.rrtStarCombo.rrt.rrt_star import RRTStar -from pathfinding.rrtStarCombo.usearch_space.search_space import SearchSpace +from lib.rrt_star.rrt.rrt_star import RRTStar +from lib.rrt_star.search_space.search_space import SearchSpace #from pathfinding.rrtStarCombo.utilities.plotting import Plot # wrapper function def rrt_star_2d_search(obstacle_list, start, end): - # instantiate attributes + # instantiate attributes Obstacles = obstacle_list - + # dimensions of Search Space X_dimensions = np.array([(0, 150), (0, 150)]) # length of tree edges - Q = np.array([(8, 4)]) - - # res is taken from fastslam - r = res - + Q = np.array([(8, 4)]) + + # res is taken from fastslam + r = res + # max number of samples to take before timing out - max_samples = 1024 + max_samples = 1024 # optional, number of nearby branches to rewire - rewire_count = 32 - - # probability of checking for a connection to goal - prc = 0.1 - + rewire_count = 32 + + # probability of checking for a connection to goal + prc = 0.1 + # create Search Space X = SearchSpace(X_dimensions, obstacle_list) # create rrt_search - rrt = RRTStar(X, Q, x_init, x_goal, max_samples, r, prc, rewire_count) + rrt = RRTStar(X, Q, x_init, x_goal, max_samples, r, prc, rewire_count) try: - #call the main algorithm - #it should return the path as a list or coordinates + # call the main algorithm + # it should return the path as a list or coordinates path = rrt.rrt_star() maze_solved = True except: @@ -48,6 +48,7 @@ def rrt_star_2d_search(obstacle_list, start, end): # a boolean indicating maze solved or not return path, maze_solved + """ Obstacles = ([(x, y, x+res, y+res) #res is taken from fast slam x_init = (0, 0) # starting location diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/search_space/search_space.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/search_space/search_space.py new file mode 100644 index 0000000..91ed56e --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/search_space/search_space.py @@ -0,0 +1,80 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +import numpy as np +from rtree import index + +from lib.rrt_star.utilities.geometry import es_points_along_line +from lib.rrt_star.utilities.obstacle_generation import obstacle_generator + + +class SearchSpace(object): + def __init__(self, dimension_lengths, O=None): + """ + Initialize Search Space + :param dimension_lengths: range of each dimension + :param O: list of obstacles + """ + # sanity check + if len(dimension_lengths) < 2: + raise Exception("Must have at least 2 dimensions") + self.dimensions = len(dimension_lengths) # number of dimensions + # sanity checks + if any(len(i) != 2 for i in dimension_lengths): + raise Exception("Dimensions can only have a start and end") + if any(i[0] >= i[1] for i in dimension_lengths): + raise Exception("Dimension start must be less than dimension end") + self.dimension_lengths = dimension_lengths # length of each dimension + p = index.Property() + p.dimension = self.dimensions + if O is None: + self.obs = index.Index(interleaved=True, properties=p) + else: + # r-tree representation of obstacles + # sanity check + if any(len(o) / 2 != len(dimension_lengths) for o in O): + raise Exception("Obstacle has incorrect dimension definition") + if any(o[i] >= o[int(i + len(o) / 2)] for o in O for i in range(int(len(o) / 2))): + raise Exception( + "Obstacle start must be less than obstacle end") + self.obs = index.Index(obstacle_generator( + O), interleaved=True, properties=p) + + def obstacle_free(self, x): + """ + Check if a location resides inside of an obstacle + :param x: location to check + :return: True if not inside an obstacle, False otherwise + """ + return self.obs.count(x) == 0 + + def sample_free(self): + """ + Sample a location within X_free + :return: random location within X_free + """ + while True: # sample until not inside of an obstacle + x = self.sample() + if self.obstacle_free(x): + return x + + def collision_free(self, start, end, r): + """ + Check if a line segment intersects an obstacle + :param start: starting point of line + :param end: ending point of line + :param r: resolution of points to sample along edge when checking for collisions + :return: True if line segment does not intersect an obstacle, False otherwise + """ + points = es_points_along_line(start, end, r) + coll_free = all(map(self.obstacle_free, points)) + return coll_free + + def sample(self): + """ + Return a random location within X + :return: random location within X (not necessarily X_free) + """ + x = np.random.uniform( + self.dimension_lengths[:, 0], self.dimension_lengths[:, 1]) + return tuple(x) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/geometry.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/geometry.py new file mode 100644 index 0000000..e78b07f --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/geometry.py @@ -0,0 +1,60 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +from itertools import tee + +import numpy as np + + +def dist_between_points(a, b): + """ + Return the Euclidean distance between two points + :param a: first point + :param b: second point + :return: Euclidean distance between a and b + """ + distance = np.linalg.norm(np.array(b) - np.array(a)) + return distance + + +def pairwise(iterable): + """ + Pairwise iteration over iterable + :param iterable: iterable + :return: s -> (s0,s1), (s1,s2), (s2, s3), ... + """ + a, b = tee(iterable) + next(b, None) + return zip(a, b) + + +def es_points_along_line(start, end, r): + """ + Equally-spaced points along a line defined by start, end, with resolution r + :param start: starting point + :param end: ending point + :param r: maximum distance between points + :return: yields points along line from start to end, separated by distance r + """ + d = dist_between_points(start, end) + n_points = int(np.ceil(d / r)) + if n_points > 1: + step = d / (n_points - 1) + for i in range(n_points): + next_point = steer(start, end, i * step) + yield next_point + + +def steer(start, goal, d): + """ + Return a point in the direction of the goal, that is distance away from start + :param start: start location + :param goal: goal location + :param d: distance away from start + :return: point in the direction of the goal, distance away from start + """ + start, end = np.array(start), np.array(goal) + v = end - start + u = v / (np.sqrt(np.sum(v ** 2))) + steered_point = start + u * d + return tuple(steered_point) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/obstacle_generation.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/obstacle_generation.py new file mode 100644 index 0000000..b6f851a --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/obstacle_generation.py @@ -0,0 +1,60 @@ +import random +import uuid + +import numpy as np + + +def generate_random_obstacles(X, start, end, n): + """ + Generates n random obstacles without disrupting world connectivity. + It also respects start and end points so that they don't lie inside of an obstacle. + """ + # Note: Current implementation only supports hyperrectangles. + i = 0 + obstacles = [] + while i < n: + center = np.empty(len(X.dimension_lengths), np.float) + scollision = True + fcollision = True + edge_lengths = [] + for j in range(X.dimensions): + # None of the sides of a hyperrectangle can be higher than 0.1 of the total span + # in that particular X.dimensions + max_edge_length = (X.dimension_lengths[j][1] - X.dimension_lengths[j][0]) / 10.0 + # None of the sides of a hyperrectangle can be higher than 0.01 of the total span + # in that particular X.dimensions + min_edge_length = (X.dimension_lengths[j][1] - X.dimension_lengths[j][0]) / 100.0 + edge_length = random.uniform(min_edge_length, max_edge_length) + center[j] = random.uniform(X.dimension_lengths[j][0] + edge_length, + X.dimension_lengths[j][1] - edge_length) + edge_lengths.append(edge_length) + + if abs(start[j] - center[j]) > edge_length: + scollision = False + if abs(end[j] - center[j]) > edge_length: + fcollision = False + + # Check if any part of the obstacle is inside of another obstacle. + min_corner = np.empty(X.dimensions, np.float) + max_corner = np.empty(X.dimensions, np.float) + for j in range(X.dimensions): + min_corner[j] = center[j] - edge_lengths[j] + max_corner[j] = center[j] + edge_lengths[j] + obstacle = np.append(min_corner, max_corner) + # Check newly generated obstacle intersects any former ones. Also respect start and end points + if len(list(X.obs.intersection(obstacle))) > 0 or scollision or fcollision: + continue + i += 1 + obstacles.append(obstacle) + X.obs.add(uuid.uuid4(), tuple(obstacle), tuple(obstacle)) + + return obstacles + + +def obstacle_generator(obstacles): + """ + Add obstacles to r-tree + :param obstacles: list of obstacles + """ + for obstacle in obstacles: + yield (uuid.uuid4(), obstacle, obstacle) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/plotting.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/plotting.py new file mode 100644 index 0000000..f3fffef --- /dev/null +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/utilities/plotting.py @@ -0,0 +1,231 @@ +# This file is subject to the terms and conditions defined in +# file 'LICENSE', which is part of this source code package. + +import plotly as py +from plotly import graph_objs as go + +colors = ['darkblue', 'teal'] + + +class Plot(object): + def __init__(self, filename): + """ + Create a plot + :param filename: filename + """ + self.filename = filename + ".html" + self.data = [] + self.layout = {'title': 'Plot', + 'showlegend': False + } + + self.fig = {'data': self.data, + 'layout': self.layout} + + def plot_tree(self, X, trees): + """ + Plot tree + :param X: Search Space + :param trees: list of trees + """ + if X.dimensions == 2: # plot in 2D + self.plot_tree_2d(trees) + elif X.dimensions == 3: # plot in 3D + self.plot_tree_3d(trees) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def plot_tree_2d(self, trees): + """ + Plot 2D trees + :param trees: trees to plot + """ + for i, tree in enumerate(trees): + for start, end in tree.E.items(): + if end is not None: + trace = go.Scatter( + x=[start[0], end[0]], + y=[start[1], end[1]], + line=dict( + color=colors[i] + ), + mode="lines" + ) + self.data.append(trace) + + def plot_tree_3d(self, trees): + """ + Plot 3D trees + :param trees: trees to plot + """ + for i, tree in enumerate(trees): + for start, end in tree.E.items(): + if end is not None: + trace = go.Scatter3d( + x=[start[0], end[0]], + y=[start[1], end[1]], + z=[start[2], end[2]], + line=dict( + color=colors[i] + ), + mode="lines" + ) + self.data.append(trace) + + def plot_obstacles(self, X, O): + """ + Plot obstacles + :param X: Search Space + :param O: list of obstacles + """ + if X.dimensions == 2: # plot in 2D + self.layout['shapes'] = [] + for O_i in O: + # noinspection PyUnresolvedReferences + self.layout['shapes'].append( + { + 'type': 'rect', + 'x0': O_i[0], + 'y0': O_i[1], + 'x1': O_i[2], + 'y1': O_i[3], + 'line': { + 'color': 'purple', + 'width': 4, + }, + 'fillcolor': 'purple', + 'opacity': 0.70 + }, + ) + elif X.dimensions == 3: # plot in 3D + for O_i in O: + obs = go.Mesh3d( + x=[O_i[0], O_i[0], O_i[3], O_i[3], O_i[0], O_i[0], O_i[3], O_i[3]], + y=[O_i[1], O_i[4], O_i[4], O_i[1], O_i[1], O_i[4], O_i[4], O_i[1]], + z=[O_i[2], O_i[2], O_i[2], O_i[2], O_i[5], O_i[5], O_i[5], O_i[5]], + i=[7, 0, 0, 0, 4, 4, 6, 6, 4, 0, 3, 2], + j=[3, 4, 1, 2, 5, 6, 5, 2, 0, 1, 6, 3], + k=[0, 7, 2, 3, 6, 7, 1, 1, 5, 5, 7, 6], + color='purple', + opacity=0.70 + ) + self.data.append(obs) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def plot_path(self, X, path): + """ + Plot path through Search Space + :param X: Search Space + :param path: path through space given as a sequence of points + """ + if X.dimensions == 2: # plot in 2D + x, y = [], [] + for i in path: + x.append(i[0]) + y.append(i[1]) + trace = go.Scatter( + x=x, + y=y, + line=dict( + color="red", + width=4 + ), + mode="lines" + ) + + self.data.append(trace) + elif X.dimensions == 3: # plot in 3D + x, y, z = [], [], [] + for i in path: + x.append(i[0]) + y.append(i[1]) + z.append(i[2]) + trace = go.Scatter3d( + x=x, + y=y, + z=z, + line=dict( + color="red", + width=4 + ), + mode="lines" + ) + + self.data.append(trace) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def plot_start(self, X, x_init): + """ + Plot starting point + :param X: Search Space + :param x_init: starting location + """ + if X.dimensions == 2: # plot in 2D + trace = go.Scatter( + x=[x_init[0]], + y=[x_init[1]], + line=dict( + color="orange", + width=10 + ), + mode="markers" + ) + + self.data.append(trace) + elif X.dimensions == 3: # plot in 3D + trace = go.Scatter3d( + x=[x_init[0]], + y=[x_init[1]], + z=[x_init[2]], + line=dict( + color="orange", + width=10 + ), + mode="markers" + ) + + self.data.append(trace) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def plot_goal(self, X, x_goal): + """ + Plot goal point + :param X: Search Space + :param x_goal: goal location + """ + if X.dimensions == 2: # plot in 2D + trace = go.Scatter( + x=[x_goal[0]], + y=[x_goal[1]], + line=dict( + color="green", + width=10 + ), + mode="markers" + ) + + self.data.append(trace) + elif X.dimensions == 3: # plot in 3D + trace = go.Scatter3d( + x=[x_goal[0]], + y=[x_goal[1]], + z=[x_goal[2]], + line=dict( + color="green", + width=10 + ), + mode="markers" + ) + + self.data.append(trace) + else: # can't plot in higher dimensions + print("Cannot plot in > 3 dimensions") + + def draw(self, auto_open=True): + """ + Render the plot to a file + """ + py.offline.plot(self.fig, filename=self.filename, auto_open=auto_open) diff --git a/nova_rover_demos/pathfinding/comparison_platform/run.py b/nova_rover_demos/pathfinding/comparison_platform/run.py index f0114a9..78b0c8f 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/run.py +++ b/nova_rover_demos/pathfinding/comparison_platform/run.py @@ -8,7 +8,7 @@ from lib.modified_pledge import * from lib.a_star import * from lib.a_star_variants import * -from lib.rrt_star_2d import * +from lib.rrt_star.rrt_star_2d import * ######################################################################### ''' From 2d65a89d67940d4547f08bb2d3819f7a551c482c Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 11 Sep 2020 21:56:52 +1000 Subject: [PATCH 30/31] Convert obstacle input for RRT --- .../lib/rrt_star/rrt_star_2d.py | 18 +++++-- .../lib/rrt_star/search_space/search_space.py | 6 +-- .../comparison_platform/results/a_star.pdf | Bin 12806 -> 60224 bytes .../results/bidirectional_a_star.pdf | Bin 12806 -> 60224 bytes .../results/modified_pledge.pdf | Bin 12944 -> 62770 bytes .../results/weighted_a_star.pdf | Bin 12826 -> 60521 bytes .../comparison_platform/sandbox.py | 46 ++---------------- 7 files changed, 20 insertions(+), 50 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt_star_2d.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt_star_2d.py index c20b319..fde3eda 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt_star_2d.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/rrt_star_2d.py @@ -9,7 +9,7 @@ # wrapper function def rrt_star_2d_search(obstacle_list, start, end): # instantiate attributes - Obstacles = obstacle_list + Obstacles = process_obstacles(obstacle_list) # dimensions of Search Space X_dimensions = np.array([(0, 150), (0, 150)]) @@ -18,22 +18,22 @@ def rrt_star_2d_search(obstacle_list, start, end): Q = np.array([(8, 4)]) # res is taken from fastslam - r = res + r = 1 # max number of samples to take before timing out max_samples = 1024 # optional, number of nearby branches to rewire - rewire_count = 32 + rewire_count = 500 # probability of checking for a connection to goal prc = 0.1 # create Search Space - X = SearchSpace(X_dimensions, obstacle_list) + X = SearchSpace(X_dimensions, Obstacles) # create rrt_search - rrt = RRTStar(X, Q, x_init, x_goal, max_samples, r, prc, rewire_count) + rrt = RRTStar(X, Q, start, end, max_samples, r, prc, rewire_count) try: # call the main algorithm @@ -63,3 +63,11 @@ def rrt_star_2d_search(obstacle_list, start, end): plot.plot_goal(X, x_goal) plot.draw(auto_open=True) """ + + +def process_obstacles(obstacle_list): + result = [] + for coor in obstacle_list: + result.append((*(coor), *(coor))) + + return np.array(result) diff --git a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/search_space/search_space.py b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/search_space/search_space.py index 91ed56e..cd92c47 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/search_space/search_space.py +++ b/nova_rover_demos/pathfinding/comparison_platform/lib/rrt_star/search_space/search_space.py @@ -34,9 +34,9 @@ def __init__(self, dimension_lengths, O=None): # sanity check if any(len(o) / 2 != len(dimension_lengths) for o in O): raise Exception("Obstacle has incorrect dimension definition") - if any(o[i] >= o[int(i + len(o) / 2)] for o in O for i in range(int(len(o) / 2))): - raise Exception( - "Obstacle start must be less than obstacle end") + # if any(o[i] >= o[int(i + len(o) / 2)] for o in O for i in range(int(len(o) / 2))): + # raise Exception( + # "Obstacle start must be less than obstacle end") self.obs = index.Index(obstacle_generator( O), interleaved=True, properties=p) diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf index 82752c311e929eab4211afb67fc59b1f6a4f3aab..4b109773627cf2f2a7995e0c9781b691c00ef247 100644 GIT binary patch delta 54419 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 z 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 delta 6610 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 TSiVX}JRkw5<>$Yqr%wAnM;Poq diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/bidirectional_a_star.pdf index 393c428ce19f513f49f65e26eca713bc4ae62fd4..4b109773627cf2f2a7995e0c9781b691c00ef247 100644 GIT binary patch delta 54419 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 z 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 delta 6610 zcmZu#c_5T~)F!*^QX-6GDcj6o>_nyPvP+2UMzY7?b&)Mn_AFBf+4qrMk$nkShL94n zG}%UI_~z|$zwh2Yf4$Coe!sIl&pBt_)-keh+w!-hfTG(+C|$TOfi`ySEo%V|rZV|r zdYJot)>7girTQbu%bPpQqP-~LFZ6DkOCW^T8fmBgH@vKTK^?VZKr`s47j^JwYlx|Z& zDeHJ0mJGc}u^RGm7JY|z_Nu;w%khb=y+`d&B zty-?ia<`Z!r~2BHt76X*lZ$L1_Zd!keu{>wbCM5)_$p|EO4M4(nPs3-YmXs@Lhpp`$f{mIYA@-~qc|csD&7Bua#fx&IIhEILkP?QIw0M%*Nq#tX@s2;^ zP7)=f-14{1C%P$P8*8NzZMvXhu^e=>#r~?1`pf4NoF49XW+|FrI#yJ7ly?F_( z>~*%-e($ZFN^J^-n)}1K%HVXJWj+sf*w;!(M6as%O&Qzz2KMTR%jcMWDaeo6JYVzo zJ51!GgNf~&aF+M0;CaUIOk{!aZMgTAddjNpbeU=AwQxO!8p3&3CcW-c79!M^-odUH zwz|*SJi#zUKD9^tUYW}GdOk%kg=>3i?Q! z%I#)s3e#YtKGUJpynXr>FGa~iY*jOuT(}Jb9Yn$l)-#GJ$-5_Eqoo@*Id2Zi=xJPy z31sW(b#=6M_iR1AJnXDp!6!ExXIdBx0)>DNGE#^m85u21CZ0;L%9tXZ1z4L_jK5IJ z96rZQAnU)TuYaJhy;=GgVgmQi$tF8Fe<7Ih z@`-Jw({=I^(*_og_MZGi?JqR&@Dvda76GNhFD<~q$fWOywuqL4mGuX|@U_atL3~4s zxJCKdz7}%=B}v9Y(Wo2A)KB0m4-lZhZKZrryBABI6!u--;r=i!2`r6`#Aaui{HA6b z`A7Sg#DCmes8Y)+jguRjbS=LR3?@(>?rz~9C^R2Dj9+ue%@(OW>qHUE-cL(X@h=chJ;r@+vbL-cJN~4=_%sSU@kwVm} zPFxn*YE0rrH@ZIOuv^4)`h=|d2@`;8Sf>=P9h=4`X^Swc2%-TIuWn4I%a~Bj3f|@k z_1$dF^{|E-sSUlsO-j7lVXnC4MsGYZYA$ngSWFjJx)MoI*EqSwFEcfdOkb-)?z(&1 zSC8ziPQ;g}R9@L@X7*9>gJVU1>?}hoQBi?gwV( zh4MJ~r&x{S<71f+T{C7^h0dtt#vn7NDB~+#%JwUtgPYLg#4smB?Xmb`RV9>RrN*Gh zRCv*Ng0DhRQzf2|cxCz(n0HBH&A%H}D&{%XK044$>oc#&2|DcQ(6flTlr;kduc&YW zzHXb%XB0Sa~J^Ng6H@Z2XHaqPO!B`o5czLAs!|885jSbSz_74CWI zlP84k$4WDFXF%(7PPr|R$xUQ|2D$oJSF`8b0M79K!&SyKjy2okTbAWi=#4tU<(>r| zga>jbDJ&rjP1gutHC}zfm#?h!13TP2*EzvZ$Jg%;z)Xx{t1h|Abe>9&6_(XSf0-(q z`&r>sD3;@pcYs;Q2x`b zM_h!NbmR41y*_6POnZ1ga))UhW1*fQH&1kRH;VnZNAKoq4jEIOf4 z(dP7K0vnZvgSq7{)ucdysBM|^A-q(NZL169up<$A-=x*pGZ|}pb8}Mk=7tTpc7C;% z@0d!0&UusdvG)hfl-5j>cse~mXMG(yKD1W7dB8Pce)(xrX5|!RN^?gQ?CrVrPJkx^ z)Ue4-YD0G`w&)CgXMMHdU!b`tM)z4k-&y`RjW*sPcspBrb*_7}3XK=71*@$S+NPE7 zfmM)ldZ)DF@UfSFet+YxFW$ZAOvB6ND8Z@B2EBhk@Hu{MQYVZ{MbVS0(70?(=`86$ z)BdUl?gikvp~_2)-XJgO09K_k=;@Hh&Xvi4I=@x~ylAZ|sgzjcKBoOdYrHFq6yJq5 z_oC@Rbol!|zXGF0H^Xnww~!|HaSHjMp4Jm%4)l#qg$~@Ws~bXWy;bV?UR-p?3|F)P ztJrZciB$f``Z0MAGgu;kCR0>6vs?b?>@G6-ce2Qx>_(pGe>M}c{Z+T#)WFKE>@%Sl z3Np@goMiJUnNv43O9K5Pc>8{MBIj5M!<8et7U#0s#$|AMe#&Xei+VA`HVv_1{%0pk6fZOAfFVAL^NA~7 z7D+`?Mm648?pkV}*-?3N)Tj-<+pU;EeYBSGx*hbRG|K>%A!w~JsW3=8Of%2{JRK5W zQl;ZFMMX{4$AT5nibV*3>;UIckDqX%Vl(CwuD4he`+Z7c`_wzlHi|9jajhw$2u6VJ&+o=@7o?y2LZ9=XI4mV464JkO4 z&Sfh~^yZ2-P5_)_EeCGjx}9*68L`UP=X!f-<_}ZQb=2565KhR@Nm~DjsxO75z(!LG zVQYOT&6s0ZNjF#ecFo7Sxy2mXBc@l-Yhc*3>h?!Qw28c>SDy2iP|R0q3>wcoS*r>r zplyVftToF}lsXx(9l*MvT{Gg91A@$e(bd2gorag&-PPuVQW&m85@pmVC+2 zq+?cTHq`So@-QG{h^y5cWC}6Sc4Bw6@H!y}1`kTh&iM{ExSyoKox=okfa41sXiLipD;x-Z%WHOv6uQ!RB78}xIIxbAm{ zr-avrk^O@epO6V!WhIo0DWmn^I|JU1$6#?LI=+eda~~W8-cJbJbscw<@}+QMKqODlK)^abikQT$c#`U(+gFvUDOx^GGNZ3)oV;=4lU9+pp!y|6saUB`?=;1Mq zngaLnga#`^ql`_j5RJ}R9kDdHn_cDbZF4!52rz5rjWE^tGXkAd9zBwwN@fC7?ckIi zO9G73B9b+G&HWZu?-`B8z|Dk?V`+At5NkQ*#red7QKDpTAo=7|(3f0(bJX28$buR` z(>KH6y`ZpG5Boo9U)0fKG0V(1Wl@1?dsN+Ajf)``WHr+agC@1VbHcfr6ZGVFl>_dQ z`)jdBGzbH~*%f%}BHL(8#d0B=I!OrMkrE!?@2iXeHs?p)-cOzXS%D@cgztOAIK9U;NgMDUgK_V`Ll62@4FYwNEn zEQ+OhKh|hAMBMK1EdI7W0Fv9TdkpxTSXHeyCu*&H*=H8}ir2rqW{sL4&2j{9*w?dt z3A!2nlhT_zuXPt{i+<)Rrq120Pwg`&Wzx~Sb#b)&*C6fUzyW@TyJIu*b$1(fM&<0K zZsjX;Y~Z#72AwB@MZ8KgMmaC+bd5O{iFJLix&;Mp73j8iP?L{Cf%6W9!T19UlMj`QzGmG}$0!B{$~sQM1?b`(>JK&6{m8 zYqZ8ze%GO=Wn``S5zW3)Eccyr;7}~h+)><1p{@zUt>iSE3i+(u%)uZVd8iqCCyx8V zA!<-l@^8=spl)t>e|`!+W7rY*a%K0X?I*~*CjHty9V5ZWOKyx{f!=gbD<(lvO!af` zwMGZ@Q}2B2pvEpa&r$^=UMrUA1jM=#m)I1bvWeXPi*=ybH;C51_WDnGHxAL`u8=)Pqj;y7Fkj@;s{y(S8%40Whca`xL3QCtaB zD6`z7>2RnoR29d$BoNWmuOn;}THLTnrwkQ1$|0?0_&!t~U!8DK-@A{1~O7L~kuw@;yg(?~=x8(>U6jcw+eXMV!;+w-B6Q*o0pAQK**wk$z>*KpuXn{atT$qg_Y{9V=s3ZLL z^aoZ&4bfWIsrM@QSbbRrl(xUiZZPY@wB4`2~0G$=|5MXfd;wv zc33v*5Hj261#i2Aq)Dr#zIW??Y*Fkl(XnFORC_WLLUN_g{LM#&ya$&sA6Coa9v78A z=48Vc-x(N-%g=pqxVNGCzl+K5fwXcMH(=s><6z)h6t+cizo&~oWpDCL3m|Te;?O+o zoR_uD2DY-X%8XL)RfvrxIWH-nntrBvvM1v9W^rMz(A(3?prAN zdBxk$Upp_F>{u2JYn_f>|Y*yh|?!0%&TYP3-NAlsKy~) zTP&)1kszIsAwf@s$%MSqwFAkCrS;)K^f@PG+d>9}RhL<^@xwC?nH#dh=L+wynBl(s z3P_O8Z_%9F^(s6qbnJD}R4*n=#x|m9T)9zj(Wa_B9uP)2Qel|Og0%1Wu@&mtx-Ea) ztnKKnaV^pF{`!rals&uDR(^^1Y&napRU2jY$kmC9V^vctUx~nLKEO#d-WCpL(bSJ2 z2%Ge`;#)ETKOm>3lL+0%G#@*sJZ2CeXVe;sowvJ|zL?@H#G^#(YoR|zZ}h%~K8+l> z&{*)BG5JXAQO$#wA0JL-j9(fDPOnAUiO2_ zR#7YGg=fZg^z)p29qd>=FDVe)*tK@zM zqcQs_;3op6pH}9k-of$!MNOHNXIuMZx99Zy=4a3=aH93EknhUNJgq(T zJkLQmQ)Y4ozp^+}m5$3h;~IvP?yL(g`kTEIt89Hy!4K7AKFJ!sa?TN$)AqoVY$iCo zOC~fK9ba~BmE2;9emdG=DvY_d-8vHjDg+2B&T4C@?whJ5TLi4f> zvGbI3AAM1B-%qmPOK_?7E%zyu13~bkdKh|Fd?5|;IESZXF^2ax2Saw!@#=zTur(h| zihMr=d7_)pzvesB{aQP082mAms#IdAIKx+6j988wu@(2Wnn&>^>g@;~iC}c>7 zT7HgX`H>>W&BYVf#rnHG%fme{XjdXt+L73@If6muHLdQL-J+=Tq=D;kAW z{X7fo?t}g1`(dk~oKS)a11p{M(I-GDs1&q{;VTmv3@QnQN=d_Ig<&v3C{*wwt@st< zM?)_+4~USfwby;5n-|i_1|lH_6N8ID9KF2mC)`}(CUs4?zjT`7w=^MU=?VaY$->|e zDEJ4t2ciA_K)eAz*b|A`zXA^C?hFd66{hv6{zpE9`2 zACbc)C1n3=7%qkQmklK77hG2AUqVnOA%XaB7N8Ocng2#i%naS0XmAZ40s(@%1b3Gpjk~)`2<{d(?(QDk-QD4m|J-}WdFxT5 zclUm%s$Of(uVRdA4xy^LAb??;WmaT~yGO*2ODIymSBIg^{axl=e7r@{r2KzN5av9* z=z1_|&D~d@7_z4E<3>xT{ZbK5gAcY;D0m+BrYn?TwzyAAR+@LgZgTE#wdWR@%6dZt8X4^LW_s`m1d}*>HlK zCUbJ^C|-k(!BE~v>4BR*%JVFzNnB)YW=D}ssKz8O+LeJ%Cbb-|vNsN^bMs!TmE-K@ zLJ{C8A#s2m6V`qK9jK;+czry=K zPn?(CM~Y9-8?wAoY8VXW;pFfpRfBZ_Gng&3c#fHSGK*9>Of|iVhW`4~>@~T>vYAIR zi$+vI2Df_=TuW|b0~>Emq_pPY2D}PfN#g|8ZT*K58vOB3X@E$A=@k11b(u|3H7wpO zg|XkgCHU}|loHw25-Gop{h|XJilKZG{lRtGIDz_sRDJ4LlIGFmq1x>9AJuwA)`{tM zJ8%r*T;MZc&fJpz-GrXP#IN`7CZEJT{3!<&Y(F;{)k9hNDMa7UNO`wpb?8x=1leqr z-VPB8^>M(tM9Mfi2J$hVF;$2$6k>fcMy!HEkii2~CYunqUqUJl2t`hM8;uky@Z*k~ zWIfJB4ebRgh8DWOS>23O+4g?tK4Dr#x&7{vC#<>EJru*~w(BIJP_l3@fRIA7`eZYO z2ji8)5~0bkSA`!r)?dXWMj zEJ6C*h`gNLxgqSAW!kTCT&i<+n(Yvf+q*+5V!g+F`(c{izxVme-|DEg{kY7sC!8ZN z7(FcikKS(*NQUHJ;V_-0s8x{xZ9HPgQ>2h=>?2r)v*CY}w~^VTJ>a2bezCx7+=!y% zSegRv%u}eM=ybMM0qR$x=!v{Jc()^3vWgr9ixnQ|6ag9~;dQ|xF|r|8hNJ!^YZ1My zoEf7QA~9toN+%2~s)UDci#`*ov%+tqm2im0Hb#z44#o!7|E_EeEfCq*$XUt%UGRKj z`~PD+|94D4fSg4#{so?>))*!o6F7d6a-{llNsCxQXitbN;uF8EvNF4JmEAbDabhoV z%cEy0G)bCuOnN&wu$0KXy;j!5z{rc40qtlaeuoYr)zR(mOC1A~m{8)=ocba=J32c$ zGoySV{FeNN*dQm3-FEi3{S|UfmaZ>3IUZP2RIxuIar>oJcnaJ9_B43Z3v9i;u6e7! z+2ZbNx$gVMhFG7^>$E;OCv|z6v%NInX|#H7dq@@EleI7E+D=@~nVhi@`Jlf#%LA|9 zd%PZ6o~FYR-QvgA_^OMkV~Va_4{)eNznXz0Wgsb8Q6r#q!$2Qd<+|S{Ffnh^GZDEf z(3DacK0ZTp6I8re*$cep0lPLX;8$`ok_P>gGHVS{596Y}(O=Y5B4cnYNLxN3Np?Yh z$f8&!-fRiIXDeTMPv75AFu)(8!4f!)JCRRye~9=A?=dhI9#wvH665CQYA}|=P9iSB zS2f0xK2u-DR`vTU+{P!t?u&$Px212S{53Bm4%~Pd`-HCT!MlgDfVTP4NhDsXnRsHgV0fXv{n8Hb|FJ_3SWN7+Hiv%i)Gbe=8viLX(Kw_ z^}`ZGITK2yYvPIl_Qq-&SwK-kZ)*{+4x&u+75@!`|qo{{go9jSRhfrVBI zSn9(PomZ~Volty?IL>TdH_Y`pGO*Fg8wd?WtX>k_|ke?RJ z)l(S`D}7iD<%C6duScxl2U|y4yM8f_Co=f#W58n;!*TKj0O^N`8>yT4u&r8sFE`}X zJ=mMLMAS)EVf2B@|4}NWjqSJ@9gWyaL@WAe^t4(@cLPapitoGU(&A%Q^!|{hyt$C$f4_emor|Agoifmg6M3<_> zKEy)=L1>DIDVwb1e&RGo1ambepM!uUx3zkysk-OYWv1 zA2(hWM|*A(o8O~nXf|~ncRed*cBwUr;z>U6_;DYAi2f@s64gHtemp4}>QEu;(kdH1 zYE6+zbYHBnDSln>kb`tLP7%N4LfL5F#stz|3KzWM-!-qrOizvJ5>1b|H0A%D$cC`7 zjiFuWJjj26QM9u8YqDZ-RnqA@UK!N5kCG|~3_bsy=*{)yAFLvkz$VOBZh?Y(xew`;8YwGkUPbar7 z3w<}!e$sAP?vedb&<&6*g=Jeo_odc+eToTmw+ttr{BqJPA3vY8?{Q$F6D%N$tzCq( zz07sgx`%T{xAk_#VT|~C5^QEk6L0;HLmOiXRJ%Xj$2T&pAHg4ur+Jq<;jt82E6fcwYOm%S%NqHIppU_ zQ&??h|A;Ex&e1E4nU7$FPUc$&GF96glkhSrTG>N@*ei_yiU=Ej7xQ(nPNK~JzDQb>!g*mxclTe-`D0yHQB^Nz~6I!G4B79(`v zQX1{G4mu+AhSNgXbfGw9rh&hp*zWFd!=hQ|_KJV3kpQ=v^LC4Qjo&C7>7W#6%bu}d zcz{>#o+VrQAkHJA^Y-U+^2f>P%LYLJxA%G0<(jEQP$+9Z6hso7W!qQk+pyLR^la@O zn7sL9XF|n>Zfy!ey0#;oxjqpI4)C`AjmWme=tiJflKL#+3O3OCw$Tr!ft@21cOnLn z|L8NfA+PxY`93*i;0EI6Kq3qu600qG!6R;Js{UK+6PU(fHD%DKu|$?Im|}no=Jdh2 za&^Rdm+%bY@!8<$fKG9!LB{09ZkOkPT_F1!fop9SMa~u|_9Fix^@jRNo17m%EQHSJ zmDYTPY#Rg$v{4r^mNnIn{Y-&Ad0&Q&TF;Dpqj(wv51&FKN`)FoKkkKC3tmpK8cqcz zacb|$SF)-ePpeI5?W2a!aRGB97XHpkkN3toW|Dk%UObdM0tg&1sqC%zA?xcr5pY@T zJ*k?uzrWV#kEVgtG_6V~uqqfwf|1oUcbhkCBzaUE&(X#~BC}K!C21et?lY*vycRk3 zKCW6#?XsKkzewPV1=`$gsFy4xLpeI|rSjiV#Xo(tGpbQhq9C(&VE|n7KUK2YHo*^d zIt3nuu~5zn-x`Ez8vId={3CWZ66=9VMJ>d{9l&8~YUkqeus2A*JuU{Xcri_lz%e1F zRU_0X2+gx)(6X@y9Qqt|?1kcG)NQl`&Q>+3Y@}wsQjS3Nvm?s$Kd_SaXYT*rU7^)2 ztx81HR$=7Mbq{ps{{!GqZB{3e^cu=3%|dI;MLv54yH346$8aC27b~=idKRpX!?~J% z8kX5WIDPVGR3`R3#9s(Z6Zv$5j?N^dX#sD4^CCKfb5}zNrFGGBi%VTh@`#w!g#p#9 zj#Fn&gkw1HX)wyfoJ|yDDdn;_HdsDg#9BzknGw4@o$zv$CkH6S%U$TfQeN#aE(zC( zCm46|SXD?Yac;6cJ)H8c+oaRT!fzx6Jm_!G2V#jEN4^I z^M~Ckl-_MdjtiLDev?2kLr^l#+n?e~#7jcmF8J{EHx4?=Gd9G8y#oBv@bY(l92>j& z#qVGTL*jhU*Y4d%f<_|Tf%BEgRa|CW`4lwV3X%6|%I*6jZ33PA+7;o_P*pcg6vBrd z(y#5?Aj>U@g)c=Ds`^*I&Xm|MA@2VECLG36g@+M&M}ELjmxBD6UW%dm8n)9okIE;{ z%=bOkRlQVdC5!WeQVn^>p4P76WC8rlPP-=gZq=cF$e^aAXuRFg+dl$u4Kl7kYT@OI^_8O?k$>-u4OMWsv_6QB1R zJSsAD;5K_yyWP6mqoTmy@HEKA1hFo|IgX(BLbJ>WZ`x-Crc7MXc=v`?$`V^fKphEz z{y)4NhM>??1&MjSfX=8Mw@lkwG6c22iL9Z@C|kgdKJIuWfBu(@gfU-J?YIj~6ud)h zHN0|{cdV#QRoJxM8|wkaJZCK$>QEkeICK0RrwOvf-CSL zULJtKx9^PHX>w&u5|!ya2I}^N(Go0&A_`4g97xOBI);g?9<3D&l=pV1Z?EB;L3NUf z0y?}nHrj)Yd{@wSnVq>5dsnFoD?f-VFVc-aZNE6^qeefvN>Kk67Us~s(2ri_@7RhT z79L*isk~UtJxar~JovT5jQ}_rBoTLaV|)cJ&l5E~Mp6>Zi08Nsbv{A&8T1*eYG*NI z;n~!AA|Q!Yk#}@7pw^;d?$JTpq2_P>fCaaVFbUJ#-Ntq$PPulkFxg4>a4;GUbMUjO zu#1mDV4&nu@4uOcP9?-8^lJ9}d5g}+L#>%pNZWmjp+JJX*2ediGg*&9?}%lBSKtFc zpa=~%w_3^4wRYC8CX8DV-0qp~_2$Jody94f)Mz;(o?dd+AI*c!v!O(raKjcYSHE4X z&=M}hWFe{zbp?=dZ=V|czduscxpq>W=h&YgXV)58te^ zUiGT6?^^Rhae)i>np*rL1qlR^UzVfPx8-QtWW?oFVSzvR9$ZoXS>5kWoO=xF%2@it zE-(z9WH`{YtCdv&#g=@o+1!N#lvRpK&Z*+F#Vb^0oUe>dFB#@j3&vPRXu)tW!Qy4J z)6IG?lvZjGpJ%}(7y9#Q-5<7>t(a*TZDL>tV(PfW!ZX=U*tHsoivUM^Q( zw*x|K%^r(WiOVLVy{qX3A(2=TG;%ku5TqpG`4U%q)?28@QhfTYc+Q`&TLgXeR`2q< zbB_3gTW5Ur5V=!rGMj0^QqaLc87zgnSIkSR5#H*OVz1**fXQ195BqQk%;#GRi9kv> z;C-H#S}`9EC8g5ZD19>*Gnu6Z<>W$%tZAnhCS_6)17>OH9nR|Ynk}c&;F7++dVvqb zN<9fX#W0}j7g4nV$1gd~_^=So@VkEBrxbWap+CR4{n|&tZKVsybU~*-(=|AC4PSn* zaO`o~(N0Z(0HT;VN-hxSi;SjNft!ghh(~NKm?b|*XRa~r(-`~O!8vI+=1f&sfErT#oMyFX;4$tZgM&H5rxid+p&F#A%T$q)=Q*0-_ zU6*jR0Ut8r&~3$%*hLVWU#X_R33npRMcnB&!CnX$)ehn5>U@eUVLwW+78SPbTKVD2 z`0;JUjvGlkdt{;U$`uLp0*1TYo_RH7k}68GKGHIZnPQNYvwn>t{FXBrr>d`tC!NtJhWCNSyMow8zH zAXf-rM^XJo;U$PdR~b-QNWB;&X+}CF#aM2+27}X)qNZkuNp^rmDqkvt&l6;+0=KaS zZ1n-y3x3(0uzL1)+SLstj`kL*$|h0r3h-^qpp;pq>nLzD4wzo?2hyjCZRlB{pI*#7 z1%ra4Zrl>q8xLIY6;SrBc32g{oud-bvCRO%hI;)_QnIx63;UN`|6y|$nczxhrS(pY zC1SGi+1D9w+zMe4gQStS!ow2x{CG9`avqqmm}SA)Y?t0Klj~p=#@K@1f<}yGLB~6{ zb(@#dZ3Z-rlrq&wJ?^V=pNt?W8ouu*pQa_a@2L!^elKzE+aoyAxPlkXbn}L;VIzT) zO6AZ_CetDtNZ0Y@_tKY=N0e%9Cz3C)4M&|1J2r%BFOm<@p#DV5#l1DiKm@t4L&LB* zj^qb52Qx0^q!6>gs^#_z?ayERUwbGPN~#mXaCj(I)tmOi+68_T$9n8NdqIx|JzhC7 zrlJ#gJ|sauIx;yz)7kkSL82DNlL_5MkxYH~R(HU=Loz^BgZ__`VQ&~=|O z%r3vJpQbkVLvdFO-F2=g^B5LENn%0uVE(e7&>`3WsYn zk`3geYsbn-mqw_GWh%?ewWtWPy5y>2*ROE@5B3(pqO$LWK%|NttnNn|rzdkiGA36g zMxkp7bo&rBLG>HIO19SRatwI0zO(JekgoG)jYqY7qY(jrywdW1nZFY*7tHt>N;K>ajp zy$ucQYnOz5h>?u~aEp{jz@6P{~ ztjr<`$h7!aek!H= ze2eMb_w0!k{UqaMA;?h(=RdS7yj1PVS`e1&4-ih%K5AhKb|*?$FHAwEGJdr$gXW-t zY*Qp7jbJ?!FPBySy~0d@x0M`TM09E(|9S#toEpk<)lw~E=Dn95HAPDfw1z!Brha^w5L%7+K8NlL|O$0&6l6mh+k*v2!hh# zo7#_%(4QzMta5?moOkpigLZi^r1J`mVmx2XeCdJkR`rG@L-Wrb8PK?-)R>8XG}x6v z6CmwlF63l@sf&qbH1+()^4Z`|d+Vz*A1DoRg(8@%GH{O%3*PF;Y>en z!3BT=?H>!=C&um-5G5M4k1lK&NqKnaRB>sQn%w-lxl)9`O2Ye`pJ(R~Yyy~C&Be*t^#%PFPi^P~|vaGS^QsC-~p{6yvWF2O7 z?gbdty%^^1bU$67`3!_wskxznu3zuxYn%BXWGPM66hteTL934(V|?&6SSmepS}weowey-=rtJTkSEn$v!z*IO(t zU75AAG$f9!|42cC@$Cs5MZogHeye5dX`tols6VZrI3IN5vGx_v zqc243-B+L=G42MNWF_w^0t%BP75aRHuWS_vE$1vu2?PyH?P5GZ-HHq`@SHgm5ggM8 zIY(6^4xzWA2g|gsJ)e>KctMoLh@iUu@^CZI$5?$3Nc@F3jZy_GEfeN63e1?$XbF~L zV-Nk{NDQ_kA)lWVBAcVH?ZOZ#usWLxwPD4NEBh4FC5F4}h1b`FUd9Rj>ETW#bu9iR0m-4{mtwz|XlLqEzkb?hp_dm_Tn+!Hn11p0cH?@P_ znWr&cAUck)P8u-y`Si9?Od5|$8~j`oac{2$JbMn))lQ0eyF|l(gFF6taAYHjrk&zy zsg-KX>}6|5N77aYs>tiI+=))dsz^ZG3H7yB4p{ij!&PYN6T!kYaV0BA90|V233z}` zo@P4PW`xJkm{jRWEkWQ&_b2YHcE#7&J1iYyEk${z?E^YTr|!!q=$5bZg1CKCoBEpJ zz!~c0ajgpqIG?%yBBvp82y_>>Ul(pdGVEJauF5zI1rmeu(c7 zj98zKE>o=+w$|jOHgm}y(Fni!)g=iP1o2}3-h;&<3KARCXh(MiQqaCBf_avg_g6N^ zUSOq4?*JCvE{)ApV*)n0{2g0(sgQlX{U(1P%hc0m#rJ6|(~;Ys6=71Qj#*QlbxmxX zx-+QzVVQYZ4$Nr1clz(!+#DoEi0rHk8$n^IVWJ@^Q2!uYz;x&v{SKdW@bKY4Redyr zJMFR$TXUJiOIn7Qkn*?2$dwS$HDzt( zBxg$HM;VH*w=Kr}B&$W!S8|&JZN#bm-J(jK?hB`7>hI4sU8dYmpKiF&IymC0U^)g! z(SgrZoh>*Gr%FU^1hN+8bZCBYNvQ48_hZw&V8G4#{CevacXCAIp`Z=m2*_7_d zJ4q?K)oi^&g9@04iI3uyUi-N(n$GI#uQn{(QWdP`t~O_Vpo0pjlk|~aj5w>tWRZ$& zCE{mf4m_fa8SCr`4YZMJti`#1r1}Dh)D=XkOZwbgx`S4R%;4ASfI_@!tYA|V-Z54# zJXgw^n#|k-OOy#5so4tgx3fI{J;X#sPAN55`;LjY>A99dnLQcV_-R!ELeF}IRC}q6 zerLCeE^fd@-i~)?{97=4DN@~f24j|)POOGp4n$$Tn*$r!BrfjZFU*oAG!W2dP}Rm{ zfx~BcbJdN8MIG9(_Mx+gDAFaUNzj(1CToB&%6T|(m>X}Gs-FGpI8FN9P$d=^PUqM;i0)Z+lW6A|Z4T%1&Krg~*^T4Ue*O zbiOBC9=$uxT4$yMT*hvLP}B80A3P0jQ8P@n7_<$C_{gFz6`sm86@kC1oL`6`I^CFl zDoQEc0r9NARAoye-$Ecd5>Q|r9m2|^iUO_+O+(d$2;O$PGWaiFd4S%eDzfb60&l#*iS5~u{&MA;c*ps|O>$4Edv^$7(=$b6^{s0Fq^ zn)z-9kSQ@K&4#fc@l*2I2I=JJzqlL1=eilSjeDT(H4X4K_M)d^c`uLGGUj{WGoYbI znTyH^)W?`46cmki!~!T7yl|9R_!Ugl2RrdMf|yKtjpQ-*_|wq&QeQ%7V3NgxGCF%P za&75kLHi!nP=1L#8F+T515bIa^ky{&!st`=3NyM&C7IE*F{s}X)`-X41U%~fmgF98 zlz~S>kLr74wVxG>nlh>@mX66Raj8d}rKU}%7cPfyKhO~S9094ca%0AMaYoeFTO8(V z#ccj1n`Ys&riyrLmi$qNegY?*TL&o?=svs`lwFPAd{M~+jm@w_g8#~9$Iihh7vU_C zjK5cNJ0Jgt8?3L)yv;)xr;_NbjL^&u_9Ww;TydT_sKmQ=>SUW>&|o$e7C(E6X2lC= z4al!fZv!3h`7+Gy?B8I%ty8tzV^Q0X9ozzT?wXKK z5_IHT-)O+3IWzw08a>ZoRm-*&8y`%c-+j*$i z+h=kU6mIU~F?dskD9;Dv5OMyEYEkQl;ml`z`1-}&?S##q70a*VovMXpUqB#sN#X{7 zPvA~kj7WrBiuE%T=2b#kN=|}#&-U>^!@`JWvcWi?d?2P=Nvhz4fIbK#7d2%yy zK=5a=1#?Kal{G6K4TpPpy=_Lu_f#`QR^#Df;F!$ptB6rNH1Gt<80KcF(L@2z#Xnak zo>FaC1s50?v2!htnGFZPZ>nxERY#=MC^&s$H-f-7%?gjAQf2qe_*F}Q355yY7c-<_ zp0(gDi*l56L#$i=T?p>rO}^NBCgL+z1jjgxxXknh0ecfOAL;`$!toiFj(iFhv#wH# z+D4yBOLp#M)jB>VRGoC&aES^q#4e*W#LPvE%xaukz0Z^E8o3jSi*Y2p^LZFq+CjA( zH+X2|`Xm4$=jNQ1ro0p11nvR0$EbVcyjR0av=`yy8ZNPX+1o3!CduKgBpGI<%JGr) z$yXBH)I1%r`X&Dl++l3Uo5^3Bx~6gTlyz~?C1{P?z3V1BZhTl~PKMiUp=x_?@0fLyLASxm%rmsymar;Ue7<8EDOPrvv4fObv0*yVHpn|VT~DFm z5#;Wt-NE@i-B7X&T_F$r>zCc~#$0eAMBudHS~@cO6~n&11b#O`sz{`}YaI^HNNv(P zM0_3%bPhNeFpF> zK;EdoMJq&g@fnngj*-VcI>24Ez;7WY7;$EZY{?`swAmWtb6HnC?$;ofUf zw~Kb31`ugT+x&eWO}0trLrx@C_i*jMouFP@*A0K&=H;W4^mbS1YPrQbRzyxb>I@y= zqh&kn3?Qoy+*=|Cqe6rBOO9H+VUv2?Df#Fv!dbEn3XWfMNgNaigQiLG#<|^=1GYFg z`tsgtRGW!BtpF|g-*S3z5^87Zj@EzV$jBM-s*8$lTg;AgqT z4$YFrMjFz)Zr+skM08Ew&qRG@ganZzf&QZ{k^F;_{EfkPA4bwY-Jb^!-K>kNZLnlp z*;big@TX6bsh0P==8YVRs^EzmwE)Lyc|SZKn0^ASbcS0_9(K8^h@*tr65|$TbmV^K z7QGpnpG!x(M1EF2TI{$qrth2@{hE4T&!aj}$22Ibn?KP&9faRI;$>Z0!f!j9n4&$| z@;Q(x&fW7+BQAP$p?hGCSdYjF^;3->yIh$$@$ZQ{`UX499R|h&>vpRlzV>Z>l4qFr zz}*F~v=>l7`4s|kuwK*nm~3)P^-P@W(y9o9@ja6=L5VSzD4?1jl2T*jtbS7ONEm`sEo z^Ti2_J!UiThWrv~WaMH>y@=>;^}H4Z6i<`XX(P;rb8hZ?@(|uc)fVnuk}Y1e9Pe1L z_Z{4Zl78SdP4#R*%SgYGcrk1grr>1$s{4_nl`8tfU1c_`E%}~{Dd*y~gi%XF@JzT> z101MKm&5i?2*-ns-q{K8!m*xqn{J3< zk^e%BhavgXd%WxT&exN>^eaWG$LzLtTc`HD;8uiL-LqLQe;@~QEk9$+g3p$tqtmCa zA9zCtnu0OV^M^m1H%(3I<{n+%s2~b};MeLwAk}nF=NuZVb@gBjxYqAjz$MD9;nj^# z1jbRRa-}{kJC?BcJ8D*9jOxmTxTC@;?@?a)eITd4EGTkH({b_lCmcpeX9-+$>?9#R z9+9OolFAC%E$Td{+UtEB^fUxZ2StqTe6=qURru9XX{SLgjmD-1@VfUkDZ06FI(JGh#^6= z3XX7+DS-uJ*=O)TR27RQgJ8XS88vii06EFjoVj_Dg=#rEMnRt-Sx+N*P~VR{46QQ8 z`zcCTT|mgtYmm^nEFkFzMKLwzMSz=y+izF`)*m}{oDAKB&Y*#w1hDU#Ov(e!R*t;_ z3`k7SI85B?Qc2OjDUE#8C!}V?oH0G2)2{i6*Zl*^n}&d9L_bnN6|uL9hi1ZnWc%H*^EEtye(A)Ix?|W3swb2|NKf?xvoM^g8W zFigi!x;293P^2D50|{8F-6BK$?O75-LL%;tAe=qa7`3LuAv&_M!rKdden6U8S4fUq zzEDqb@7W}El~5j&&AC}*y2AauW7M+RpC{_un)e1=`t~l4j0@6F`>~#0w{lp6jq--l zavce4v)5v)yH(0M+zQ9$EdOLDUEPA4b#H`j^a7scw`$sCGKH4N<_tJ2z+JtKLiF6h z{%wk3jy1+#k!zs3Q_%U)RoSJ?ypR8{`|dV6GhCWhRS5YcitT3KjAeVqvk3`jz8q><}!T>^{xN@!Ve;(d(1LHy~{ zT_!wfrWpu}wX9|WPi_aswu{EZ5qlDSViMC&Qu3W|~C)C6AQCA+x zavd(J{K!SZE{)bsJX~{?AywIKae=6S@hCL zH1PfM_Cu0U2maGRA1#^!s&+Bt zk4zk{ZuIH5ls;c0n3~1)n;0GKXW_e1TQX2b#K>oL{GM?_J}@PD()YiS2EQ~@W!GGc ze*I614y~Y}0ts-(vWAV%&NM5$O}>NS=4z|zAYyT-r^M_QI!Ud?eL9c>&Q!|J8`*`z zvjX#Vnh^fw?2KslX|me6gVT{CrIjxpF4>Dl>Y4-LZS(T~h3JqXc=rgjJ@e}NBlQGO zlx331fZ)MhN+TI}hYU+ucf7VtRs;x823NfGc{Kdim*6||1bRtjq=(DPb$Lsx=Ja-3 z+4vCTX%`oR)r?&%8UQko)Rv1SNXGu7XMP#=B!{-f+?NsQ4w51ENg2mI3|z~y08tr| z1mqyg@J-xcnXxGQ#@huRqzfJ}zak?RuK5~q6i?3)h2`UzM%U|u_ocbhZqx0o%b)GW z{_5wwLV<{Iw>AvHQiyDSeie+{eicv(_uE1P<}M7~%-Ul98!)aGhUNHENKHxAuukd6 zkv|o*K>cO%ia<85(z~iCh_AJTzgl#P&lR=!PW&Y)_HF|kRi18GvR#EM>@N%1cJF7? zGS!(YoD;{RF;M8e@w*o^7J%l^R)5nlq16A(vtf>%QzeG!1*RZ9!&)1icR=GM(^yL6lO>5 zAuddVpwkAQ+*wojp7!&&1QVY=GSRuB1Shq0D-*l2%8bnVA9nZP;hA~C@Pu7S6T9ZD z)OT|%ZPk+By?ve;o;6xI!g%NYhLO2}5! z!_7)U5~D$#k_1wxp6ku&e3y=+i;KGti6RifJ>g`ta&$ofj|Ec3@fc?~O+6yc?6Sfb zar=GHoovrHkkQb$U{5xqKp^FH+M%iV^m&%&jQ;5q%faS#E8S>kF79eff_o43V`$!= zHoISggD!k7MvVR{r7af>YK#K4U=O3H=qtR9q}ibrl<@TKi;5J>zcjI|WIw_th@C5Z`My82elakkW4utdgy#{zWac>S<$_DYqLqqoo6Rz!7|@0<;Nb9JUMV-FqR zd3&_rUqP@Wb0YrPMophEIjq!GGHa311>T4^r zXgYaBU4YwyR(O6ZSgJA;o$juzZ}>NwXw%z#GFh)-Wg^S9ayQN$@icBJ)IST#iDhYiA z0>#lz*n40c_W77Xab`Wu0b!(P%cv`VVW@l=jnR3ZpqG*&;n{P#YXXq*It+SfU4+5yJ7`CO7Z{o z6VENC!l$ca0r_j$Hsf9%>uyp1vWpJd4VBl|w*mCci%Zr&G8U&DLFH<4Uk)H^#3D zJDm%O?Zcb>w$b>0He;I@zvU3RNB>SiFs>`FNKQ)L<{O*kv8r(3_7r}W}IH3 zJjIMMRsF-M1dHA~x4X^|D`*?Z9GJ3K9SG}Ya~LT&Yt1|LT@3#7%IS6sXNwEWo{abKXT4z>RV2cz)zcv%wTpEkiT-EKCtoaSQia=fwbT*=t=+bT}9?p2yb z>s4NlB0eCceV8^VABeCE6Riq_xz^SpunLe9ws6C$D5$tN#g3w#b8j|XBKcWO^5&j* z7B+_b&@KZ!d5f1beToydAxxgUKY=|mylx39*aa*)@%!J-BvWdaNt$VOFdqAjvoy|3 zxm3zi{KZ_@;XfirT+H+Hm7!#Y-v`gX8gf?yN5U0DBN4T zlSG$!6i#MUNlYh8W2$|vT=tImr)Ma48*gu1E&&S+{1_13()~|zmM$Zng~`jk@tKoU zSqKqd{xiB=Vc@q_RaSjp6siX<^y7`>oLvYSlb+$n2$sXspvQayX*@oU(PAj+jCdfxPoE&YhWF z5NK)k6kc9QXGNk}BG^#qRv-@DM6@Tj_<`uo#quV;9lCk2zJM`l=7dBE`9s6R5$|J? zMc5BY!{Xgy>L4l*^J+yp5*B*Ia0o>sY7;a5k9g=%A9!>h{g_|LY)&iB_;=g@hRIG; z$maGGv}L5+2(@ca9}Nfu>Qh8K7v#tG0$@XXs(vySHQA@xif$mx_a`rAAjt zzokfHhk0cQ-6W%!ih1!HxYe+e;PKy|))uBlEq23S1&kTqSLfHZXS7Odua#e(&^!ZVNre;;bh(>3bzFbSPCu3ea^m=J>)*`I5*B7?>Varq_e zy&H~XVX8QLkAuN+Ohh6W9L@p>Fs1g&v~0*HT_)~gyho7s`K=GUopbnGht2{fFojPJ zqqB$4WO9?cjCxTbddGi^dKat&xummvEXkB0xvV1UlHkHNG9yZK>voOixH#%pgi7TV z^4-GnK~X@7 zkk^OxNd!k`LMBXtwBE2BlEdD23Icj>RfB|_J>G$L0&f3`h=wf6(kd~S2}`lra%@b2 z&(j>D#dkCsa$JTAwg5N{-@`LNAsA*r)fV87)d?Uz?beY6ik7Z!DUU+SHq`NKbyDWG z3_ZlOoj=gfN6?ZE)TSfZkdN@x7n&-yHob?Z2%QH`jv{^35tjc)QOOtW5>_^#n&!a+ z?&H7h0JjRpL{S5kjond7kgOd-Hu5__Z!O9z-$^Pd76h{MN1!lvwG&vdHgC|?pw3uL zGEp%WG82tB&u=NMoTZI#SESa78@PXwC0&6mJNvon7Dw)8N^i=%b2l*_vup=zg2PK6 zdfSwq*B5lubsp`w2#Rq2w`=m2-lORnu@HT$f`&;)^TXL;I1aMI8d^rw)=QC%1>RUP zDpZqjf03zOn$D9wk&t&$Z=^)JN80LvJ}=&TZE@J?^*e6d3V_ys3sTRl}|5}P#3 zu>qbnUh~T<4XjeKf0W(>M9>;WT+vL15FbHMxQ_`s$XxVgMyjaC;d59_$gJm2sbWZi z6cBc~cPty|LD?(R%Q?hiV-9fpfEJ#Kkb~s#8q9LO)$q_7am6?)MeJS;IXUOWIt&Kk zVfO5Psap#V9XB$!>-NheGcNWXlkh40H>$Zex2O|R=ccXA6hYn7HiYGXq(a<0rY*8I z*kGZ+wukQ8=j+T137Z-5Uv&px&k{{|(kd;P!5Q~czr5NCbSf+`N#j__0Cr+~Y3?IW zdTi5JuP6HqlWHki?*h8(Y18nR1oa(TL-QT`3}iLZLP%OW_Ea0ldD?g7ntAA#S!_#0 zg&&}u_IJH|`!u!-LQ&W+z^yHwxvB4CP|4Zb1O!Ug?w%Mm0UgZHxF^p&hGq&*i zD85)PY0*$f=SVXYIDXg8jN%Xfq4LEPL zaT^*Q$ijRH+WIV6JmSsuEXLJQ1%l;ObQyU}lcYg^u4p)Z9DvHb>HRDiSG|K{)1Y)_ z__n#<+cQeH$jh~?ip05Y*MUacd`|o6)~m0!&3h=6z5ugXXobji4f>SkcZqhpM$0pi zZ-JbYO_vT?lsuBeC zzNPIbrM-to8~oC%h0%if8QE4e^h-I9E)@%X*Jf+e5u%i8GGRpOeCU|w7{V@Nxz&sJ9yBlr`wQEw)OC&84ZLqO|LG8m9{YNmohN#J$t)T-dxij# zhT{-!usyGJ`Q`2=lWr9a`erYeSvMt48`)pNFI9C1cX#xskm?vqJ8`G{TbM^ zz3uW^N;1aaCY9t@0paWJMO!MUG@>3d)pm};6l4`=JAk!Fl9v|a=s&KE&--GIEIy=y50XIY_^V=J8o6k7k;(rS`kFLTIAbV zU2n5B5TfG&kxSLcz*mU*;gl(U;2_EA*ox$XA+^s)gWSl?);CFemjB2j;5%z_Cef;Y zt>1=L=~@%GN!ah^xmqUpO^Uaj+FLh%h;G zPD!-o!!xhKZ5fi@ZD4Y8paF%MkJ@Qt`EbnV#odhlL4Bw%qz2xE9FTKTWp` zW_N}DFK62s2wXAQ^(X);EZs_SUKm5%DM;<689tFoWaT_8#P%~sNCMXgv*ZiJMB%P83NK-olkj-MBWS^qqYz`Ss{~{iV44wOeryo`YN4r_&*$L-}|U7J&^! z3e4sK9tm-czUJcTDW;)Iy21v?c{obccXTyH`Gulc(+TIm(5i>1>$9*79R_;rR9SlC zo{YGO_WrFF_AU_dUodqA-R86dzIH-;XU{K>sk2I*$_9jBeSrcoRATF9>oKivHek~hRgLPsHBGJMh``Kw!rBceu<06u zB4Btw)J2HbI1)p;-q3_VwWisyeGLc5V&ihZ}coRe?k>B^&zpc-0OvLfGjshaah#4VZx4Ur3(B_A{vaL9 z;Q4k8=?3J7Jzf88>-d+}FEg0=T52Q_7mOPbEor0#xq$`)XAGbFNl$MHC0DPpRnj&q zJ)zBroOv&s_Qr6x1)|(V+spVefxQiX3=#j(nru=^4q0S~uQi2FZK8BXwM+T+jxb^^ z&YAx&U1#tQ6+7iSQEl2YyXO&Cis%`UV7O&?*Df8PZN~%`IBz(>O?X-9yXm|ME5i6* zvz^;51UTeV6fynD?;vJ@IMGi*>vSn7DLqXzUp70ld_4F8l^7B4SADLSuGS(@G-CSi zsNAuAN~e9Bi}KDZ(NyV~{p@bfnSbq%wlW#w8jiqwlnCXc>C;2P;he@NLz>7k%Ys4~ zkU(wQJ=0Ey`_&re1B&WMafN&5f7s;yxNvI&9={fn3sXz$_zf1r(bCjJa-Tlx{A|zh zGyEjWgeb8)ez6_x$THSi5Z<+py;jk6Ikt0_$p0R12aSugYqgRde?{8b^4fWnQ0X7!j64W8*A|RrhJAA;R-~{YX7huE6{3|)2T|KEwepRkp3`U&x+cx>`*MYL)?CGw*ahz~%p zoGSe$U(T++$dgt9KKI_yE+bZpX5~J(3pU`uz;jEJdQ<^Uo;QBa{n5QI_EG zbaeU=b94({fRnn`Wb=Qa^Dd`y=2g|Qo|3&M`F}VrM;qPC&3-R)=<5D@EumTTXD2g< zLXRfwdYAZ7_3}uWT7hK8V>Pu#oe5Dii@MY}#XM`+a4^*C)oqi>! z&7&!<&^9Rt25Y|(97+k%Jz0g1oD)uj#I0>WOrao{?&d>gx_YeZO-jkd3h{^&0t6yu zJs!AADQ@2;WMevgd%B9hHH7J}9M}UK)nhH^@h8)fUey)BpRM(FTCoq9Jd2xT=s}PT zT)9=Z=K)#_^PQXH$`7PHP#;=;S^TMgQrdw@W*!BY*`17sh5;NFbWf|Bvx|8D;DY%_ zd~z(3n{SxVm_K8@Y`kr><$jJx z(n`j-(n}u$s1nS{O*Z}NZG4SKs{?l7V9=a6X_;0{mx9Z2Q~>4M9vKuy9YD4?T3clpOn^VOM48 zBdk&JJ65Vjh(>llIRE`Q6Z?(%Bz3UN7K}$w0IO#8?R|`d5*O=7RYt9bzdbd$I@ZI^ z%tDlWJ4TuA6mae>2REqvmh#cRe5ji`$xX}Y#sd&_*NqmdD~E_?Tb z{LieJ9${g(P0-hm!hdJ&vTp+2h-4^hU3B}o?rQHwJZlOj4B^k)pN^IZ zSyBEP_xp<|LR}G8Ki6*LcBG_F_#}FymyM*Iw}mA+=VBQ6+K0!$Opu-Y6;hl#Z1Hf} zw3R@od$VU~@J1XrRVJpYs-%ME^rvyL?&{fyp$F-pir~1J_kw+{vlA#xW9yK4Ix~Pk zn}{0D-=o@opxmQ>@)57ulRLg2&Y)kQWcZ=8f#b}f#n zWcx-F!@oD?bMkEM_DxRwd$B!&L}A}@G;_7ZD&D<{eZSw%PCJ?Ap{;@3+Ww{rEdBo5N|t}^#5v|zQ4MI9%&}n3$zt*)fWjVKQQ-<%XIScv5zXMzCH@&Re3-3 zoLDtwJ2Q*W^2sw%Ss>QBBvTtSk)hYefIfei0d35i@fHX~ZkZa2Ktk*%bfn?Y1Mil@ z%9sZO2?g{w42S#4)txwk{6lDBh1Up9EMj0J%DlYqWnuM>jf0#Zi|&2Wi(SLX4ii`2 zPDm;_3dty)muFZ-+^J-NTKr7vbr+&3`+{5g1sEV_BblWZ`SxqQee}(9y^<@%=UTTCM1q)L04Bt&zrW}>=lhQ1`M4xB zraWH6l>7LCOWOfQs=Y!#26&>3qzbNnr_t?lX3o+O|b; ztCt6i%45!oby2j#g>298QAO{#SSR`a9m6oN<1AAPQ{RQvl=sC1$&kpy%oHVTw}S~H6m z%cZP{gXm;2mqvpRF84wlvH)!>KO* ztHn&Ur)TyJOt2kG6B=dsK(7_onh#aZ7V!I33C^)9$J)&6_FHP)3-$=Q!xMSQVQX53vT@v4Wn2pY8unX9chC*iVQXl8WB-9QOUhTz!gkNbLJbA6E&##j^gC z`2n2Oq~@H~5m3Sw0qk3AVGav)4qfZqo`skS1wbQt2GCB* zCJFOu|98743RA5? zF+zLJ!+zsdBZk><3{gtN%?lI>2_8#y>>oSh-80oULesnX86H6g05?kf>hi?-Rfv}W zK~0F2kVW`=w?-6Rou({7=wFsZj1~JWOo(i#UwW^QUiF+pf`4^yhP4iVpUga%VFFMWVGwBC!u|dYZYv=P3t7f;ulC=XZhQ)tfRq-P@Ez0{eF`Cdd?Qk zWWMyld9`KD+w;2!&}`s%$oxtN8f*}1nS#RHmtu%2oi3xS!y#x!Ss5ssP)1qyT+?1% zKiIIEDAt(Vv7?Gw%BMe=(VB5pB5*|Gs=2#V{W3;hNxCwpkvxWOab= zbOLQ#Zkcc}yHe)mfKUndg!JH>6;6<&{gPbnv4Q{Et;RpU%!}g=CM!E`K6*gYcs+_C zpc67*^rsO0AS;?(nNfYaZ5lTm)?XL2R)Wi<$m^Fj*Suv}>M*~R)~sUG3z>8Bu9rY9 z!`{LQUEas>p=|VYe*!R0rtvvedq!Dl%UF=^DIflHAAQL#GYlV%u+&9;4cjM2-RWw&*G}W>B zrt7)jx3BUUr^h!a6aP$cZsZr`xNyYMBP&7J?}sSo=DY2_j>oQ2_2)s-V;A6VJ@NVe z0dM>43mIG%vbH5cg^#5Co1hd}*lta|*G&v|HJggW=he6ryR|otBpDuQ&%4>X%}?_d zZO+e3H}PWNIC1?S-@)ScAKx(*ddEOy>cgHKmoj!AqZcWbdrY825YHbcK@s4})i+nT zOM97AnYNM~0C`mNQ3QIYLK%9&=K~@->SJ;7=34r<;uJEvp-No}e1~uF1A{UApEIwTq5URa0OpF zPL_>5MIj&d#sOL`mN-77oC@{Yzc&R)i+g7cpvN_C%fTCqD=yi;N4dB#`}JX?Zsnwy zx7`x=PH*`2GBcJE%$52-iB7fch_*}(JkHDEkv25p*r$C@e{&WYd@tu?q=&pre)Zz7 zG9GA>fsAiKc4<42()TZ|tv)V`0aWnTFa>`C0hQFkC9lk@SI~)ugFWf_S)?LAbgQZr zWb}&hr*4p)GC`gO!#JMwgck5gAK2f7nL3Mmk$@YAn|naPBc> z{QR{T{#bpxSz?dWl4-t4`LMnenHoZnHkv{kjqq-H*fr}q238H%xb3R9#;WUxAyu0V zpkB}%_B=%9P+p+C`iv$#xzIZue0^8)co

{b{Hib{85FLC|ix$DY?<;#VPpKuu{= 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 O!XWH2GWuo)?EeA;O3@Mk delta 6656 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 QOc*8#r{UsK)={DPKUH-ER{#J2 diff --git a/nova_rover_demos/pathfinding/comparison_platform/sandbox.py b/nova_rover_demos/pathfinding/comparison_platform/sandbox.py index 91692fd..b7fd74b 100644 --- a/nova_rover_demos/pathfinding/comparison_platform/sandbox.py +++ b/nova_rover_demos/pathfinding/comparison_platform/sandbox.py @@ -1,45 +1,7 @@ +from lib.rrt_star.rrt_star_2d import * +from src.maze.random_maze import * - # analytics = [{'runtime': [], 'path_length': []} for algorithm in algorithm_list] +args = [*random_maze(150, 150, 'heavy')] - # maze_x_dimension = 50 - # maze_y_dimension = 50 - # occupancy_grid, start_coordinates, end_coordinates = random_maze(maze_x_dimension, maze_y_dimension, density) - - # for i in range(iterations): - # print(i) - # ''' - # Randomly order the operation of the algorithms in the list - # ''' - # pair = list(zip(algorithm_list, analytics)) - # random.shuffle(pair) - # algorithm_list, analytics = zip(*pair) - - # for algorithm_index in range(len(algorithm_list)): - # ''' - # Compute the path with given algorithm and collect analytic data - # ''' - # t_start = time.time() - # path, maze_solved = algorithm_list[algorithm_index](occupancy_grid, start_coordinates, end_coordinates) - # t_end = time.time() - # ''' - # Write analytic data to dictionary - # ''' - # analytics[algorithm_index]['runtime'].append(t_end - t_start) - - # if maze_solved == True: - # analytics[algorithm_index]['path_length'].append(len(path)) - # else: - # analytics[algorithm_index]['path_length'] = np.inf - - # ''' - # Average all the quantities in the data analytics over the number of iterations - # ''' - # for index in range(len(algorithm_list)): - # analytics[index]['path_length'] = int( np.average(analytics[index]['path_length']) ) - - # analytics[index]['runtime_variance'] = np.var(analytics[index]['runtime']) - # analytics[index]['runtime'] = np.average(analytics[index]['runtime']) - - # algorithm_list = [function.__name__ for function in algorithm_list] - # return list(zip(algorithm_list, analytics)) +print(rrt_star_2d_search(*args)) From bf0bbe01f9603f1a52e7daac02e61664cc176092 Mon Sep 17 00:00:00 2001 From: verbal-noun Date: Fri, 11 Sep 2020 22:01:11 +1000 Subject: [PATCH 31/31] RRT star needs processing --- .../comparison_platform/results/a_star.pdf | Bin 60224 -> 64793 bytes .../results/bidirectional_a_star.pdf | Bin 60224 -> 64793 bytes .../results/modified_pledge.pdf | Bin 62770 -> 68503 bytes .../results/weighted_a_star.pdf | Bin 60521 -> 64649 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf b/nova_rover_demos/pathfinding/comparison_platform/results/a_star.pdf index 4b109773627cf2f2a7995e0c9781b691c00ef247..4b3e2a3a84a623bffbfbc3aa97b47ba972e445a5 100644 GIT binary patch delta 57619 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

5u)1ILxUxrxw2K|`i3V$5PLn@r2_1ym7TQ?@b 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 delta 53014 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

JF-) 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 z z6-+OYapGScUFPGQu_F_!N}H#P`2?ex8xHl_=-GW5d$kCk3M+3q*;fX$6)&<2H<3Tp zS>AIXt@5MRaiWm{%P-Q9qkIQK-)4yL&2JV%{k#U+!3ft|%P1#$&*i04WBl1ASWsGI z<74^w)P*J3!?s4!F_bW?FE0014D8tuow|50sqC{XK6yV`T(J}^jBdAkqE3+7!nlWDi#rbsXyuJ*%*(Y8wgbZr;z>ew7 zC_XeroW1_xM^)QgseBQ7Q|27a>TzE|&RRZ9#$;1n3@z&_bsAR6AB94B?E-phYiKN_ zs684!HJwr^^^;iCl#95B&<^l3gL?H0itJ&4nJ^f!*xs4Yq~piCMt6aLbAtQP!(SN! zAGmpxZ7UK@M*#iZGw`hr9k(u)pOrMP`0*LR@zA^T{^6W}F$tZ2h1pEP4Fc+%`pDOI z2CjqiJiMu&neYdouk!9uG0(#QT7kWY-=8^W!5qe0lp3^8omboWl@>X~U2Nx?@IC50 zQ=hNFAnw8+#KORMQL%4r`l5rWf9Q)2;EGoyDYQF6QXoaoOb$ZSnEspolp`|{X&m1J zYshVY<@(#CM-Y_XR05|Mu*wAg^);!K@G8<_kXLk>TKEfsiEwi zp9a2oE#+3UV0RhNgaC=r7P^g>!Rop=51}rkpC3~Lr;#rgbowFp60&6l_@JN5a(AuC zBt8;Qmepgg+qaJQ2%)o?l>1k$Hvw#{Y(Dfd-jUP$cRP zs!2L3h+C%mg>9v6X-mkaXeIIQ4As*03fHbssD>!Z<)L>29jwQwA6yG4wq#`0G8S+F!`5C~ZwhzJoV}yz z&td-*f-mD3Ryx0bj$(|OnjwHhC+n%4_*TW%xsB6)+vC|q(uAOumI<1SvE$17OUoeF zOM;A;*;5DDFY$|OdYQwO*zfNs)YPZiP~qRN>TTthwkE5(1Pc_0Fd8Hp?fiThdw zyp4Zb$RJi=SmS(V-5-{8nxz|cilzuJyY714uGj%0D+?2HTk<9}Z^tAZQx}+@`kepU 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

5u)1ILxUxrxw2K|`i3V$5PLn@r2_1ym7TQ?@b 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

JF-) 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 z z6-+OYapGScUFPGQu_F_!N}H#P`2?ex8xHl_=-GW5d$kCk3M+3q*;fX$6)&<2H<3Tp zS>AIXt@5MRaiWm{%P-Q9qkIQK-)4yL&2JV%{k#U+!3ft|%P1#$&*i04WBl1ASWsGI z<74^w)P*J3!?s4!F_bW?FE0014D8tuow|50sqC{XK6yV`T(J}^jBdAkqE3+7!nlWDi#rbsXyuJ*%*(Y8wgbZr;z>ew7 zC_XeroW1_xM^)QgseBQ7Q|27a>TzE|&RRZ9#$;1n3@z&_bsAR6AB94B?E-phYiKN_ zs684!HJwr^^^;iCl#95B&<^l3gL?H0itJ&4nJ^f!*xs4Yq~piCMt6aLbAtQP!(SN! zAGmpxZ7UK@M*#iZGw`hr9k(u)pOrMP`0*LR@zA^T{^6W}F$tZ2h1pEP4Fc+%`pDOI z2CjqiJiMu&neYdouk!9uG0(#QT7kWY-=8^W!5qe0lp3^8omboWl@>X~U2Nx?@IC50 zQ=hNFAnw8+#KORMQL%4r`l5rWf9Q)2;EGoyDYQF6QXoaoOb$ZSnEspolp`|{X&m1J zYshVY<@(#CM-Y_XR05|Mu*wAg^);!K@G8<_kXLk>TKEfsiEwi zp9a2oE#+3UV0RhNgaC=r7P^g>!Rop=51}rkpC3~Lr;#rgbowFp60&6l_@JN5a(AuC zBt8;Qmepgg+qaJQ2%)o?l>1k$Hvw#{Y(Dfd-jUP$cRP zs!2L3h+C%mg>9v6X-mkaXeIIQ4As*03fHbssD>!Z<)L>29jwQwA6yG4wq#`0G8S+F!`5C~ZwhzJoV}yz z&td-*f-mD3Ryx0bj$(|OnjwHhC+n%4_*TW%xsB6)+vC|q(uAOumI<1SvE$17OUoeF zOM;A;*;5DDFY$|OdYQwO*zfNs)YPZiP~qRN>TTthwkE5(1Pc_0Fd8Hp?fiThdw zyp4Zb$RJi=SmS(V-5-{8nxz|cilzuJyY714uGj%0D+?2HTk<9}Z^tAZQx}+@`kepU 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 x)#fOYURdJ8Yvx@go{s$ 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

Y$Qs!yzf}>6<_Ml-z*-AL>9E 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 X{3#Si^4P)xqQat>%*+Z}ikSZo%dw-d delta 53313 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