npx skills add ...
npx skills add nvidia/skills --skill amc-run-sample-calibration
Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.
npx skills add nvidia/skills --skill amc-run-sample-calibration
Activate this skill when the user wants to sanity-check a running AMC stack with the bundled sample dataset. Typical prompts:
amc-setup-calibration-stack if the MS isn't already running)Do NOT use this skill when:
/data/videos/, cam_*.mp4 not from the bundled zip) — route to amc-run-video-calibration.rtsp://... URLs — route to amc-run-rtsp-calibration.assets/sdg_08_2_sample_data_010926.zip.Prerequisite: AMC microservice running on a port in 8000-8009. If no backend is detected, delegate to amc-setup-calibration-stack first.
If execution cannot proceed in the current environment (no backend, missing sample data, etc.), surface the blocker AND describe the expected workflow + API sequence concisely so the user understands what will run once prerequisites are met. Do not fabricate calibration outputs, evaluation metrics, or trajectories.
Run a full calibration on the bundled sample dataset (sdg_08_2_sample_data_010926.zip, 4 synthetic warehouse cameras with ground truth) against a running AutoMagicCalib microservice. Useful for verifying that a freshly-launched stack works end-to-end before throwing real data at it.
The sample includes GT, so the run produces evaluation metrics (L2 distance, reprojection error) — no calibration parameter tuning needed.
skills/amc-setup-calibration-stack/SKILL.md if not)assets/sdg_08_2_sample_data_010926.ziprequests installed, or use the Swagger UI path below
python3 -m pip install requestspip is unavailable, install your distro's Python packaging support first"launch AMC and test sample dataset" (or similar):
skills/amc-setup-calibration-stack/SKILL.md first./v1/ready to return OK.vggt_state: READY; otherwise the script explains that VGGT setup is optional and can be enabled later for refinement."test sample dataset" (MS already running):
/v1/ready response.Run the bundled script from the amc-run-sample-calibration skill package, not from the auto-magic-calib repo root. If the user points the agent at this skill folder directly instead of installing it, set AMC_SAMPLE_SKILL_DIR to the directory containing this SKILL.md, or run the command from that directory. Set REPO_ROOT to the AutoMagicCalib checkout resolved by amc-setup-calibration-stack; the script auto-detects a running backend on localhost ports 8000-8009 when BASE_URL / MS_PORT are not set, accepts BASE_URL, MS_PORT, SAMPLE_DIR, and RUN_VGGT overrides, creates a fresh project each run, attempts VGGT when ready, and prints the NGC warehouse dataset note at the end.
Agent shortcut: if the user explicitly requested a Swagger UI walkthrough (or said "no Python"), emit the table below and stop — do not invoke shell tooling, read other sections, or run the bundled Python script.
The microservice exposes an interactive OpenAPI UI at http://<HOST_IP>:<MS_PORT>/docs. If you prefer clicking through the API by hand:
Open http://<HOST_IP>:<MS_PORT>/docs in a browser.
Unzip sdg_08_2_sample_data_010926.zip into a cache directory next to it.
Execute these endpoints in order, copying the project_id from step 1 into subsequent paths:
| # | Endpoint | Body / Files |
|---|---|---|
| 1 | POST /v1/create_project | project_name: any string |
| 2 | POST /v1/upload_video_files/{project_id} | files: upload all 4 videos/cam_0*.mp4 sorted by name |
| 3 | POST /v1/upload_alignment/{project_id} | alignment_file: alignment_data/alignment_data.json |
| 4 | POST /v1/upload_layout/{project_id} | layout_file: alignment_data/layout.png |
| 5 | POST /v1/upload_gt_file/{project_id} | gt_file: GT.zip |
| 6 | POST /v1/verify_project/{project_id} | — (expect project_state: READY) |
| 7 | POST /v1/calibrate/{project_id} | JSON: {"detector_type": "resnet"} |
| 8 | GET /v1/get_project_info/{project_id} | Refresh every ~10 s until project_state = COMPLETED |
| 9 | GET /v1/result/{project_id}/evaluation_statistics | Read L2 distance + reprojection error |
| 10 optional | POST /v1/vggt/calibrate/{project_id} then GET /v1/vggt_results/{project_id}/evaluation_statistics | Run only when vggt_state is READY; poll vggt_state until COMPLETED |
This is the same sequence the bundled Python script runs, just executed manually. Step 10 is attempted by default when vggt_state is READY; otherwise it is skipped with setup guidance.
get_project_infoproject_info.project_state is the AMC calibration lifecycle for the project. Poll it until it reaches COMPLETED (or stop on ERROR).
project_info.vggt_state is a per-project VGGT refinement lifecycle, a project-scoped status rather than a direct global service or model-load status. A newly created project can report vggt_state: "INIT" even when the VGGT model is present and mounted. The expected lifecycle is INIT → READY after AMC calibration completes → RUNNING while VGGT refinement runs → COMPLETED (or ERROR). Interpret INIT on a new or uncalibrated project as normal project state. If AMC calibration is complete and the project remains in a non-ready VGGT state, confirm VGGT setup and model availability with the setup skill checks and service logs.
project_state == "COMPLETED" within ~30 min./v1/result/{id}/evaluation_statistics returns non-empty statistics (GT was uploaded).vggt_state == "COMPLETED" and reports /v1/vggt_results/{id}/evaluation_statistics, or is skipped with setup guidance because the project is not READY for VGGT.ERROR state encountered.Representative metrics for the sample (yours should be similar):
Results persist under $REPO_ROOT/projects/project_<project_id>/:
Or stream MS logs:
| Issue | Fix |
|---|---|
requests not installed | Install it before running the script: python3 -m pip install requests |
[2] Uploaded N videos where N >> 4 | SAMPLE_DIR resolved to the repo root (or another over-broad path) and rglob("cam_*.mp4") swept stale videos from .cache/, projects/, etc. Correct SAMPLE_DIR, then start a fresh project instead of trying to salvage the bad upload set. The script anchors on videos/ and asserts len(videos) <= 16 to fail loud |
verify_project returns state != READY | Confirm all 4 videos + alignment + layout + GT uploaded; inspect GET /v1/get_project_info/{id} response |
| Sample not extracted | unzip <repo_root>/assets/sdg_08_2_sample_data_010926.zip -d <repo_root>/assets/.cache/sdg_08_2_sample_data_010926/ |
cam_*.mp4 glob finds 0 files | Check wrapper-folder depth: find <sample_dir> -name "cam_*.mp4" |
| Calibration times out (>60 min) | Check calibration.log for "insufficient tracklets"; see root README.md guidelines on input videos |
| Upload returns 413 | Raise server upload limit, or split files (sample files are <200 MB total so this is unusual) |
| Port scan finds no backend | Backend not running — run amc-setup-calibration-stack skill |
The root README.md also documents nv_warehouse_032326.zip, a real-world warehouse dataset available from NGC. Download it with ngc registry resource download-version "nvidia/amc-nv-warehouse"; then use amc-run-video-calibration, upload nv_warehouse_config.json in the config step, and run with the transformer detector. It does not include ground-truth data.
skills/amc-setup-calibration-stack/SKILL.md — launch MS + UI (prerequisite).skills/amc-run-video-calibration/SKILL.md — run calibration on your own pre-recorded MP4s.skills/amc-run-rtsp-calibration/SKILL.md — run calibration from live RTSP streams through VIOS capture.Root README.md "Sample Data Setup" and "Calibration Workflow (UI)" sections cover the human-oriented path through the same sample.