ETH Zurich Research collection summary:

The research collection was published in 2015.

In this post, I am only talking about the brick stacking project that the eth has done.

The machine brick could be very wasteful where specific brick is needed, depending on the overall geometry, also making each brick with individual machining each brick also very wasteful.

Rihani and Bernold proposed the model that has already designed in the CAD environment. The wall is represented by the individual brick, during the design of the wall and the brick, the size and the bonding requirement are taken carefully.

Each brick is generated by the software are used to make the wall. The robot is also coding according to that.

The second project related with the brick laying is the Robotic control
most of the robot support 2 kind off programming, online and offline.

The researcher use KUKA Robot Language (KRL). This language is simple but has only limited features.

The process of work by robot is much simpler than the process of human brick laying.

The goal of this paper is to identify the potential impact of an integrated design and robotic assembly process on brickwork.

In the design first individual point is assigned for the brick, and the information is transferred into actual physical position.

The correct positioning is achieved through visual alignment to the guide system.

After that the robot don’t need any more assistance.

Three wall prototypes

making the wall in rhino by using grasshopper

The brick wall with English bond is make in the rhino by using grasshopper.

For this work I used a vertical plane and divide that with the size of brick with contour tab.

Then I plot a center point of the brick in that plane,

Where I copy the brick block that I made earlier.

After that each alternate block row is shifted half brick length horizontally, that make the English bond as shown in the figure.  

grasshopper Diagram for making the wall
final baked brick wall

The whole process of this work can be seen in the following video.

the rhino and grasshopper file can be found here.

ETH Zurich Research collection summary:

paper link

The research collection was published in 2015.

In this post, I am only talking about the brick stacking project that the eth has done.

The machine brick could be very wasteful where specific brick is needed, depending on the overall geometry, also making each brick with individual machining each brick also very wasteful.

Rihani and Bernold proposed the model that has already designed in the CAD environment. The wall is represented by the individual brick, during the design of the wall and the brick, the size and the bonding requirement are taken carefully.

Each brick is generated by the software are used to make the wall. The robot is also coding according to that.

The second project related with the brick laying is the Robotic control
most of the robot support 2 kind off programming, online and offline.

The researcher use KUKA Robot Language (KRL). This language is simple but has only limited features.

The process of work by robot is much simpler than the process of human brick laying.

The goal of this paper is to identify the potential impact of an integrated design and robotic assembly process on brickwork.

In the design first individual point is assigned for the brick, and the information is transferred into actual physical position.

The correct positioning is achieved through visual alignment to the guide system.

After that the robot don’t need any more assistance.

Three wall prototypes

Robust Task and Motion Planning for Long-Horizon Architectural Construction Planning- Paper Summary

Robust Task and Motion Planning for Long-Horizon Architectural Construction Planning

General Context:

The architecture industry has been extending the use of robotics in the construction process rapidly from the last few years..

The main goal is to gain quality and efficiency of the construction process.

The automated process in the construction also enables design analysis tools.

This process also facilitated engineers with faster design interaction.

Problem Definition:

The current Task and Motion Planning system (TAMP) cannot handle the long horizontal construction process by current approaches.

 Solution Idea:

In this paper the researcher developed a multi-agent TAMP framework for long horizon problems such as constructing a full-scale building.

Method:

In this paper researchers extend the Logic-Geometric Programming framework by sampling-based motion planning, a limited horizon approach, and a task-specific structural stability optimization that allow an effective decomposition of the Project.

Logic-Geometric Programming framework: Logic-Geometric Programming framework is a very general way to formulate sequential manipulation problems.

task-specific structural stability optimization: They use stability bound to get the optimization in the cost. stability bounds evaluate the cost for each task like placing the object in the position without considering any other factors.

limited horizon approach: To use this approach, first they separate the goals to the sub goals. then to solve the long-horizon Logic-Geometric Programming of each sub-goal. The horizontal length comes in the equation of each sub goal to minimize the  task timing.

Sequences arising from the different stability criteria (dark parts are placed first, light parts at the end) with horizon
length nh = 1.

Result:

Researchers construct BUGA Wood pavilion by 376 unique wooden

elements which are precisely fabricated by robots. 

The pavilion is 30 meters in span, and was assembled by two human operators and one crane in 10 days.

For the fabrication of the timberparts, Robots are used whereas the construction was manually planned.

They used one crane to move parts with a small limit of rotation, and one robot with the mobile case.

BUGA Wood pavilion built by our framework in
simulation

Robot Arm simulation to move a object from one spot to another, by using Robot studio:

For the repeated work, we need to program robot first time.

I am learning Robot Studio to program the robot arm for the first time.

In this practice I am moving a object from one place to another with specific path.

Although I am successful to simulate the robot, somehow the object did not function correctly at last.

The object should have attach with the grip, but maybe I used the wrong grip or, there is some error in the programming I cannot execute the work.

I will figure out the solution for that problem.

Here is the edited fast forward video of the work process.

learning data visualization with python (step 2)

In the step 2, I make a heat map in the python and jupyter. While doing that I learn I need to import different library in jupytor.

The first library is pandas it usually import with shortcut pd. The function of panda library is to import CSV data and plot it wherever it need.

Second library is pyplot from matplotlib library. The function of this library is to plot the csv data in the figure. Song plt create a plotting area for further plotting method.

Another library that I add was seaborn. The function of this library is to make statistical graphic in python. The matplotlib plot simple line graphics while seaborn have variety of data plotting patterns.

The last one library I used is numpy. The function of this library is to process array. When we are using mathematical or arithmetic function, we should use numpy.

While choosing the color or while writing the code if we did some mistake then the suggestion refer the tutorial about that particular coding, and give the suggestion message to the user. Here in the example below, I write the different name where I should have write the color name.  The software give the suggestion message.

learning data visualization with python (step 1)

Data visualization by the help of python gives the data representation in two-dimensional format. I started to learn data visualization because i want to make the data visualization for virtual reality. However, using python in data visualization create the 2D visualization. Anyway, I decided to learn.

The data visualization can be done in either in two dimensional or 3 dimensional. Two dimensional data visualization contains graph, line diagram, pie chart, and many more. Whereas in three-dimensional data visualization contain data animation, data visualization in virtual reality or in augmented reality.

In data visualization by python, we need to download anaconda software. We can download anaconda in here.  We need to download anaconda under python 3.

We need to open anaconda launcher from PC, where we need to launch jupyter. The jupyter will open in the browser. If you do not know the jupyter then this video will help you. I also watch the video and learn about the jupyter.

The jupyter workplace look like this

I tried two set of data representation by using line in the first day of learning.

How to create a prototype of application without prior knowledge of coding.

Currently I am working on an idea of making public transportation more effective. Till now the passenger can only get the information, but currently few research has been done to integrate suggestion giving platform within the bus information system. To make sure about the certainty of the bus will stop in the bus stop there should be some kind sign that the driver should get. Like how he gets the sign to stop the bus. So for that I proposed an extra function or facility within the bus information system. For that I need to make a demo of how does it work. As currently I am learning codding, and my knowledge is not sufficient to make the app. This leads me to search in the website which help me to make a prototype to explain my idea. I found a website called Invision (https://www.invisionapp.com/), in which I can make a prototype by using photos. The following video is a screen recording of using that prototype.   

Using data cubes in city model by using rhino to visualize in virtual reality.

To start a project i got a cad file of the city part which looks like this

Original cad file

As seen in the figure, there are a lot of information in this cad file. Some time it is hard to understand which line is what. But the line is separate by layer names. the layer names are code, which is based upon regulation code for spatial information layer in south Korea. The layer tab looks like this.

original cad layer

There are 153 layer and each symbolize different meaning, I got a book about the code and the meaning of that code, which of-course written in Korean, which then I translate in English and rename all those layer which I need and remove all the other unnecessary data. The code looks like this.

code and the meaning of the layer in cad file
The final layer name and useful lines.

After this I take all the lines which symbolize the level of site and import it in rhino. From there I extract all the point I need and create a mesh. The mesh is land surface of my project area. The constructed mesh in rhino is shown in figure.

constructed site mesh in rhino

Since the project area is 3 km by 2 km (around) big the detailing I need to do is creating a building and roads. After this I went back again in the cad. In the cad I have converted 3D cad file into 2D file and create separate blocks for building and roads. The final building blocks in cad look like this.

2d cad file with only building footprint.

Those all building then create in sketch up for the height information, I used public 3d map of site location and make the building. When all the building is raised, it was in same plane, but the site is in contour plane, so I copy the land curved from rhino and used it in the sketch up. Since the 3d in both are in the same scale, I do not have to scale to match same size. also I don’t have any idea about the location of building in the curved surface so I have to project the 2d image that I create before on building footprint and project it in site landscape in rhino. Which then again imported into the sketch up for further work. The site with the building footprint and rood line is shown in below figure.

Road lines in the site landscape after projection
building lines in the site landscape area.

Although there is no face making in the sketch up I can still use the building footprint but I need different face in the case of roads so that I can use different color for representation. I move all the building 3d in the site landscape and stop working in sketch up for a moment.

Since I needed close loop of roads to make a face so I work in the 2d cad file that I make earlier and create a closed loop of lines and make a poly line by using command (b ㄱ) which make a boundary of all the line and make it one. After that some line need to be connect by using (jㄱ) which join the two poly line in one. The final 2d cad file for the road is shown below.

Poly-line format of road lines to create a face in sketch up

I didn’t create same for the building because the building blocks will cover the footprint surface so it will be hidden. Then I project the road line in the site landscape and used it in a sketch up. The final product of sketch up is looks like this. (Some might think why I take from rhino to sketch up again and again, there are two reason, first I am beginner in rhino in the time I was involve in this project but I have the good skills in sketch up model making. I also need a box below the land, which when I tried to create in the rhino, the size increase very fast, and since I have made all the building 3D in sketch up). Anyway the sketch up file is compatible with various other 3D software so I can enjoy different software advantage. The final model for the VR is then look like this.

final sketch up model for VR

So after finishing the 3rd model, I need to visualize the data above the 3D model. I tried to use unity, but at last I couldn’t see the final product in the virtual reality. Which lead me to use rhino for data visualization. Since we didn’t have a real data of the city on the time we are making the project, I create a fake data. So the data I need was related to the roads, so I need a coordinate of the road. For that I used the previous work, where I had created road only in the rhino. I used drape point grid over object. for that I take a spacing value 3 which gives me all the points over the roads, parking and pedestrian area only. Then I manually separate the points in 3 groups. The points over the main highway are grouped as highway road, the points over pedestrian and parking space are grouped as second and the points over the internal roads where the speed of vehicle is below 25 (assume) are grouped in third. The grouping can be seen in below figure.

points separation (yellow part) for different function of road

Finally,  I need an object on that point to represent the information about the road. Since in this method information will the explain through space separation, I do not need different height within the represent cube. before that I extract the x,y,z value of the each point thinking of I will use x, y,z value to assign the object . (Actually I did too) to extract the x,y,z value I use the python code that my friend Jin prepared before. Below is the python script.

import rhinoscriptsyntax as rs


def exportData():
    pts = rs.GetObjects("Select")
    file_object = open("points.csv", "w")
    for pt in pts:
        coord = rs.PointCoordinates(pt)
        dataLine = str(coord) + " ,\n"
        file_object.writelines(dataLine)
        
    file_object.close()
    print("data export done")



def main():
    exportData()

main()

This script give me a Geo location value of all points. after that I need a code to assign a object into the xyz points. I asked help to my another friend Da-young. With her help following script is prepared.

import Rhino
import scriptcontext
import System.Drawing
import rhinoscriptsyntax as rs
import csv

def readFile():
    f = open('data.csv', 'r')
    rd = csv.reader(f)
    for line in rd:
        x=float(line[0])
        y=float(line[1])
        z=float(line[2])
        AddMaterial(x,y,z)
    f.close()

def writeFile():
    f = open('data.csv', 'w')
    wr = csv.writer(f)
    #wr.writerow([1,2,3])
    wr.writerow([100,100,100])
    f.close()


def AddMaterial(x,y,z):
    # materials are stored in the document's material table
    index = scriptcontext.doc.Materials.Add()
    print(index)
    mat = scriptcontext.doc.Materials[index]
    mat.DiffuseColor = System.Drawing.Color.Chocolate
    mat.SpecularColor = System.Drawing.Color.CadetBlue
    mat.CommitChanges()

    # set up object attributes to say they use a specific material
    sp = Rhino.Geometry.Sphere(Rhino.Geometry.Plane.WorldXY, 5)
    attr = Rhino.DocObjects.ObjectAttributes()
    attr.MaterialIndex = index
    attr.MaterialSource = Rhino.DocObjects.ObjectMaterialSource.MaterialFromObject
    scriptcontext.doc.Objects.AddSphere(sp, attr)
    
    # add a sphere without the material attributes set
    sp.Center = Rhino.Geometry.Point3d(x, y, z)
    scriptcontext.doc.Objects.AddSphere(sp)

    scriptcontext.doc.Views.Redraw();
    
def changeMat(obj, index, color):
    name = "material" + str(index)
    print(index)
    
    rs.MaterialName(index, name)
    rs.MaterialColor(index, color)

    attr = Rhino.DocObjects.ObjectAttributes()

    attr.MaterialIndex = index
    attr.MaterialSource = Rhino.DocObjects.ObjectMaterialSource.MaterialFromObject

    doc.Objects.AddBrep(obj, attr)

def MakeMaterial():
    name = "test"
    color = rs.CreateColor(100,0,0)
    mat = Rhino.DocObjects.Material()
    mat.Name = name
    mat.DiffuseColor = color
    index = scriptcontext.doc.Materials.Add()
    
    rendmat = Rhino.Render.RenderMaterial.CreateBasicMaterial(mat)
    scriptcontext.doc.RenderMaterials.Add(rendmat)
    
    sp = Rhino.Geometry.Sphere(Rhino.Geometry.Plane.WorldXY, 5)
    attr = Rhino.DocObjects.ObjectAttributes()
    attr.MaterialIndex = index
    attr.MaterialSource = Rhino.DocObjects.ObjectMaterialSource.MaterialFromObject
    scriptcontext.doc.Objects.AddSphere(sp, attr)


if __name__=="__main__":
    #AddMaterial()
    #MakeMaterial()
    #writeFile()
    readFile()

The code was pretty complex to understand, still I can get a object in the assign point. but for that I used a simpler python script. below is the script that I used.

import Rhino
import scriptcontext
import System.Drawing
import rhinoscriptsyntax as rs
import csv

def readFile():
    f = open('highway_data.csv', 'r')
    rd = csv.reader(f)
    ## This is a repetition parts to read the csv data
    for line in rd:
        x=float(line[0])
        y=float(line[1])
        z=float(line[2])
        mypoint = (x,y,z)
        myRadius = 4500
        sph = rs.addcube(mypoint, myRadius)
        rs.ObjectColor(sph,(255,150,0))
    f.close()



if __name__=="__main__":
    #AddMaterial()
    #MakeMaterial()
    #writeFile()
    readFile()

The file after getting a sphere in each point is very heavy, 1.4GB which was impossible to open in the irish vr. so I search another method.

In this method, I first convert the points into points cloud by using command pointcloud and then select all the necessary points. After that I used a new code, which help me to assign required object with its original material, color and scale in to the points. so I assign a sphere and used a following python script.

import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino

def populate_pointcloud():
    
    cloud_id = rs.GetObject('Select Pointcloud')
    
    seed_id = rs.GetObject('Select Seedmesh')
    
    pcloud = rs.coercegeometry(cloud_id)
    
    seed = rs.coercegeometry(seed_id)
    for item in pcloud:
        color = item.Color
        location = item.Location
        
        item_seed = seed.Duplicate()
        item_seed.Translate(Rhino.Geometry.Vector3d(location))
        
        item_id = sc.doc.Objects.Add(item_seed)
        rs.ObjectColor(item_id, color)
        
populate_pointcloud()

With this I populate first sphere which was again heavy so I tried simple cube, came out the cube will not create big file. Later I also tried to use a cube with a name above what represent what. But that also create big file. So after 3 time using the scripts, I get the final result of data cube above the model. The final product is then watched in the irish VR . Below are the final photo and of final product. The red color represent the highways, the green represent the predestination and parking space and the brown color represent the internal slow speed road. The video can be watched here.

Design a site like this with WordPress.com
Get started