Files
DotsToSirface/README.md
T

3.8 KiB

DotsToSirface (Qt 5.11)

Демонстрационная программа на Qt 5.11 C++, которая:

  • принимает массив 3D-точек QVector<Point3f>;
  • выполняет stage-based pipeline (preprocess -> transform -> registration -> reconstruction);
  • визуализирует точки и полученную треугольную поверхность.

Вход/выход API

src/algorithms/reconstruction/surface_reconstruction.h:

  • struct Point3f { float x, y, z; };
  • struct Triangle { int i0, i1, i2; };
  • QVector<Triangle> buildSurfaceTriangles(const QVector<Point3f>& points);

Triangle хранит индексы вершин в исходном массиве points.

Как это работает

Реализация использует инкрементальный Convex Hull 3D:

  • удаление дубликатов точек (epsilon-сравнение);
  • поиск стартового тетраэдра;
  • поочередное добавление точек с пересчетом видимых граней и горизонта;
  • поддержание ориентированных наружу треугольников.

Ограничения

Текущая реализация строит выпуклую оболочку облака точек. Для невыпуклых объектов и детальной реконструкции произвольной поверхности нужны более сложные алгоритмы (например, alpha-shapes, Poisson reconstruction и т.п.).

Архитектурный каркас под robotics pipeline

  • core: контракты (PointCloudFrame, PipelineContext, PipelineStats, stage-интерфейсы, plugin registry).
  • adapters: мосты к источникам и внешним транспортам (FilePointCloudSource, Ros2PointCloudSource, PointCloud2/tf2 adapters).
  • strategies: конкретные стадии пайплайна (preprocess, transform, registration, reconstruction).
  • factories: сборка PipelineExecutor из plugin-id и профиля.

Профили выполнения

  • desktop_debug: дефолтный профиль для GUI/отладки.
  • rpi4_runtime: профиль для Raspberry Pi 4 (жестче downsampling, лимит точек, reconstruction реже, async-friendly настройки).

Выбор профиля:

  • factories::pipeline::createPipelineExecutorForProfile("desktop_debug")
  • factories::pipeline::createPipelineExecutorForProfile("rpi4_runtime")

Сборка

Пример для Qt 5.11:

qmake DotsToSirface.pro
make

Для Windows/MSVC используйте соответствующий nmake/jom.

Smoke tests (отдельный runner)

Для быстрой проверки пайплайна без GUI добавлен отдельный консольный таргет: DotsToSirfaceTests.pro.

qmake DotsToSirfaceTests.pro
make
./release/DotsToSirfaceTests.exe

При успешном запуске runner печатает Smoke tests passed. и завершаетcя с кодом 0.

Демо

При запуске приложение:

  • генерирует тестовое облако точек (приближенная сфера с небольшим шумом);
  • строит триангуляцию;
  • показывает статистику: количество точек, количество треугольников и время построения;
  • отображает сцену в QOpenGLWidget (ЛКМ - вращение, колесо - зум).