def draw_action(node_points, printed, element): if not has_gui(): return [] with LockRenderer(): remove_all_debug() handles = [draw_element(node_points, element, color=(1, 0, 0))] handles.extend( draw_element(node_points, e, color=(0, 1, 0)) for e in printed) wait_for_user() return handles
def display_failure(node_points, extruded_elements, element): client = connect(use_gui=True) with ClientSaver(client): obstacles, robot = load_world() handles = [] for e in extruded_elements: handles.append(draw_element(node_points, e, color=(0, 1, 0))) handles.append(draw_element(node_points, element, color=(1, 0, 0))) print('Failure!') wait_for_user() reset_simulation() disconnect()
def debug_elements(robot, node_points, node_order, elements): #test_grasps(robot, node_points, elements) #test_print(robot, node_points, elements) #return for element in elements: color = (0, 0, 1) if doubly_printable(element, node_points) else (1, 0, 0) draw_element(node_points, element, color=color) wait_for_user('Continue?') # TODO: topological sort node = node_order[40] node_neighbors = get_node_neighbors(elements) for element in node_neighbors[node]: color = (0, 1, 0) if element_supports(element, node, node_points) else (1, 0, 0) draw_element(node_points, element, color) element = elements[-1] draw_element(node_points, element, (0, 1, 0)) incoming_edges, _ = neighbors_from_orders( get_supported_orders(elements, node_points)) supporters = [] retrace_supporters(element, incoming_edges, supporters) for e in supporters: draw_element(node_points, e, (1, 0, 0)) wait_for_user('Continue?')
def check_plan(extrusion_path, planned_elements, verbose=False): element_from_id, node_points, ground_nodes = load_extrusion(extrusion_path) #checker = create_stiffness_checker(extrusion_name) connected_nodes = set(ground_nodes) handles = [] all_connected = True all_stiff = True extruded_elements = set() for element in planned_elements: extruded_elements.add(element) n1, n2 = element #is_connected &= any(n in connected_nodes for n in element) is_connected = (n1 in connected_nodes) connected_nodes.update(element) #is_connected = check_connected(ground_nodes, extruded_elements) #all_connected &= is_connected is_stiff = test_stiffness(extrusion_path, element_from_id, extruded_elements, verbose=verbose) all_stiff &= is_stiff if verbose: structures = get_connected_structures(extruded_elements) print('Elements: {} | Structures: {} | Connected: {} | Stiff: {}'. format(len(extruded_elements), len(structures), is_connected, is_stiff)) if has_gui(): is_stable = is_connected and is_stiff color = BLACK if is_stable else RED handles.append(draw_element(node_points, element, color)) wait_for_duration(0.1) if not is_stable: wait_for_user() # Make these counts instead print('Connected: {} | Stiff: {}'.format(all_connected, all_stiff)) return all_connected and all_stiff