Python library for designing timber structures with integral timber joints.
This repo is part of the Robotic Assembled Timber Structures with Integral Timber Joints project.
The goal of the python library is to be able to achieve the following high-level functions:
- Classes and Data Structure for describing:
- Timber elements
- Integral joints (Subtractive machining joint)
- Process tools (Grippers, Clamps, Pickup Station)
- Process action (Actions and Movements)
- Algorithms for assembly design
- Creating beams from Rhino geometry
- Creating joint pairs from beam intersection
- Algorithms for process design
- Computing assembly process information (assembly sequence, gripper type, clamp type, grasp pose, clamp attachment pose)
- From user input as guide
- Automatic deduction (Auto Sequence, Auto Lap Joint Direction)
- Computing robotic movements
- Key positions
- Robotic Path (Path Planning)
- Computing assembly process information (assembly sequence, gripper type, clamp type, grasp pose, clamp attachment pose)
Create a new environment with python 3.7 and install this package in the new environment
conda create --name itj python=3.7
conda activate itj
One of the dependency from compas
is planarity, which depends of cython
. You will need to install this manually:
pip install cython --install-option="--no-cython-compile"
or
conda install cython
Install this library from source by cloning this repo to local and install from source.
git clone --recursive https://github.com/gramaziokohler/integral_timber_joints.git
cd integral_timber_joints
The --recursive
flag when cloning above is used for initializing all the git submodules. You can learn more about submodules here.
Later in the development, whenever you need to update the submodules, issue the following:
git submodule update --init --recursive
Run this the following in terminal from the root folder of this repo. All libraries are installed from source (in the editable mode).
# Install the submodule libraries from source
pip install -e .\external\compas
pip install -e .\external\compas_fab
pip install -e .\external\compas_fab_pychoreo
# install `integral_timber_joints` from source
pip install -e .
# Run the following code add the python library paths to Rhino / Grasshopper:
python -m compas_rhino.install -p compas compas_fab compas_ghpython roslibpy compas_rhino jsonpickle integral_timber_joints geometric_blocking
Alternatively if development is intended you can install with developer tools:
# replace `pip install -e .` above with
pip install -r requirements-dev.txt
invoke add-to-rhino
⚠ when used in rhino, please start the RPC proxy beforehand by: compas_rpc start
The following python dependency are installed in the above process. See requirements.txt for more info on the specific versions pinned.
The following libraries are installed "automatically" (via pip or conda, learn about their difference here)
compas
(Library for geometrical modeling and graph relationship)compas_fab
(Library for modelling Tools and Robots, functions to call ROS backend for path planning)jsonpickle
(Serialization library for Tools, Assembly, Process)trimesh
(Call Openscad in the background to perform Mesh Boolean)pycddlib
(Computation of blocking direction analysis)CGAL
(SWIG bindings for remeshing operations)
The CGAL bindings are best installed from conda: conda install -c conda-forge cgal
. Otherwise, you have to be brave enough to build from source following instructions here.
The following two libraries are installed manually from git submodules, to better keep track of our development cycles:
pybullet_planning
(Library for planning utilities in pybullet)compas_fab_pychoreo
(Library for providingpybullet_planning
functionalities through acompas_fab
-friendly API)
Install the following software:
-
Rhino V6 (Design interface for demo file)
-
Grasshopper plugin
- Elefront (Handles clickable mesh interface)
-
Openscad (This will be running in the background. Start the software at least once after installing)
See this markdown file regarding the organization of the code and how it relates to dependency and compas
core libraries.
See this file for instructions on running the planning.
This repository was created by Pok Yin Victor Leung (leung@arch.ethz.ch) @yck011522 at @gramaziokohler, with the help of other contributors.