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
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 algebraCGAL
for general geometric processing and IOBoost
for general utilities as pre-build binaries (store here)
To build and test the project, follow the following steps:
cmake/config.bat
cmake/build.bat
./build/bin/Release/diffCheckApp.exe <-- for prototyping in c++
To prototype:
- add a header/source file in
src/diffCheck
and include the header indiffCheck.hh
interface - 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).
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