25 Commits

Author SHA1 Message Date
14ae0a901f feat(benchmark): summarize SCARED reconstruction depth
All checks were successful
Verification / Is-Buildable (push) Successful in 2m43s
- report valid coverage and depth percentiles even when XYZ ground truth is absent

- accept depth bounds and optional color-mapped PNG output for visual inspection

- retain accuracy metrics when point_cloud.obj is available

- add a batch helper that renders Markdown tables and optional JSON and PNG artifacts

- document benchmark inputs, dataset limits, and visualization tradeoffs
2026-09-14 10:43:29 +03:00
508570cb5c feat(cli): expose point cloud visualization controls
- add block-averaged PLY grid decimation with validity-aware vertex generation

- validate and load ply_stride and wls_filter from cloud_point configuration

- pass matcher tuning through CloudPointClient and apply both settings in CLI exports

- cover stride averaging, sparse blocks, invalid values, and config parsing
2026-09-14 10:43:29 +03:00
96bc82f0fb feat(stereo): add optional disparity post-filters
- add configurable median and edge-aware WLS filtering to the CPU SGBM matcher

- preserve SGBM rejection holes when WLS smooths valid disparities

- detect and link OpenCV ximgproc when available, with a graceful fallback otherwise

- forward CPU tuning through the matcher factory and cover validation and hole preservation
2026-09-14 10:43:29 +03:00
4f21e2ea38 fix(cloud_point): regularise SGBM and export viewable PLY meshes
- Configure StereoSGBM with P1/P2 penalties, 5x5 block, uniqueness ratio,
  speckle filter and left-right check; previously it ran unregularised and
  produced a heavy tail of low-disparity outliers reprojecting metres away
  (SCARED benchmark MAE3D 44 mm -> 0.8 mm, RMSE 289 mm -> 1.4 mm)
- Pass the requested disparity count to the CUDA SGM matcher (rounded to
  64/128/256) instead of a hard-coded 16
- Add optional `cloud_point` config section (algorithm, num_disparities,
  depth range) consumed by CLI options 4/5; ship config.scared.yml
- write_ply now emits a binary PLY with a grid-triangulated mesh so web
  viewers stop fabricating slivers from consecutive vertices
- Add config, matcher and PLY export tests; document in README
2026-09-14 10:43:24 +03:00
cd97e7b3f1 fix(rpc): stop server before joining threads in crpc_deinit
All checks were successful
Verification / Is-Buildable (push) Successful in 3m22s
crpc_deinit() called TcpServer::join() without stop(), so with any live
TCP client the accept thread never exited and deinit blocked forever on
the caller's thread (froze the Unity main thread in OnDestroy during
e2e). Call server->stop() first, which clears running_ and unblocks
accept, then join.
2026-09-11 17:50:00 +03:00
98b64020e4 feat(cloud_point): benchmark SCARED reconstruction accuracy
- Load pixel-aligned SCARED OBJ ground truth with unit conversion
- Rectify left-camera XYZ maps into the reconstruction coordinate frame
- Compute coverage, component errors, 3-D errors, and accuracy thresholds
- Add a JSON benchmark executable and focused evaluator/loader tests
- Document benchmark usage and disparity configuration

TG-2 #ready-for-test
2026-08-27 15:19:18 +03:00
f8177d8926 fix(cloud_point): validation, thread safety, and test cleanup
- Parse port inside try block for proper error reporting instead of unhandled exception
- Make frame_counter atomic to eliminate data race under TcpServer per-client threads
- Validate num_disparities is positive multiple of 16 in StereoMatcherFactory
- Validate stereo pair dimensions match in ScaredDatasetLoader
- Silence nodiscard warnings via std::ignore in tests

TG-3 #ready-for-test
TG-2 #ready-for-test
2026-07-12 22:28:21 +03:00
e139a55143 feat(cloud_point): SCARED dataset validation with real endoscopic stereo data
- ScaredDatasetLoader: loads M1/D1/M2/D2/R/T from OpenCV YAML + Left/Right PNGs
- scared_dataset_server executable serving get-stereo-calibration and get-image-pair
- E2E test against SCARED dataset with GTEST_SKIP guard (requires SCARED_KEYFRAME_DIR)
- README SCARED dataset validation section with CLI options and mm->m conversion
- CLI disparity-range caveat documentation

TG-2 #in-progress
2026-07-12 22:28:21 +03:00
162c210a7d feat(cloud_point): stereo rectification, point cloud pipeline, and CloudPointClient facade
- StereoRectifier wrapping cv::stereoRectify + cv::initUndistortRectifyMap (CV_16SC2 maps)
- PointCloudBuilder with cv::reprojectImageTo3D and depth/NaN filtering
- CloudPointClient high-level facade: connect(), compute_cloud() -> std::expected<PointCloud, Error>
- write_ply() ASCII PLY export helper
- CLI options 4 (compute-cloud) and 5 (compute-cloud + save PLY)
- Fix TcpServer to loop over multiple requests per connection
- Expose num_disparities parameter through CloudPointClient and StereoMatcherFactory
- Unity C# integration design spec
- Sync README, AGENTS, openwiki with stereo pipeline (C++23)
- E2E synthetic-scene test with constant-disparity stereo pair

TG-9 #ready-for-test
TG-4 #ready-for-test
TG-2 #in-progress
2026-07-12 22:28:21 +03:00
d486f550d2 feat(rpc): stereo calibration and image-pair wire protocol
- Remove unused stdexec dependency
- Fix dangling cv::Mat references and swapped dimensions in image/matrix factories
- Add CameraCalib, StereoCalibrationRPC, ImagePairRPC DTOs with nlohmann serialization
- Implement get-stereo-calibration and get-image-pair RPC handlers with deterministic mock data
- Extend RpcClient with typed getters and params-bearing call overload
- Restructure API.md with full JSON schemas and conventions
- 13 unit and integration tests for serialization

TG-3 #in-progress
TG-7 #ready-for-test
2026-07-12 22:28:21 +03:00
24b6f9937f feat(cloud_point): add OpenCV integration, stereo matching, and get-available-methods RPC
- Add OpenCV and stdexec dependencies
- ImageRPC type bridging OpenCV and RPC layers
- Stereo rectification boilerplate
- get-available-methods RPC method with get_count/get_method_name_by_id/get_method_names
- Tests for remote method retrieval
- CPU/GPU stereo matcher interfaces with SGBM implementation
- Documentation consistency pass across impl and docs

TG-5 #ready-for-test
TG-2 #in-progress
2026-07-12 22:28:21 +03:00
9de6f5a82d fix(glog) init in tests
All checks were successful
Verification / Is-Buildable (push) Successful in 3m10s
:Release Notes:
-

:Detailed Notes:
-

:Testing Performed:
-

:QA Notes:
-

:Issues Addressed:
-
2026-06-24 00:04:46 +03:00
Artur Mukhamadiev
33dd44f454 [feat] add minimal client and address-based init
All checks were successful
Verification / Is-Buildable (push) Successful in 3m40s
- add crpc_init_with_address for direct ip/port startup without yaml
- add minimal_client.cpp example using TCPConnector to send a ping
- set install_rpath '$ORIGIN' on shared libs so they find bundled deps
- ignore .worktrees/ for git worktree scratch directories
2026-06-02 16:18:31 +03:00
Artur Mukhamadiev
3dcaf9fbae [fix] resolved several issues found by AI
Some checks failed
Verification / Is-Buildable (push) Failing after 2m41s
2026-04-21 16:51:46 +03:00
Artur Mukhamadiev
be4dc501ae [fix] test api log to stderr
Some checks failed
Verification / Is-Buildable (push) Failing after 2m45s
2026-04-20 17:00:09 +03:00
e9e15a20a2 [fix] compilation of this tag on windows
Some checks failed
Verification / Is-Buildable (push) Failing after 2m4s
2026-04-14 00:12:16 +03:00
Artur Mukhamadiev
5634773eaf [fix] build file fixes for linux and newer CMake
Some checks failed
Verification / Is-Buildable (push) Failing after 2m51s
:Release Notes:
-

:Detailed Notes:
-

:Testing Performed:
-

:QA Notes:
-

:Issues Addressed:
-
2026-04-13 23:25:11 +03:00
603646c230 [base64] minimal encode/decode of raw string 2026-03-12 00:09:26 +03:00
e0295f21b5 [style] main namespace renamed to SCORE
based on new suggested project name
2026-03-11 16:38:50 +03:00
69466a1771 [docs] change docs + base64
Some checks failed
Verification / Is-Buildable (push) Failing after 53s
TG-3 #ready
2026-03-07 21:06:21 +03:00
f94a23b723 [test-c-api] appended api with helpful methods
valgrind doesn't reports any error
thread sanitizer reports one issue on test tear down (need to
investigate)
2026-03-01 23:54:06 +03:00
e0ac93c657 [c_api] added c api for libs
changed project structure, now relying on shared libraries
2026-02-27 22:03:09 +03:00
ece26e7b1f [jsonrpccxx] moved to external rpc impl
Detailed:
      As base used jsonrpccxx implementation paired with TCP socket
      TCP socket updated to handle dynamic sized buffers
      TCP communication protocol changed to serialized packet size after
      which json string is presented
2026-02-20 17:51:14 +03:00
54c169a845 [cli] added cli for testing capabilities
Gemini 3 pro + opencode
2026-01-26 00:24:43 +03:00
cbe56d9193 [base] hail vibe-coding
Minimal API functionality with unit tests,
could be used for integration tests with Unity server.
For internal testing used RPC_server implementation
2026-01-26 00:14:19 +03:00