- Project structure: solver/, freecad/, export/, configs/, scripts/, tests/, docs/ - pyproject.toml with dependency groups: core, train, freecad, dev - Hydra configs: dataset (synthetic, fusion360), model (baseline, gat), training (pretrain, finetune), export (production) - Dockerfile with CUDA+PyG GPU and CPU-only targets - docker-compose.yml for train, test, data-gen services - Makefile with targets: train, test, lint, format, type-check, data-gen, export, check - Pre-commit hooks: ruff, mypy, conventional commits - Gitea Actions CI: lint, type-check, test on push/PR - README with setup and usage instructions
72 lines
2.1 KiB
Markdown
72 lines
2.1 KiB
Markdown
# kindred-solver
|
|
|
|
Assembly constraint prediction via GNN. Produces a trained model embedded in a FreeCAD workbench (Kindred Create library), later integrated into vanilla Create.
|
|
|
|
## Overview
|
|
|
|
`kindred-solver` predicts whether assembly constraints (joints) are independent or redundant using graph neural networks. Given an assembly graph where bodies are nodes and joints are edges, the model classifies each constraint and reports degrees of freedom per body.
|
|
|
|
## Repository Structure
|
|
|
|
```
|
|
kindred-solver/
|
|
├── solver/ # Core library
|
|
│ ├── datagen/ # Synthetic data generation (pebble game)
|
|
│ ├── datasets/ # PyG dataset adapters
|
|
│ ├── models/ # GNN architectures (GIN, GAT, NNConv)
|
|
│ ├── training/ # Training loops and configs
|
|
│ ├── evaluation/ # Metrics and visualization
|
|
│ └── inference/ # Runtime prediction API
|
|
├── freecad/ # FreeCAD integration
|
|
│ ├── workbench/ # FreeCAD workbench addon
|
|
│ ├── bridge/ # FreeCAD <-> solver interface
|
|
│ └── tests/ # Integration tests
|
|
├── export/ # Model packaging for Create
|
|
├── configs/ # Hydra configs (dataset, model, training, export)
|
|
├── scripts/ # CLI utilities
|
|
├── data/ # Datasets (not committed)
|
|
├── tests/ # Unit and integration tests
|
|
└── docs/ # Documentation
|
|
```
|
|
|
|
## Setup
|
|
|
|
### Install (development)
|
|
|
|
```bash
|
|
pip install -e ".[train,dev]"
|
|
pre-commit install
|
|
pre-commit install --hook-type commit-msg
|
|
```
|
|
|
|
### Using Make
|
|
|
|
```bash
|
|
make help # show all targets
|
|
make dev # install all deps + pre-commit hooks
|
|
make test # run tests
|
|
make lint # run ruff linter
|
|
make type-check # run mypy
|
|
make check # lint + type-check + test
|
|
make train # run training
|
|
make data-gen # generate synthetic data
|
|
make export # export model
|
|
```
|
|
|
|
### Using Docker
|
|
|
|
```bash
|
|
# GPU training
|
|
docker compose up train
|
|
|
|
# Run tests (CPU)
|
|
docker compose up test
|
|
|
|
# Generate data
|
|
docker compose up data-gen
|
|
```
|
|
|
|
## License
|
|
|
|
Apache 2.0
|