A research and teaching toolbox for the CyberCraft Lab, covering robotic 3D clay printing and ceramic fabrication, procedural geometry generation, AI/ML optimization, and robot toolpath planning for KUKA industrial robots.
This repository is a working mash-up of in-progress tools, sketches, and experiments. Some components are stable; others are early-stage scripts that may eventually graduate into dedicated tools. Code is provided "AS IS", without warranty of any kind, under the Apache License 2.0.
Several modules drive physical hardware — industrial robots, extruders, and lasers. Operating them carries real safety risk. You are solely responsible for verifying toolpaths, enforcing workspace limits, and following your local safety procedures before sending anything to a physical machine.
CCL_Toolbox bundles the lab's evolving software stack into a single repository so research, teaching, and prototyping can share infrastructure. Expect uneven maturity across folders: each project's own README (where present) is the source of truth for its current state.
Generate 3D-printed ceramic coral-like structures with physics-based tapering and helical robot toolpaths.
| Component | Description |
|---|---|
CoralGenerator_GH/ |
Grasshopper plugin (C#) for interactive coral generation |
CoralGenerator_Plugin/ |
Rhino 8 command-line plugin |
CoralGenerator_PY/ |
Python implementation (RoboDK-ready) |
Key Features:
- Organic axis curve generation with noise-based perturbation
- Physics-based tube tapering (compressive stress analysis)
- Helical toolpath generation with orientation frames
- Configurable overhang angles, drift radius, and layer heights
Procedural generation of 20 different coral morphologies across 5 categories, exploring diverse growth algorithms and colony formations.
| Component | Description |
|---|---|
VariousCoralsGenerator/ |
Rhino 8 plugin (various_corals_generator.dll) |
VariousCoralsGenerator_GH/ |
Grasshopper component (various_corals_generator_gh.gha) |
various_coral_generator.py |
Unified Python script for all coral types |
elkhorn_coral.py |
Standalone Elkhorn coral generator |
Supported Coral Types (20 Types in 5 Categories):
| Category | SubType | Name | Description |
|---|---|---|---|
| 0: Branching | 0 | Corymbose (Elkhorn) | Table-like horizontal branching |
| 1 | Caespitose (Staghorn) | Bushy 3D space colonization | |
| 2 | Arborescent | Tree-like trunk and crown | |
| 3 | Digitate | Finger-like projections | |
| 4 | Bottlebrush | Radiating bristle sub-branches | |
| 5 | Thicket | Dense compacted branches | |
| 1: Massive | 0 | Hemispherical | Dome with corallite detail |
| 1 | Columnar (Phaceloid) | Multiple columns from base | |
| 2 | Cerioid | Honeycomb shared walls | |
| 3 | Plocoid | Separate wall corallites | |
| 2: Plate/Foliose | 0 | Fan | Planar gorgonian branching |
| 1 | Laminar | Flat plates with wavy edges | |
| 2 | Tiered | Stacked overlapping plates | |
| 3 | Foliose | Upright leaf-like fronds | |
| 4 | Explanate | Branches fused into plate | |
| 3: Encrusting | 0 | Encrusting Sheet | Thin veneer on substrate |
| 1 | Micro-Atoll | Ring from tidal exposure | |
| 4: Meandroid | 0 | Meandroid (Brain) | Continuous valley grooves |
| 1 | Flabello-Meandroid | Valleys with separate walls | |
| 2 | Ploco-Meandroid | Short exsert valley walls |
Key Features:
- Two-level selection: Category + SubType for intuitive organization
- Multiple generation algorithms (recursive branching, space colonization, reaction-diffusion)
- Outputs centerlines and point clouds for ShrinkWrap/QuadRemesh mesh generation
- Right-click menu to create Value List dropdown selectors (GH component)
- Colony formations based on coral morphology research
Machine Learning system for autonomous clay printing optimization using reinforcement learning, OPC UA robot communication, and computer vision.
| Module | Description |
|---|---|
clay_ml/robot/ |
KUKA robot control via OPC UA |
clay_ml/camera/ |
Multi-camera capture (USB, RealSense) |
clay_ml/rl/ |
PPO/SAC/TD3 agents (Stable-Baselines3) |
clay_ml/data/ |
Training data collection and logging |
clay_ml/geometry/ |
Rhino 3DM bridge and toolpath processing |
Key Features:
- Gymnasium-compatible RL environment
- Real-time defect detection via computer vision
- Live parameter adjustment during printing
- Socket-based Rhino communication for design feedback
Educational computer vision and deep learning project for the SMARTBench course (Unit 02). Covers image processing fundamentals through to real-time AI-based object detection with depth estimation.
| Component | Description |
|---|---|
cv_basics/ |
7 foundational CV exercises (grayscale, binary, smoothing, edges, color detection, point clouds, face blurring) |
yolo_pipeline/ |
6-step YOLO pipeline (labeling, dataset prep, training, detection, real-time webcam, depth estimation) |
Key Features:
- OpenCV image processing fundamentals (RGB conversion, filtering, edge detection)
- Color-based screwdriver angle detection (Computer Vision approach)
- 3D point cloud visualization and distance measurement (Open3D)
- Privacy protection via Haar Cascade face detection and Gaussian blurring
- YOLO object detection with custom dataset labeling and training
- Real-time webcam detection with adjustable confidence thresholds
- MiDaS depth estimation integrated with YOLO detection
Setup:
cd AR-Drill
python -m venv venv
source venv/Scripts/activate # Windows Git Bash
pip install -r requirements.txtGenerate spiral robot toolpaths around arbitrary geometry for thinwall ceramic printing.
| Component | Description |
|---|---|
ThinwallSpiral_GH/ |
Grasshopper plugin for interactive use |
ThinwallSpiral_Plugin/ |
Rhino 8 command-line plugin |
Rhinoceros_Python_Script/ |
Native Rhino Python implementation |
Key Features:
- Cylindrical bounding box computation
- Configurable layer height and radial offset
- Ray-shooting surface intersection
- Orientation ribbon surface generation
Generate organic, BambuLab-style tree support structures for 3D-printed and robotically-fabricated geometry.
| Component | Description |
|---|---|
TreeSupportGenerator_GH/ |
Grasshopper plugin |
Tree_Support_Rhino_Plugin/ |
Rhino 8 command-line plugin |
BambuLab_Style/ |
Reference implementation modeled on BambuLab tree supports |
tree_support_generator*.py |
Python iterations (V3 – V5) tracking algorithm evolution |
Key Features:
- Branching support trunks that merge as they descend toward the build plate
- Configurable branch angles, merge thresholds, and contact tip density
- Outputs both centerlines and meshable geometry for downstream toolpath planning
| Component | Specification |
|---|---|
| Robot | KUKA KR 10 R1100-2 (10kg payload, 1100mm reach) |
| Extruder | Stoneflower RAM BIG 2.5L |
| Nozzle | 2-4mm diameter |
| Communication | OPC UA protocol |
| Vision | USB cameras + Intel RealSense depth |
- CAD/Design: Rhino 8, Grasshopper
- Plugins: .NET Framework 4.8 (C#)
- ML/RL: PyTorch, Stable-Baselines3, Gymnasium
- Robotics: OPC UA (asyncua), RoboDK
- Vision: OpenCV, Intel RealSense SDK
- CV/Detection: OpenCV, YOLO (Ultralytics), MiDaS, Open3D
- Languages: C#, Python 3.10+
- Build with Visual Studio 2022 or
dotnet build - Copy
.ghafiles to%APPDATA%\Grasshopper\Libraries\ - Restart Rhino/Grasshopper
- Find components under: CYARC > Fabrication or CYARC > Generators
- Build with Visual Studio 2022 or
dotnet build - Copy
.dllor.rhpfiles to%APPDATA%\McNeel\Rhinoceros\8.0\Plug-ins\ - Restart Rhino
- Run commands:
CoralGenerator,VariousCoralsGenerator,ThinwallSpiral
cd Clay_ML_App
pip install -e .
# or
pip install -r requirements.txtcd AR-Drill
python -m venv venv
source venv/Scripts/activate # Windows Git Bash
# or: venv\Scripts\activate # Windows CMD
pip install -r requirements.txtCCL_Toolbox/
├── Corals/
│ ├── CoralGenerator_GH/ # Grasshopper plugin
│ ├── CoralGenerator_Plugin/ # Rhino command plugin
│ └── CoralGenerator_PY/ # Python implementation
│
├── Diff_Corals/
│ ├── VariousCoralsGenerator/ # Rhino plugin (20 coral types)
│ │ ├── Core/ # CoralTypes, GeneratorHelpers
│ │ └── Generators/ # Category-specific generators
│ ├── VariousCoralsGenerator_GH/ # Grasshopper component
│ │ ├── Core/ # CoralTypes, GeneratorHelpers
│ │ └── Generators/ # Category-specific generators
│ ├── various_coral_generator.py # Unified Python script
│ └── elkhorn_coral.py # Standalone Elkhorn script
│
├── Clay_ML_App/
│ ├── clay_ml/ # Main Python package
│ │ ├── robot/ # Robot control
│ │ ├── camera/ # Vision system
│ │ ├── rl/ # Reinforcement learning
│ │ ├── data/ # Data management
│ │ └── geometry/ # Geometry bridge
│ ├── examples/ # Training scripts
│ ├── models/ # Saved models
│ └── tests/ # Unit tests
│
├── AR-Drill/
│ ├── cv_basics/ # 7 CV exercise scripts
│ ├── yolo_pipeline/ # 6-step YOLO pipeline
│ ├── images/ # Input images
│ ├── dataset/ # Generated training dataset
│ └── requirements.txt
│
├── Thinwall_Spiral_Printing/
│ ├── ThinwallSpiral_GH/ # Grasshopper plugin
│ ├── ThinwallSpiral_Plugin/ # Rhino command plugin
│ └── Rhinoceros_Python_Script/ # Python implementation
│
├── Tree_Supports/
│ ├── TreeSupportGenerator_GH/ # Grasshopper plugin
│ ├── Tree_Support_Rhino_Plugin/ # Rhino command plugin
│ ├── BambuLab_Style/ # BambuLab-style reference implementation
│ └── tree_support_generator*.py # Python iterations (V3 – V5)
│
├── LICENSE # Apache License 2.0
└── README.md
- Clone the repository.
- Install Rhino 8 with Grasshopper for the C# / Grasshopper-based tools.
- Build and install the plugins you need (see Installation above).
- For Python tooling, create a virtual environment per project and install its
requirements.txt. - Start with the example scripts in
Clay_ML_App/examples/or the per-project READMEs.
Issues and pull requests are welcome. A few conventions we try to follow:
- Commits: prefix with the affected component, e.g.
[Corals] Add physics-based tapering,[Clay_ML] Fix OPC UA reconnection. - Code style: PEP 8 for Python (type hints where practical); Microsoft C# conventions for .NET.
- Tests / validation: validate Grasshopper components with sample geometry; for ML changes, include at least one training run; for robot-facing code, describe how it was tested (simulator vs. hardware).
- Safety: never commit production OPC UA endpoints, controller IPs, or other site-specific credentials. Keep workspace limits enforced in any robot-facing code.
Several components in this repository control or generate paths for physical equipment — KUKA industrial robots, ceramic extruders, lasers, and depth-camera rigs. Robotic motion can cause injury or property damage.
Before running any code that drives hardware:
- Validate toolpaths in simulation (RoboDK or equivalent) before sending them to the physical robot.
- Keep workspace limits, soft stops, and e-stops enforced and within reach.
- Treat ML/RL agents that command real motion as untrusted controllers — gate them behind hard workspace limits, not just soft ones.
- Follow your institution's safety procedures regardless of what this code permits.
The authors and CyberCraft Lab accept no liability for damage, injury, or loss arising from use of this software. See LICENSE for the full disclaimer of warranty.
Licensed under the Apache License, Version 2.0. See the LICENSE file for the full text.
Copyright 2026 CyberCraft Lab
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
CCL_Toolbox — Advancing robotic ceramic fabrication through integrated design, simulation, and machine learning.