Manriix
Autonomous event robot that captures professional-grade photography and video live, at scale, running unattended through full event days with 4K capture and context-aware advertising displays. I developed the core systems that make this possible, including mission orchestration, cloud-edge voice AI, voice-guided photo capture, multi-camera navigation, camera control, and photo retrieval, spanning the decision-making, perception, and voice layers that let the robot operate autonomously among real crowds.
Developed under a non-disclosure agreement at Hype Insight Global. Internal architecture, dashboards, and footage cannot be shared. The summary below reflects the actual systems I built. The product itself can be viewed at manriix.com.
Robot Mission Orchestration System using Behavior Trees
Built with BehaviorTree.CPP, this system is the robot's mission-level decision layer, coordinating safety, voice interaction, navigation, photo sessions, and docking through a single reactive behavior tree rather than a hand-rolled state machine. Interrupted missions resume from the exact point of interruption through atomic, crash-safe mission-state persistence, and a structured recovery chain handles failed navigation, low battery, and emergency-stop conditions without human intervention. Mission execution stays fully observable through live Groot2 visualization, SQLite-backed behavior logs, and an automated contract-test suite covering preemption, persistence, and recovery paths.
Cloud-Synced Real-Time Voice AI Platform on the Edge
Pairs a cloud-hosted control plane with a Jetson-based edge runtime, so voice roles, event configuration, and knowledge bases can be updated remotely and pushed live to every deployed robot without rebuilding or restarting its voice stack. The edge runtime combines Deepgram speech recognition, an OpenAI-driven conversation layer, and ElevenLabs speech synthesis behind a self-hosted LiveKit media stack, with MQTT-based sync keeping cloud and robot state consistent even on unreliable connections. Voice state is bridged directly into ROS 2, turning conversation state into physical robot behavior, while every deployed device reports heartbeat, deployment progress, and health status back to the control plane.
TensorRT-Accelerated Voice-Guided Photo Capture on Edge
Runs a pose-estimation model with GPU-accelerated inference on the robot's Jetson to detect people and estimate body pose in real time, targeting sub-15-millisecond inference to keep pace with a 10Hz vision loop. A face-analysis model confirms a subject is facing the camera, while an Intel RealSense depth camera estimates 3D position through a layered extraction pipeline with statistical and bounding-box fallbacks for when the primary reading is unreliable. A composition engine classifies the scene as a portrait, couple, or group and adjusts target distance, spacing, and framing accordingly, translating the result into spoken positioning cues delivered through a separate voice system, then triggering the Canon camera and DJI gimbal to capture the shot the moment framing is correct.
GPU-Accelerated Human Detection & Clustering-Based Navigation
Processes live detections from three onboard ZED stereo cameras through a direct SDK integration rather than the standard ROS wrapper, sustaining an average of roughly 19 frames per second across all three feeds while keeping GPU utilization in the 20 to 30 percent range, leaving headroom for the robot's other AI workloads. CUDA-accelerated clustering groups detected people into crowds and formations, and a position-optimization loop scores candidate robot positions against distance, social space, and photo-composition criteria before handing a goal to the navigation stack. When navigation or perception degrades, an eight-level recovery escalation, from a simple wait through rescans, relocation, and safe parking, keeps the robot working the floor instead of stalling.
Optimized Camera Control & Live Streaming System on Edge
Controls a Canon mirrorless camera directly over USB, coordinating photo capture, video recording, and live streaming so they can run concurrently without the camera locking up or dropping a request. Live video is offloaded to the Jetson's hardware encoders, serving a 1280x720 30fps local preview alongside a separate authenticated 1280x720 15fps remote feed without loading the CPU. A multi-threaded ROS 2 executor keeps command handling, busy-state signaling, and streaming responsive at the same time, while storage preflight checks and automatic retry on file retrieval keep the system reliable across long, unattended event days.
Automated Photo Retrieval & Delivery Background Service on Edge
Runs as a background service watching the robot's photo-session folders in real time, using filesystem events with a scheduled polling fallback so no capture is missed even if a watch event is dropped. Every new photo, including Canon raw files, has its orientation corrected and a configurable rotation applied before being written to a capacity-bounded output folder that evicts the oldest file once 20 photos accumulate, keeping delivery fast and storage bounded during long sessions. A generated manifest file gives the robot's frontend a single source of truth to poll, while debounced file-event handling, rotating logs, and graceful shutdown keep the service stable through unattended, multi-day operation.








