示例#1
0
# 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)