yijiangh / FrameFab

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FrameFab

1. Overview

This code implements a sequence generation algorithm for robotic spatial printing, which is addressed in the following paper:

Yijiang Huang, Juyong Zhang, Xin Hu, Guoxian Song, Zhongyuan Liu, Lei Yu, Ligang Liu. FrameFab: Robotic Fabrication of Frame Shapes. ACM Trans. Graph. 35, 6, 2016.

2. Installation Instructions

This code has been tested in Windows (built with VS2013) and Ubuntu 14.04-LTS.

⚠️ DO NOT install framefab on Ubuntu 16.04 with ROS kinetic installed! Guarantee to break the packages!

🚧 Fix In Progress

Usual clone and Cmake procedure

$ git clone https://github.com/yijiangh/FrameFab

  • Install git, cmake, Eigen, BLAS, LAPACK using your package manager. In Ubuntu, that's:

$ sudo apt-get install libeigen3-dev libblas-dev liblapack-dev

  • Mosek

    • download and install Mosek from https://mosek.com/. You'll need to request a license. It's free for academic use.
    • set the PATH environment variable to full path by adding export PATH=<MSKHOME>/mosek/8/tools/platform/linux64x86/bin:$PATH, e.g. in ~/.bashrc in Ubuntu machine (MSKHOME denote the directory in which MOSEK is unpacked and installed. Version number 8 is the the current mosek version). Refer to official Installation doc.
  • Qt5, OpenGL and GLUT

    • Follow the official Qt instruction and Glut installation guide on Ubuntu
      • $ wget http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run
      • $ chmod +x qt-opensource-linux-x64-5.7.0.run
      • $ ./qt-opensource-linux-x64-5.7.0.run
    • Install OpenGL and Glut librarues
      • $ sudo apt-get install mesa-common-dev
      • $ sudo apt-get install libglu1-mesa-dev
      • $ sudo apt-get install freeglut3-dev
  • update and change CXX compiler

    • add following line to the end of ~\.bashrc:
    	CC=/usr/bin/gcc
    	export CC
    
    	CXX=/usr/bin/g++
    	export CXX
    
    • update and specify new g++ compilation
     	$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
    	$ sudo apt-get update
    	$ sudo apt-get install gcc-5 g++-5
      $ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 1
    
  • Follow the usual CMake procedure:

$ cd  Framefab
$ mkdir build
$ cd build
$ cmake .. (/path/to/FrameFab)
$ make -j4

3. FrameFab instructions

  1. Read a .obj file into FrameFab.
  2. Click Choose ceiling, choose the edges that you want them to be ceiling. Click again or press ESC to finish.
  3. Click Choose base, choose the vertexes that you want them to be base. Click again or press ESC to finish.
  4. Click Project to project base vertexes to a flat plane which is below the lowest position of all the vertexes. The vertexes projected on the plane are fixed vertexes and the edges connecting base vertexes and fixed vertexes are pillars.
  5. Click FiberPrint to run the whole process.
  6. When it is done, you can turn on Heat under the Edge mode to see the result of layer-decomposition.

Common Installation problems

  • The CXX compiler identification is unknown, no C++ compiler is found in cmake process. Make sure you have c++ compiler on your system. Run sudo apt-get install build-essential, refer to this post.

  • Everything seems properly configured to fix previous cmake bugs, but why I still get the same error in Cmake? After an unsuccessful build, we must remove CMakeCache.txt (or simply clear the build directory); otherwise cmake will report the same error even if the needed package has been installed. (refer)

  • c++: error: unrecognized command line option ‘-std=c++14’ This happens when your current compiler (C++ in this case, or g++ version under 5.2) doesn't support -std=c++14. Look at this post for solution. You can specify another compiler using technique addressed in this post. Please remember don't set compiler in CMakeLists file but set your environment variables CC and CXX. In the test machine (Ubuntu), we add following lines in ~.bashrc

      CC=/usr/bin/gcc
      export CC
    
      CXX=/usr/bin/g++
      export CXX
    

    By doing this, we change default CXX compiler from c++ to g++, but default g++ compiler (version 4.8) doe not support -std=c++14. Thus, we have to install g++-5.4 (>5.2) and tell the system to refer to this new version whenever we run g++. Refer to this post, we can upgrade and set new g++ by:

      $ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
      $ sudo apt-get update
      $ sudo apt-get install gcc-5 g++-5
      $ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 1
    

    You can check the update result by $ g++ --version.

  • -std=c++14 is needed for GTEngine's successful compilation.

About

License:Other


Languages

Language:C++ 82.7%Language:C 16.7%Language:CMake 0.3%Language:HLSL 0.2%Language:Makefile 0.1%