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)
Conda environment (optional)
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"
conda install cython
Clone and update submodules
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
--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
Python dependencies, explained
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)
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 providing
pybullet_planningfunctionalities through a
Installation (external software dependency)
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.
Sequence and Motion Planning
See this file for instructions on running the planning.