Skip to content

Add extensible Robot Vision Platform monorepo - #1

Merged
hundong2 merged 7 commits into
mainfrom
agent/robot-vision-platform
Aug 19, 2026
Merged

hundong2 merged 7 commits into
mainfrom
agent/robot-vision-platform

Conversation

@hundong2

Copy link
Copy Markdown
Owner

?? ??

  • RobotVisionPlatform ????? ??? ?? TODO? ??????.
  • Jetson Orin Nano Super? C++20 ?? ?????, bounded latest-frame queue, ?? ??? camera/detector/event sink ?????? ??????.
  • ASP.NET Core ?? API, SignalR fan-out, ? ?? ??? MAUI Blazor Hybrid ??? ??????.
  • ONNX ??????manifest ?? ??? Jetson TensorRT engine ?? ????, DeepStream ?? ??? ??????.
  • Docker Compose, systemd, GitHub Actions CI ? self-hosted Jetson ARM64 ??? ??? ??????.
  • ??? ?? ???, ?? tips, ?? ?? ??? C++/C#/Python/???? Reference ??? ??????.

??? ??

?? ?? ??? ?? ???? ONNX/TensorRT? Jetson? ????, ?? ???? ?? ??? ??? ???? ???? ?? ?? ??? ? ?????. ?? MVP? synthetic camera/detector? ??? ??? ????, ?? CSI/USB camera, TensorRT/DeepStream inference, WebRTC, gRPC/mTLS, VLM/VLA? README? ??? TODO? ??????.

???? ?? ?? ? ?? ??? ?? ? ?? ?? ?? ? C++ ?? ?? ? ONNX/TensorRT ?? ??? ??? ? ??? ??? ??/?? ??? ?????.

??

  • .NET 10 Release build: ?? 0, ?? 0
  • ?? core test ??
  • GCC 13 C++20 build ? CTest ??
  • Python compile ? model-tool unittest ??
  • ?? ?? ONNX graph? checker, shape inference, ONNX Runtime CPU inference ??
  • Bash syntax ? PowerShell script syntax ?? ??
  • ?? Markdown ??? staged diff whitespace ?? ??

?? ??

  • ?? Jetson camera adapter ? TensorRT/DeepStream detector
  • gRPC/mTLS device session? offline spool
  • NVENC H.264/WebRTC media plane
  • PostgreSQL/object storage ? VLM worker
  • ??? model OTA, canary ??? rollback

@hundong2
hundong2 requested a lite review from Copilot August 19, 2026 02:59
@hundong2
hundong2 marked this pull request as ready for review August 19, 2026 03:00
@hundong2

Copy link
Copy Markdown
Owner Author

문자가 깨진게 없는지 체크 @copilot

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread RobotVisionPlatform/server/src/RobotVision.Server.Api/Program.cs
Comment on lines +16 to +17
/// <summary>장치 ID를 서버 전체에서 일관된 group 이름으로 변환합니다.</summary>
public static string GroupName(string deviceId) => $"device:{deviceId}";
Comment on lines +60 to +76
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_;
}
}
Comment on lines +19 to +28
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;
}
Comment thread RobotVisionPlatform/.gitignore Outdated
.venv/
__pycache__/
secrets/
models/*.engine

Copilot AI commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

문자가 깨진게 없는지 체크 @copilot

모든 파일을 확인했습니다. RobotVisionPlatform 디렉토리의 모든 파일은 유효한 UTF-8로 인코딩되어 있으며, 깨진 문자(replacement character U+FFFD, null bytes, 인코딩 오류)가 없습니다. 한글 텍스트도 정상적으로 읽힙니다 (예: README.md — "Jetson Orin Nano Super에서 비전 추론을 수행하고...").

PR 설명 본문에 보이는 ?? 기호는 파일 내용이 아니라, PR 생성 시 텍스트 인코딩 처리 과정에서 발생한 표시 문제입니다. 실제 저장소 파일에는 문제가 없습니다.

@hundong2

Copy link
Copy Markdown
Owner Author

@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>

Copilot AI commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

@copilot Fix the code for all comments in this review thread.

When a review comment includes a suggested change, apply...

All five review issues addressed in commit Fix review issues:

  1. Program.cs – Added item.Detections is null guard before .Count to avoid NullReferenceException on malformed payloads.
  2. MonitoringHub.cs – GroupName now throws ArgumentException for empty/whitespace or deviceId > 64 chars.
  3. pipeline.cpp – InferenceLoop wrapped in try/catch(std::exception) matching CaptureLoop, preventing std::terminate.
  4. http_event_sink.cpp – Escape() now handles \n, \r, \t and drops other < 0x20 control characters (fixed break → continue).
  5. .gitignore – Changed models/*.engine to **/*.engine and added **/*.plan for global coverage.

@hundong2
hundong2 merged commit 8159328 into main Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants