def plot_costmaps():
    workspace = sample_circle_workspaces(nb_circles=4)
    grid_sparse = workspace.box.stacked_meshgrid(24)
    grid_dense = workspace.box.stacked_meshgrid(100)
    extent = workspace.box.extent_data()
    sdf = SignedDistanceWorkspaceMap(workspace)

    viewer = WorkspaceDrawer(workspace,
                             wait_for_keyboard=True,
                             rows=1,
                             cols=2,
                             scale=1.)

    viewer.set_drawing_axis(0)
    viewer.set_workspace(workspace)
    viewer.draw_ws_img(sdf(grid_dense).T)
    viewer.draw_ws_obstacles()

    viewer.set_drawing_axis(1)
    viewer.set_workspace(workspace)
    viewer.draw_ws_img(sdf(grid_sparse).T)
    viewer.draw_ws_obstacles()

    viewer.show_once()
Пример #2
0
diagonal = workspace.box.diag()
max_h = diagonal * boxes_height
min_h = diagonal * boxes_height * .5
max_w = diagonal * boxes_width
min_w = diagonal * boxes_width * .5
workspace.obstacles = []

while len(workspace.obstacles) < 5:
    origin = workspace.box.sample_uniform()
    h = (max_h - min_h) * np.random.rand() + min_h
    w = (max_w - min_w) * np.random.rand() + min_w
    if workspace.min_dist(origin)[0] < np.linalg.norm([h, w]):
        continue
    dimensions = np.array([w, h])
    theta = np.pi * np.random.rand() - np.pi
    orientation = rotation_matrix_2d_radian(theta)
    workspace.obstacles.append(OrientedBox(origin, dimensions, orientation))

# Compute Occupancy map
matrix = occupancy_map(150, workspace)

# Compute Signed distance field
# meshgrid = workspace.box.stacked_meshgrid(150)
# matrix = SignedDistanceWorkspaceMap(workspace)(meshgrid).T

# Setup viewer
viewer = WorkspaceDrawer(workspace, wait_for_keyboard=True)
viewer.draw_ws_img(matrix)
viewer.draw_ws_obstacles()
viewer.show_once()