Meta Wearables + Flutter: Native Camera Pipelines and Zero-Copy Design Principles A Flutter tutorial details how to build operator-facing wearable interfaces that keep safety-critical control loops on the robot, using native and ROS 2 pipelines with NVIDIA-accelerated inference on Jetson while Flutter handles presentation. The guide recommends tracking p50, p95 and p99 latency alongside freshness, throughput, CPU, memory, battery and thermal state, and warns that a single FPS number can mask stale data. It prescribes bounded queues with explicit overflow policies, a latest-value cache for state-like data, and profiling on physical targets in profile mode rather than debug mode. Meta Wearables + Flutter: Native Camera Pipelines and Zero-Copy Design Principles Meta Wearables + Flutter: Native Camera Pipelines and Zero-Copy Design Principles This advanced tutorial treats Flutter as the operator-facing presentation layer while wearable SDKs, Jetson services, ROS 2 nodes, and NVIDIA-accelerated inference handle device-specific or compute-heavy work. The go Meta Wearables + Flutter: Native Camera Pipelines and Zero-Copy Design Principles This advanced tutorial treats Flutter as the operator-facing presentation layer while wearable SDKs, Jetson services, ROS 2 nodes, and NVIDIA-accelerated inference handle device-specific or compute-heavy work. The goal is predictable latency, bounded memory, useful observability, and graceful degradation—not simply maximizing message throughput. Architecture note: Keep safety-critical control loops on the robot. A Flutter app is not a hard real-time controller and must not be the sole safety mechanism. Track freshness, event-to-display latency, throughput, frame pacing, CPU, memory, network use, battery, thermal state, dropped messages, reconnect time, and command acknowledgements. Do not use a single FPS number to represent the entire system: a smooth screen can still display stale data. sensor capture - native/ROS processing - gateway publish - Flutter receive - state accepted - widget build - frame rendered Record source and receive timestamps separately. Use monotonic clocks for elapsed durations within a process. When comparing devices, account for clock offset and uncertainty. Profile on a physical target in profile mode and inspect Flutter DevTools' Performance view. Debug-mode timing is not a reliable production baseline. See https://docs.flutter.dev/tools/devtools/performance Start from a clean launch. Connect to the robot or replay a fixed trace. Run a representative scenario for several minutes. Record frame times, memory, CPU, message rates, stale-data counts, and reconnects. Change one variable at a time. Compare p50, p95, and p99 latency, not just averages. class PipelineMetrics { int received = 0; int accepted = 0; int dropped = 0; int stale = 0; int uiPublishes = 0; } Use bounded metric windows or histograms; do not store every sample forever. High-rate sources should not directly trigger widget rebuilds. Use a latest-value cache for state-like data, bounded queues for events that must be preserved, and a controlled presentation cadence. class LatestValue