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).