Skip to content

Conversation

@jdanieck
Copy link
Contributor

@jdanieck jdanieck commented Jan 29, 2026

📝 Description

For a description see #943 (review). Time Chunking & Tracking will be added in #946.

Related PRs

Testing

Controller service disabled

image

Tracker service enabled

$ docker compose --profile tracker up tracker
WARN[0000] No services to build                         
[+] up 2/2
 ✔ Container scenescape-broker-1  Running                                                                 0.0s 
 ✔ Container scenescape-tracker-1 Created                                                                 0.0s 
Attaching to tracker-1
tracker-1  | Healthcheck server listening on port 8080
tracker-1  | {"timestamp":"2026-01-29T13:11:18.675Z","level":"INFO","msg":"Tracker service starting","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.676Z","level":"INFO","msg":"RobotVision TrackedObject size: 576","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.676Z","level":"INFO","msg":"Loaded 2 scenes with 4 cameras","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.676Z","level":"INFO","msg":"Cleared empty proxy environment variables (Paho MQTT workaround)","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.676Z","level":"INFO","msg":"MQTT client initializing: ssl://broker.scenescape.intel.com:1883 (client_id: tracker-fda3f9b3a54f-1)","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.676Z","level":"INFO","msg":"Schema validation enabled for MQTT messages","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.676Z","level":"INFO","msg":"MQTT connecting to broker.scenescape.intel.com:1883 (insecure=false)","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.676Z","level":"INFO","msg":"Subscribing to 4 camera topics","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.676Z","level":"INFO","msg":"Tracker service running, waiting for messages...","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.831Z","level":"INFO","msg":"MQTT connect action successful","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.831Z","level":"INFO","msg":"MQTT connect action successful","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.831Z","level":"INFO","msg":"MQTT connected: connect onSuccess called","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.831Z","level":"INFO","msg":"MQTT subscribing to: scenescape/data/camera/atag-qcam1 (QoS 1)","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.831Z","level":"INFO","msg":"MQTT subscribing to: scenescape/data/camera/atag-qcam2 (QoS 1)","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.831Z","level":"INFO","msg":"MQTT subscribing to: scenescape/data/camera/camera1 (QoS 1)","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.831Z","level":"INFO","msg":"MQTT subscribing to: scenescape/data/camera/camera2 (QoS 1)","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.832Z","level":"INFO","msg":"MQTT subscription successful","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.832Z","level":"INFO","msg":"MQTT subscription successful","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.872Z","level":"INFO","msg":"MQTT subscription successful","service":"tracker","version":"2026.0.0-dev","commit":""}
tracker-1  | {"timestamp":"2026-01-29T13:11:18.872Z","level":"INFO","msg":"MQTT subscription successful","service":"tracker","version":"2026.0.0-dev","commit":""}
image

✨ Type of Change

Select the type of change your PR introduces:

  • 🐞 Bug fix – Non-breaking change which fixes an issue
  • 🚀 New feature – Non-breaking change which adds functionality
  • 🔨 Refactor – Non-breaking change which refactors the code base
  • 💥 Breaking change – Changes that break existing functionality
  • 📚 Documentation update
  • 🔒 Security update
  • 🧪 Tests
  • 🚂 CI

🧪 Testing Scenarios

Describe how the changes were tested and how reviewers can test them too:

  • ✅ Tested manually
  • 🤖 Ran automated end-to-end tests

✅ Checklist

Before submitting the PR, ensure the following:

  • 🔍 PR title is clear and descriptive
  • 📝 For internal contributors: If applicable, include the JIRA ticket number (e.g., ITEP-123456) in the PR title. Do not include full URLs
  • 💬 I have commented my code, especially in hard-to-understand areas
  • 📄 I have made corresponding changes to the documentation
  • ✅ I have added tests that prove my fix is effective or my feature works

@jdanieck jdanieck requested a review from Copilot January 29, 2026 11:57
Copy link
Contributor

Copilot AI left a comment

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 support for multiple scenes in the tracker service (v0.3.0), enabling the system to handle camera-to-scene mappings and route detections accordingly. The changes move away from a hardcoded single scene model to a configurable multi-scene architecture.

Changes:

  • Added SceneRegistry class to manage camera-to-scene mappings with duplicate detection
  • Enhanced configuration loader to parse scene definitions from JSON config
  • Modified MessageHandler to subscribe to specific camera topics and route messages based on scene registry lookups
  • Updated test suite to reflect new multi-scene behavior and topic naming conventions

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tracker/inc/scene_registry.hpp New header defining SceneRegistry class and DuplicateCameraError exception for camera-scene mapping
tracker/inc/message_handler.hpp Updated to accept SceneRegistry reference and changed from wildcard to per-camera topic subscriptions
tracker/inc/config_loader.hpp Added structs for scenes, cameras, intrinsics, and distortion configuration
tracker/src/scene_registry.cpp Implementation of scene registration and camera lookup logic
tracker/src/message_handler.cpp Refactored to use scene registry for camera validation and per-category message publishing
tracker/src/main.cpp Added scene registry initialization from config with duplicate camera error handling
tracker/src/config_loader.cpp Added JSON parsing logic for scenes configuration section
tracker/config/tracker.json Added inline scene definitions with two scenes (Queuing and Retail) and multiple cameras
tracker/test/unit/scene_registry_test.cpp Comprehensive unit tests for scene registry functionality
tracker/test/unit/message_handler_test.cpp Updated tests to use scene registry and validate new multi-scene behavior
tracker/test/unit/config_loader_test.cpp Added tests for scene configuration loading and validation
tracker/test/unit/CMakeLists.txt Added scene_registry_test.cpp and source file to build
tracker/test/service/test_mqtt.py Updated topic constants to match new scene-specific topic format
tracker/CMakeLists.txt Added scene_registry.cpp to build sources
tracker/.gitignore Added docs/* to ignore list temporarily

@jdanieck jdanieck self-assigned this Jan 29, 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.

2 participants