# little tolerance to not 'crash' into collision objects tolerance_vector = Vector.from_data(data['tolerance_vector']) savelevel_vector = Vector.from_data(data['savelevel_vector']) # define target frame target_frame = Frame([-0.26, -0.28, height], [1, 0, 0], [0, 1, 0]) target_frame.point += tolerance_vector # create Element and move it to target frame element = Element.from_data(data['brick']) # create Assembly with element at target_frame assembly = Assembly() T = Transformation.from_frame_to_frame(element.frame, target_frame) assembly.add_element(element.transformed(T)) # Bring the element's mesh into the robot's tool0 frame element_tool0 = element.copy() T = Transformation.from_frame_to_frame(element_tool0.gripping_frame, tool.frame) element_tool0.transform(T) # define picking_configuration picking_configuration = Configuration.from_data(data['picking_configuration']) # define picking frame picking_frame = Frame.from_data(data['picking_frame']) picking_frame.point += tolerance_vector # define savelevel frames 'above' the picking- and target frames
for row in range(COURSES): dy = row * height half_brick_ends = row % 2 != 0 gap = gap_even if row % 2 == 0 else gap_uneven dx = 0 bricks_in_course = BRICKS_PER_COURSE + (1 if half_brick_ends else 0) for j in range(bricks_in_course): first = j == 0 last = j == bricks_in_course - 1 is_half_brick = (first or last) and half_brick_ends if is_half_brick: T = Translation([dx - width / 4, 0, dy]) assembly.add_element(halfbrick.transformed(T)) dx += width / 2 else: T = Translation([dx, 0, dy]) assembly.add_element(brick.transformed(T)) dx += width dx += gap assembly.transform(Translation([-0.26, -0.28, 0])) # 6. Save assembly to json assembly.to_json(PATH_TO)