Summary
When receiving a ZED stream (InitParameters.input.setFromStream(...)), video frames arrive fine and depth is computed locally, but positional tracking intermittently never starts: getPosition() keeps returning an identity transform (rotation = I, translation = 0,0,0). This happens especially when the streaming sender is started as a standalone executable (double-click) or headless over SSH. If I start the exact same sender from VS Code on the host machine, tracking usually works.
Environment
-
Camera: ZEDX Mini
-
Host (sender) OS & GPU: Zed Box Mini
-
Receiver OS & GPU: Ubuntu 24.04, RTX 4060Ti
-
ZED SDK: 5.0.3 (same version on both machines)
-
Streaming:
InitParameters.input.setFromStream(<ip>, <port>) -
Depth mode:
DEPTH_MODE::NEURAL(computed on the receiver) -
Build: C++ application
-
Run contexts that fail more often:
-
Sender launched by double-clicking the built executable (not from VS Code)
-
Sender launched headless over SSH
-
-
Run context that works more often:
- Sender launched from inside VS Code on the host machine
What I’ve tried
-
Confirmed
enablePositionalTracking()returnsSUCCESS. -
Logging
getPosition()state: I sometimes see OK, other times SEARCHING; but even with OK, the pose values don’t change (identity / zeros). -
Resetting positional tracking during runtime (
resetPositionalTracking()), no change in the bad runs. -
Different camera/resolution/FPS (HD720 @ 60 vs lower), same result.
-
Verified sender and receiver both on the same ZED SDK version.
-
Ensured depth is valid on the receiver (NEURAL).
-
Headless/SSH runs: ensured no OpenGL rendering is required on the sender (pure streaming).