Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
9532f91
🔥
Nov 8, 2024
42d8ed2
🙈
Nov 8, 2024
a0896ec
✨ 🎉 Camera
Nov 8, 2024
92adc1c
🙈
Nov 8, 2024
24bbb0b
📝
Nov 8, 2024
fa0abbe
🚧 Image TCP Server
JulianKropp Nov 8, 2024
38eb0fc
🏷️
Nov 14, 2024
84a04b3
✨ connect both scripts
Calkstein Nov 20, 2024
f48558f
✨ Add Makefile and retry connecting
Calkstein Nov 20, 2024
329384a
👷 update makefill
Calkstein Nov 26, 2024
9b4cb3f
🐛 optimize bind socket
Calkstein Nov 26, 2024
ea4a63b
:bug: Fix make build on new device
Calkstein Nov 27, 2024
277a7a4
🙈
Calkstein Dec 4, 2024
80f7f97
💚 🐛 install spinnaker_sdk
Calkstein Dec 4, 2024
627a60d
🐛 🙈 Fix kill
Crasher100 Dec 4, 2024
37830ef
♻️ Add actuator and sensor modules
JulianKropp Apr 17, 2026
a7d0e6e
⚰️
JulianKropp Apr 17, 2026
6d1cf2a
🚨 mypy
JulianKropp Apr 17, 2026
409b06f
📝 python versions
JulianKropp Apr 17, 2026
07e519b
♻️ Update installation instructions, refine camera resource managemen…
JulianKropp Apr 20, 2026
80bd775
📝 Add camera docker README
JulianKropp Apr 21, 2026
6e9a1bd
🙈 logs
JulianKropp Apr 21, 2026
38003cc
✨ Enhance camera functionality with frame capture and unlock framerat…
JulianKropp Apr 21, 2026
45ba1aa
♻️ Refactor Dockerfile to support arm
JulianKropp Apr 21, 2026
7689ea3
✨ Save first and last frames for visual confirmation after capture
JulianKropp Apr 21, 2026
d455f72
🙈 For test img
JulianKropp Apr 21, 2026
928d48f
📝 Add Python version files and update README for installation and usa…
JulianKropp Apr 21, 2026
e13ff34
♻️ Refactor to object oriented
JulianKropp Apr 21, 2026
dbfdec8
📝 Update installation instructions and requirements for Python 3.10
JulianKropp Apr 21, 2026
75be049
📝 Update README for installation instructions and remove outdated con…
JulianKropp Apr 21, 2026
ec81130
📝 Comment out code for saving all frames
JulianKropp Apr 21, 2026
8669ccd
🐛 Fix docker img out dir
JulianKropp Apr 21, 2026
e04633e
🚧 Marbel detection + create dataset
JulianKropp Apr 21, 2026
faeefcf
✨ Update frame saving logic to continue from the highest existing ind…
JulianKropp Apr 21, 2026
2a873a5
✨ Add color detection
JulianKropp Apr 21, 2026
4a1e896
✨ Refactor marble detection script: enhance color classification and …
JulianKropp Apr 21, 2026
00bb844
🐛 Fix color conversion in frame saving logic from Bayer format
JulianKropp Apr 22, 2026
9228048
✨ Create dataset
JulianKropp Apr 22, 2026
307f39a
✨ Update Label Studio setup in README
JulianKropp Apr 22, 2026
9a93d4c
🚧 train ai
JulianKropp Apr 24, 2026
d399f2d
📝 train ai inside docker
JulianKropp Apr 27, 2026
94f0d1e
🐛 training error
JulianKropp Apr 27, 2026
956e54b
✨ run air
JulianKropp Apr 27, 2026
1df03c6
⚡️ speed up ai
JulianKropp Apr 27, 2026
a3b8aab
⬆️ Use pythpon3.10
JulianKropp Apr 27, 2026
5760752
📝 add more installation steps
JulianKropp Apr 30, 2026
ba56a34
🙈
JulianKropp May 5, 2026
fb22678
🔒️ set dataset directory for HTTP server
JulianKropp May 5, 2026
6d167d9
📝 Rewrite detailed setup guides for building, configuring, and runnin…
JulianKropp May 5, 2026
6049b6a
🐛 change dataset json structure for labelstudio
JulianKropp May 7, 2026
df72955
🙈 📌
JulianKropp May 7, 2026
387da6a
🙈 📌
JulianKropp May 7, 2026
c00b5df
📝 test & improve docs
JulianKropp May 7, 2026
c863c5c
📝 Update images path
JulianKropp May 7, 2026
f46575c
🔧 Use label_map.pbtxt as single source of truth for all class labels
JulianKropp May 11, 2026
e168b76
🚧 working sorter
JulianKropp May 12, 2026
368813f
✨ Add new 3D model files for all components as 3MF and F3D
Crasher100 May 12, 2026
9ea4f2a
⚡️ Optimize marble detection and camera streaming for faster inference
JulianKropp Jun 9, 2026
c5ce3f5
📝 Add platform details to Spinnaker downloads and reorder Label Studi…
JulianKropp Jun 9, 2026
f34af15
✨ Add fullscreen tkinter display with live marble detection and runni…
JulianKropp Jun 9, 2026
7870eec
🐛 fix color conversion
JulianKropp Jun 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
199 changes: 198 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,198 @@
gitignore
spinnaker_python
spinnaker_python/*
spinnaker_sdk
spinnaker_sdk/*
spinnaker_python*.tar.gz
spinnaker-*.tar.gz
spinnaker.tar.gz
*.csv
*.zip
*.json
*.record
*.deb
Python-3.10.0
Python-3.10.0/*
Python-3.9.0
Python-3.9.0/*
Python-3.10.0.tar.xz
Python-3.9.0.tar.xz
spinnaker_sdk.tar.gz
models
models/*
my-models
my-models/*
label-studio
label-studio/*
dataset
dataset/*

**utils/__pycache__
**old/.venv*
.venv*
.venv*/*
.mypy_cache
.mypy_cache/*
label_map.pbtxt

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
.pdm.toml
.pdm-python
.pdm-build/

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.10.20
Binary file added 3d-files/3mf/Case.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Display/Bildschirmhalterung.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Display/MOSFET_Halterung.3mf
Binary file not shown.
Binary file not shown.
Binary file added 3d-files/3mf/Display/RaspberryPI_Halterung.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Kamera/Deckel.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Kamera/Kameraholder.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Kamera/MCP3008_Halter.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Kamera/Unterteil.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Kamera/main_chamber.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Tippything/Box.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Tippything/Kurbelschleife.3mf
Binary file not shown.
Binary file not shown.
Binary file added 3d-files/3mf/Tippything/Plexiglashalter.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Tippything/Rohr.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Tippything/Tippything_Case.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Tippything/Track.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Tippything/Trichter.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Transporter/Archimedes_Screw.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Transporter/Motor_Holder.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Transporter/Transporter_Adapter.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Transporter/Transporter_Case.3mf
Binary file not shown.
Binary file not shown.
Binary file added 3d-files/3mf/Transporter/Tube_Curved_67.5°.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Transporter/Tube_Curved_90°.3mf
Binary file not shown.
Binary file added 3d-files/3mf/Transporter/Tube_Straight.3mf
Binary file not shown.
Binary file added 3d-files/f3d/Case.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Display/Bildschirmhalterung.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Display/MOSFET_Halterung.f3d
Binary file not shown.
Binary file not shown.
Binary file added 3d-files/f3d/Display/RaspberryPI_Halterung.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Kamera/Deckel.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Kamera/Kameraholder.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Kamera/MCP3008_Halter.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Kamera/Unterteil.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Kamera/main_chamber.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Tippything/Box.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Tippything/Kurbelschleife.f3d
Binary file not shown.
Binary file not shown.
Binary file added 3d-files/f3d/Tippything/Plexiglashalter.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Tippything/Rohr.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Tippything/Tippything_Case.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Tippything/Track.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Tippything/Trichter.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Transporter/Archimedes_Screw.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Transporter/Motor_Holder.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Transporter/Transporter_Adapter.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Transporter/Transporter_Case.f3d
Binary file not shown.
Binary file not shown.
Binary file added 3d-files/f3d/Transporter/Tube_Curved_67.5°.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Transporter/Tube_Curved_90°.f3d
Binary file not shown.
Binary file added 3d-files/f3d/Transporter/Tube_Straight.f3d
Binary file not shown.
75 changes: 75 additions & 0 deletions Dockerfile.train
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# =============================================================================
# Sorter end-to-end training image.
#
# A single `docker run` performs:
# 1. TFRecord generation from Label Studio JSONs
# 2. SSD MobileNet V2 fine-tuning (TF Object Detection API, TF 2.11)
# 3. TFLite-friendly graph export
# 4. Full INT8 quantization with a representative dataset
# 5. Edge TPU compilation
#
# Required mounts:
# -v <host>/dataset:/dataset # input (read-write; nothing is written here)
# -v <host>/my-models:/my-models # output (all artifacts land here)
#
# Optional: append `--gpus all` to use the host GPU via the NVIDIA Container Toolkit.
# =============================================================================
# NOTE: the `devel` (not `runtime`) CUDA image is required because TensorFlow's
# XLA JIT needs `libdevice.10.bc`, `ptxas` and friends, which are only present
# in -devel-. Without them training fails with:
# error: Can't find libdevice directory ${CUDA_DIR}/nvvm/libdevice
# UNKNOWN: JIT compilation failed.
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu20.04

ENV DEBIAN_FRONTEND=noninteractive \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
XLA_FLAGS=--xla_gpu_cuda_data_dir=/usr/local/cuda

# ---- System packages ---------------------------------------------------------
# libgl1 + libglib2.0-0 are required by opencv-python, which is pulled in by the
# Object Detection API via the `lvis` evaluator.
RUN apt-get update && apt-get install -y \
python3 python3-pip python3-dev \
git curl gnupg protobuf-compiler ca-certificates \
libgl1 libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*

# ---- Edge TPU compiler -------------------------------------------------------
RUN curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg \
| gpg --dearmor -o /usr/share/keyrings/coral-edgetpu-archive-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/coral-edgetpu-archive-keyring.gpg] https://packages.cloud.google.com/apt coral-edgetpu-stable main" \
> /etc/apt/sources.list.d/coral-edgetpu.list && \
apt-get update && apt-get install -y edgetpu-compiler && rm -rf /var/lib/apt/lists/*

# ---- Python base -------------------------------------------------------------
RUN python3 -m pip install --upgrade pip && \
python3 -m pip install "tensorflow==2.11.0" "numpy<2" pillow

# ---- TensorFlow Object Detection API -----------------------------------------
# The OD API setup tends to drag in conflicting TF/Keras pins, so we re-pin
# tensorflow==2.11.0 and numpy<2 right after installing it.
RUN git clone --depth 1 https://github.com/tensorflow/models.git /opt/models && \
cd /opt/models/research && \
protoc object_detection/protos/*.proto --python_out=. && \
cp object_detection/packages/tf2/setup.py . && \
python3 -m pip install . && \
python3 -m pip install --force-reinstall "tensorflow==2.11.0" "numpy<2"

# ---- Pretrained SSD MobileNet V2 checkpoint ----------------------------------
RUN mkdir -p /opt/sorter/pretrained && \
curl -fsSL http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v2_320x320_coco17_tpu-8.tar.gz \
| tar -xz -C /opt/sorter/pretrained

# ---- Repo-level config + helper scripts --------------------------------------
COPY pipeline.config /opt/sorter/pipeline.config
COPY label_map.pbtxt /opt/sorter/label_map.pbtxt
COPY docker/build_tfrecords.py /opt/sorter/build_tfrecords.py
Comment on lines +64 to +67
COPY docker/quantize.py /opt/sorter/quantize.py
COPY docker/entrypoint.sh /usr/local/bin/sorter-train
RUN chmod +x /usr/local/bin/sorter-train

VOLUME ["/dataset", "/my-models"]
WORKDIR /my-models

ENTRYPOINT ["/usr/local/bin/sorter-train"]
80 changes: 0 additions & 80 deletions FLIR/FLIR.py

This file was deleted.

19 changes: 0 additions & 19 deletions FLIR/__init__.py

This file was deleted.

Loading
Loading