Assembly Planning for Planar Structures of a Brick Wall Pattern with LEGO-type Modules


In this tutorial, we shall introduce our software for assembly planning. We aim at constructing arbitrary planar target structures with identical modules. Our modules are rectangular and dock each other like LEGO blocks; in other words, they can only dock along their two longer edges in a common brick wall pattern. Thus, the docking mechanism is minimalistic, but our algorithm enables feasible assembly planning without reachability concerns. The software is based on our paper where we presented an algorithm for target structures without holes, but recently it is improved to address target structures with holes.


Fig. 1: This software returns a feasible assembly sequence given an arbitrary target structure. In this example, we are assembling four letters, R, O, B, O, with LEGO blocks.


The software is written in C++ and organized as a ROS package. Thus, follow the instructions for installing ROS if you have not already done that. We additionally need two software packages: Boost Graph Library and CGAL. Follow instructions in the links to install and build them.

Assembly Planning

Step 1: Installing the assembly planner.

Download the assembly planner here. Place the package in src directory of your workspace, as usual in ROS, extract there, and build the package by running:

your_workspace $ catkin_make

Step 2: Creating a file representing a target shape.

First, represent a target shape by filling appropriate pixels on the plane as shown in Fig. 2.


Fig. 2: We tessellate the plane into the brick wall pattern. Some of the pixels, i.e., bricks, are shown with their coordinate. Then we can represent a target shape by filling appropriate pixels. Here, our target shape is the pixels colored in blue.

Then, write a text file enumerating the ids and coordinates of pixels to be occupied (Fig. 3). The file is contained in the package (example.txt).


Fig. 3: The text file represents the shape in Fig. 2 by enumerating the coordinates of the pixels. Each row is composed of three numbers: id, x-coordinate, and y-coordinate.

Step 3: Enjoy assembling!

The software returns an assembly sequence given the text file as an argument:

your_workspace/src/assembly_planning $ rosrun assembly_planning assembly_planning example.txt

Fig. 4 shows the output. Follow the sequence and see the assembly doesn’t have to address peg-in-hole scenarios!


Fig. 4: The computed assembly sequence for the shape of Fig. 2.

Previously, the algorithm was used to generate assembly plans for the landing platform and the bridge shown in Fig. 5 and 6, respectively, with robotic boats.


Fig. 5: A landing platform on water.


Fig. 6: A bridge on water.

Indices and tables