Add extensible Robot Vision Platform monorepo - #1
Conversation
|
문자가 깨진게 없는지 체크 @copilot |
There was a problem hiding this comment.
Pull request overview
This PR introduces the initial “Robot Vision Platform” monorepo skeleton, spanning edge (C++20) device pipeline scaffolding, an ASP.NET Core ingest/monitoring server MVP, shared protobuf contracts, Python model tooling, plus documentation and CI/scripts to support a Phase 0 end-to-end smoke path.
Changes:
- Add MVP server ingest API + in-memory device registry + SignalR fan-out worker and a simple polling web dashboard.
- Add portable C++20 device pipeline core with bounded latest-frame queue, synthetic adapters, and optional HTTP event sink.
- Add Python ONNX inspection/validation + manifest tooling, plus extensive docs/reference material and GitHub Actions workflows.
Reviewed changes
Copilot reviewed 88 out of 89 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| RobotVisionPlatform/tips/training/fine-tuning-playbook.md | Fine-tuning execution checklist/playbook. |
| RobotVisionPlatform/tips/resources/official-resources.md | Curated official reference links for platform stack. |
| RobotVisionPlatform/tips/README.md | Tips index + recommended reading order. |
| RobotVisionPlatform/tips/fundamentals/vision-training-basics.md | Intro concepts for vision training terminology/practice. |
| RobotVisionPlatform/tips/evaluation/edge-evaluation.md | Edge evaluation checklist (accuracy + system metrics). |
| RobotVisionPlatform/tips/deployment/jetson-optimization.md | Jetson deployment/optimization checklist. |
| RobotVisionPlatform/tips/data/dataset-engineering.md | Dataset engineering guidelines for vision workloads. |
| RobotVisionPlatform/shared/proto/vision/v1/device.proto | Initial device/server gRPC control-plane contract draft. |
| RobotVisionPlatform/server/tests/RobotVision.Server.Tests/RobotVision.Server.Tests.csproj | Minimal console-based server behavior test project. |
| RobotVisionPlatform/server/tests/RobotVision.Server.Tests/Program.cs | Smoke test verifying registry ordering behavior. |
| RobotVisionPlatform/server/src/RobotVision.Server.Contracts/RobotVision.Server.Contracts.csproj | Contracts project scaffold. |
| RobotVisionPlatform/server/src/RobotVision.Server.Contracts/DeviceContracts.cs | C# DTO/snapshot contracts for ingest and UI. |
| RobotVisionPlatform/server/src/RobotVision.Server.Api/wwwroot/index.html | MVP web monitor UI (polling snapshots). |
| RobotVisionPlatform/server/src/RobotVision.Server.Api/RobotVision.Server.Api.csproj | ASP.NET Core API project scaffold. |
| RobotVisionPlatform/server/src/RobotVision.Server.Api/Program.cs | Minimal API routes, registry/channel wiring, hosted worker. |
| RobotVisionPlatform/server/src/RobotVision.Server.Api/MonitoringHub.cs | SignalR hub for per-device group subscriptions. |
| RobotVisionPlatform/server/src/RobotVision.Server.Api/Dockerfile | Container build/publish for server API. |
| RobotVisionPlatform/server/src/RobotVision.Server.Api/DeviceRegistry.cs | Thread-safe latest snapshot store using ConcurrentDictionary. |
| RobotVisionPlatform/server/src/RobotVision.Server.Api/DetectionFanoutWorker.cs | Background worker reading bounded channel and fanning out to SignalR. |
| RobotVisionPlatform/server/src/RobotVision.Server.Api/appsettings.json | Kestrel endpoint/protocol + logging defaults. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/wwwroot/index.html | MAUI BlazorWebView host page scaffold. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/RobotVision.Dashboard.Maui.csproj | MAUI Blazor Hybrid dashboard project skeleton. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/MauiProgram.cs | MAUI app DI + BlazorWebView setup. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/MainPage.xaml.cs | MAUI page code-behind scaffold. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/MainPage.xaml | MAUI page hosting BlazorWebView root component. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/Main.razor | Placeholder shared Razor UI entry component. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/App.xaml.cs | MAUI app initialization. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/App.xaml | MAUI app resources scaffold. |
| RobotVisionPlatform/server/src/RobotVision.Dashboard.Maui/_Imports.razor | Razor imports for MAUI Blazor UI. |
| RobotVisionPlatform/server/RobotVision.Server.slnx | Solution definition for server (excluding MAUI by default). |
| RobotVisionPlatform/server/README.md | Server run instructions + demo event + optional MAUI build. |
| RobotVisionPlatform/server/Directory.Build.props | Shared .NET build settings (net10, nullable, warnings-as-errors). |
| RobotVisionPlatform/scripts/test.sh | Unified test runner (server + python + ctest) for Linux/Jetson. |
| RobotVisionPlatform/scripts/test.ps1 | Unified test runner for Windows (optional C++ tests). |
| RobotVisionPlatform/scripts/send-demo-event.ps1 | PowerShell demo event sender for ingest smoke testing. |
| RobotVisionPlatform/scripts/build.sh | Unified build script for .NET server + C++ device on Linux/Jetson. |
| RobotVisionPlatform/scripts/build.ps1 | Unified build script for Windows with compiler detection. |
| RobotVisionPlatform/reference/scripts-and-protocol-reference.md | Reference explaining scripts, protobuf/gRPC basics, build commands. |
| RobotVisionPlatform/reference/README.md | Reference index mapping concepts to files/starting points. |
| RobotVisionPlatform/reference/python-model-tools-reference.md | Python tooling reference (argparse, ORT, ONNX, numpy, etc.). |
| RobotVisionPlatform/reference/csharp-server-reference.md | C# server reference (DI, Channel, SignalR, records, etc.). |
| RobotVisionPlatform/reference/cpp20-device-reference.md | C++20 device reference (interfaces, jthread, stop_token, etc.). |
| RobotVisionPlatform/README.md | Top-level platform overview, architecture, TODO phases, quickstart. |
| RobotVisionPlatform/docs/troubleshooting.md | Troubleshooting for dotnet/C++/ports/MAUI/Jetson setup. |
| RobotVisionPlatform/docs/streaming-and-protocols.md | Rationale for WebRTC/gRPC/SignalR and compression guidance. |
| RobotVisionPlatform/docs/security-and-operations.md | Security/ops principles (mTLS, secrets handling, guardrails). |
| RobotVisionPlatform/docs/README.md | Docs index and maintenance guidance. |
| RobotVisionPlatform/docs/model-lifecycle.md | Model lifecycle narrative + example manifest structure. |
| RobotVisionPlatform/docs/jetson-deployment.md | Jetson preparation/deploy steps and operational checks. |
| RobotVisionPlatform/docs/initial-release-guide.md | v0.1.0 release validation + rollout/rollback guidance. |
| RobotVisionPlatform/docs/glossary.md | Glossary for newcomers. |
| RobotVisionPlatform/docs/getting-started-for-beginners.md | Beginner walkthrough for running server + sending demo events. |
| RobotVisionPlatform/docs/architecture.md | High-level architecture + boundaries + pipeline sketch. |
| RobotVisionPlatform/docs/adr/0001-platform-architecture.md | ADR capturing primary tech choices and consequences. |
| RobotVisionPlatform/device/tools/model/validate_onnx.py | ONNX Runtime execution + stats/latency benchmarking tool. |
| RobotVisionPlatform/device/tools/model/tests/test_create_manifest.py | Unit test for manifest creation CLI behavior. |
| RobotVisionPlatform/device/tools/model/README.md | Overview of model tooling usage. |
| RobotVisionPlatform/device/tools/model/pyproject.toml | Python tool dependencies and optional export extras. |
| RobotVisionPlatform/device/tools/model/inspect_onnx.py | ONNX checker + shape inference + contract printer. |
| RobotVisionPlatform/device/tools/model/export_ultralytics.py | Ultralytics checkpoint -> ONNX export helper. |
| RobotVisionPlatform/device/tools/model/create_manifest.py | Deterministic manifest generator with streaming SHA-256. |
| RobotVisionPlatform/device/tools/model/build_tensorrt_engine.sh | Jetson-side FP16 TensorRT engine build+benchmark script. |
| RobotVisionPlatform/device/tests/core_tests.cpp | Dependency-free C++ smoke tests for queue + pipeline lifecycle. |
| RobotVisionPlatform/device/src/synthetic_adapters.cpp | Synthetic camera/detector + console sink adapters. |
| RobotVisionPlatform/device/src/pipeline.cpp | Core pipeline threads and event publishing logic. |
| RobotVisionPlatform/device/src/main.cpp | Device executable with simple CLI and signal-based shutdown. |
| RobotVisionPlatform/device/src/http_event_sink.cpp | Optional Boost.Beast HTTP JSON event sink (MVP). |
| RobotVisionPlatform/device/README.md | Device build/run instructions + adapter roadmap. |
| RobotVisionPlatform/device/models/example/manifest.json | Example model bundle manifest template. |
| RobotVisionPlatform/device/models/example/labels.txt | Example labels file for model bundle. |
| RobotVisionPlatform/device/include/rv/types.hpp | Core device types (Frame/Detection/Event/Stats). |
| RobotVisionPlatform/device/include/rv/pipeline.hpp | Pipeline interface and ownership/threading model. |
| RobotVisionPlatform/device/include/rv/interfaces.hpp | Camera/detector/sink interfaces + factory declarations. |
| RobotVisionPlatform/device/include/rv/bounded_queue.hpp | Bounded latest-frame queue implementation. |
| RobotVisionPlatform/device/guides/tensorrt-on-jetson.md | How/why to build TensorRT engines on Jetson. |
| RobotVisionPlatform/device/guides/README.md | Guide index for device model deployment. |
| RobotVisionPlatform/device/guides/onnx-workflow.md | Practical ONNX workflow from export to validation to manifest. |
| RobotVisionPlatform/device/guides/model-bundle.md | Model bundle composition and rollout/rollback rules. |
| RobotVisionPlatform/device/guides/deepstream-custom-model.md | Notes for plugging a custom model into DeepStream. |
| RobotVisionPlatform/device/config/device.example.toml | Example device configuration template. |
| RobotVisionPlatform/device/config/deepstream/config_infer_primary.example.txt | Example DeepStream nvinfer config template. |
| RobotVisionPlatform/device/CMakeLists.txt | CMake build for core lib, executable, optional Boost sink, tests. |
| RobotVisionPlatform/deploy/systemd/robot-vision-device.service | systemd unit template for device agent hardening. |
| RobotVisionPlatform/deploy/compose/docker-compose.yml | Compose file to run/build server API. |
| RobotVisionPlatform/.gitignore | Ignore rules for builds, venvs, secrets, artifacts. |
| RobotVisionPlatform/.gitattributes | EOL normalization for scripts/proto/service files. |
| .github/workflows/robot-vision-release-device.yml | Self-hosted Jetson ARM64 release artifact workflow. |
| .github/workflows/robot-vision-ci.yml | CI for device build/test, model tools tests, and server build/test. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| /// <summary>장치 ID를 서버 전체에서 일관된 group 이름으로 변환합니다.</summary> | ||
| public static string GroupName(string deviceId) => $"device:{deviceId}"; |
| void Pipeline::InferenceLoop(std::stop_token stop) { | ||
| while (!stop.stop_requested()) { | ||
| // Pop은 새 프레임, queue close, stop 요청 중 하나가 발생할 때 깨어납니다. | ||
| auto frame = frames_.Pop(stop); | ||
| if (!frame) break; | ||
| auto detections = detector_->Infer(*frame); | ||
| ++inferred_; | ||
| // model version과 원본 sequence를 함께 보내 서버가 결과의 출처를 추적하게 합니다. | ||
| DetectionEvent event{.device_id = options_.device_id, | ||
| .sequence = frame->sequence, | ||
| .captured_at = frame->captured_at, | ||
| .model_version = detector_->Version(), | ||
| .detections = std::move(detections)}; | ||
| // false는 전송 실패를 의미합니다. production sink는 자체 retry/spool 정책을 가져야 합니다. | ||
| if (sink_->Publish(event)) ++published_; | ||
| } | ||
| } |
| std::string Escape(std::string_view value) { | ||
| // 이 MVP JSON writer가 사용하는 문자열 필드에서 최소한의 quote/backslash escaping을 합니다. | ||
| // production에서는 검증된 JSON serializer를 사용해 control character까지 처리해야 합니다. | ||
| std::string result; | ||
| for (char ch : value) { | ||
| if (ch == '"' || ch == '\\') result.push_back('\\'); | ||
| result.push_back(ch); | ||
| } | ||
| return result; | ||
| } |
| .venv/ | ||
| __pycache__/ | ||
| secrets/ | ||
| models/*.engine |
모든 파일을 확인했습니다. PR 설명 본문에 보이는 |
|
@copilot Fix the code for all comments in this review thread. When a review comment includes a suggested change, apply the suggestion exactly. Do not make changes beyond what is described in the linked review thread. |
…eLoop exception handling, control-char escaping, global engine/plan gitignore Co-authored-by: hundong2 <17015362+hundong2@users.noreply.github.com>
All five review issues addressed in commit
|
?? ??
RobotVisionPlatform????? ??? ?? TODO? ??????.??? ??
?? ?? ??? ?? ???? ONNX/TensorRT? Jetson? ????, ?? ???? ?? ??? ??? ???? ???? ?? ?? ??? ? ?????. ?? MVP? synthetic camera/detector? ??? ??? ????, ?? CSI/USB camera, TensorRT/DeepStream inference, WebRTC, gRPC/mTLS, VLM/VLA? README? ??? TODO? ??????.
???? ?? ?? ? ?? ??? ?? ? ?? ?? ?? ? C++ ?? ?? ? ONNX/TensorRT ?? ??? ??? ? ??? ??? ??/?? ??? ?????.
??
?? ??