diffCheckOrg / diffCheck

diffCheck is a CAD-integrated tool for evaluating digital timber fabrication processes.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Roadmap

gantt
    dateFormat  YYYY-MM-DD
    title       diffCheck - general overview
    excludes    weekends

    section Publication
    Abstract edition                    :active, absed, 2024-03-01, 2024-03-15
    Submission abstract ICSA            :milestone, icsaabs, 2024-03-15, 0d
    Paper edition                       :paperd, 2024-10-01, 2024-10-30
    Submission paper ICSA               :milestone, icsapap, 2024-10-30, 0d

    section Code development
    Backend development                 :backenddev, after icsaabs, 6w
    Rhino/Grasshopper integration       :rhghinteg, after backenddev, 6w
    Documentation & Interface           :docuint, after fabar, 3w

    section Prototype testing
    Fabrication of AR Prototype         :crit, fabar, 2024-07-01, 2024-08-30
    Fabrication of CNC Prototype        :crit, fabcnc, 2024-07-01, 2024-08-30
    Fabrication of Robot Prototype      :crit, fabrob, 2024-07-01, 2024-08-30
    Data collection and evaluation      :dataeval, after fabrob, 4w
gantt
    dateFormat  YYYY-MM-DD
    title       diffCheck - backend dev
    excludes    weekends

    data i/o                                 :active, dataio, 2024-03-15, 3w
    global registration                      :glbreg, 2024-03-29, 2w
    semantic seg. from 3D model              :semseg, after glbreg, 1w
    local registration                       :locreg, after semseg, 2w
    error computation + results              :errcomp, after locreg, 1w

3rd party libraries

The project uses the following 3rd party libraries:

  • Open3d 0.18.0 for 3D point cloud processing as pre-build binaries (store here)
  • Eigen for linear algebra
  • CGAL for general geometric processing and IO
  • Boost for general utilities as pre-build binaries (store here)

How to build c++ project

To build and test the project, follow the following steps:

cmake/config.bat
cmake/build.bat
./build/bin/Release/diffCheckApp.exe <-- for prototyping

Prototype diffCheck in C++

To prototype:

  1. add a header/source file in src/diffCheck and include the header in diffCheck.hh interface
  2. test it in diffCheckApp (the cmake will output an executable in bin)

See the CONTRIBUTING.md for more information on how to prototype with diffCheck (code guidelines, visualizer, utilities, etc).

Component roadmap

From the 3/5/2024 meeting, the architecture of the different grasshopper components was discussed as following:

  • PLY loader point cloud: @eleni: loads the pointcloud ply files and converts it into rg.PointCloud (+ cvt submodule)
  • PLY loader mesh: @eleni: loads the mesh ply files and converts it into rg.Mesh (+ cvt submodule)
  • Global registration: @andrea: to align the scan to the reference model
  • Refined registration: @andrea: to refine the alignement
  • Semantic segmentation additive: to identify the pieces or joints in the point cloud
  • Semantic segmentation subtractive: to identify the pieces or joints in the point cloud
  • Per-joint refinement to refine the global registration to each joints (only in the "substractive" case)
  • Error estimation to evaluate the error for each piece or joint
  • Error visualisation to visualise the error, only converts the data from error estimation, no calculation. The brep element in the graph is only here to visualize the fact that we need the breps as data, but it is not a diffCheck component.
stateDiagram

classDef notAComponent fill:green
    (brep):::notAComponent --> global_registration&ICP : [brep]
    State diffCheck{
        State for_additive_and_substractive {
            PLY_loader --> global_registration&ICP : pointcloud
            global_registration&ICP --> semantic_segmentation : pointcloud
            global_registration&ICP --> semantic_segmentation : [brep]
            semantic_segmentation --> error_estimation : [pointcloud]
            semantic_segmentation --> error_estimation : [brep]
            semantic_segmentation --> error_visualisation : [pointcloud]
            semantic_segmentation --> error_visualisation : [brep]
            semantic_segmentation --> per_joint_refinement : [pointcloud]
            semantic_segmentation --> per_joint_refinement : [brep]
            error_estimation --> error_visualisation : csv   
            per_joint_refinement --> error_estimation : [[pointcloud]]
            per_joint_refinement --> error_estimation : [brep]
            }
        State for_substractive {
                per_joint_refinement
            }
    }
    

Note : [] = list

About

diffCheck is a CAD-integrated tool for evaluating digital timber fabrication processes.

License:GNU General Public License v3.0


Languages

Language:Python 56.0%Language:C++ 33.6%Language:CMake 8.9%Language:Batchfile 1.5%