3D visionExplainer

Which depth cameras output a pose stream and why most do not

A pose stream is 6-DOF tracking output: which depth cameras can produce one, why a stereo depth camera cannot, and how to check a model before you buy.

LumaSpec Vision9 min read Share on LinkedIn

On this page 9 sections
  1. 01What a pose stream actually carries
  2. 02Why the SDK lists a stream type the camera cannot fill
  3. 03The hardware that makes pose: a tracking module
  4. 04An IMU sample stream is not a pose stream
  5. 05What machine-vision 3D sensors output instead
  6. 06Worked example: pose and depth on the same wire
  7. 07Three checks before you order
  8. 08The decision, per case
  9. 09Questions

A stream type named pose appears in several 3D camera SDKs, and it is tempting to enable it on the depth camera already mounted over the bench. No frames arrive. The enumeration is not broken and neither is the camera: a pose stream is 6-DOF tracking data, and an ordinary depth camera carries no hardware that produces it. This guide separates the two stream families, works the bandwidth and rate numbers so you can tell which one a task needs, and gives you three checks to run before ordering a camera for tracking work or for a fixed inspection cell.

What a pose stream actually carries

A pose stream publishes the camera's own position and orientation in a reference frame, one sample per timestamp. Six degrees of freedom means three translation values and three rotation values, and SDKs ship the rotation as a four-component quaternion, so one pose sample is seven numbers plus a time.

pose(t) = (x, y, z, qx, qy, qz, qw) # 7 floats × 4 B = 28 B per sample

Tracking hardware publishes pose fast — 100-300 Hz in published visual-inertial odometry systems — because the consumer is a fusion loop or a controller that interpolates between samples. At 200 Hz and 28 B per sample that is 5,600 B/s, about 45 kbit/s: noise on a gigabit link.

Depth trades the other way. A 640 × 480 depth frame at 30 fps moves 614,400 B per frame, or 18.4 MB/s, so depth dominates bandwidth while pose dominates rate. Neither stream substitutes for the other, which is why they exist as separate types in the first place.

Why the SDK lists a stream type the camera cannot fill

One SDK usually serves a whole device family, and the stream-type enumeration in its header covers every model that family has shipped or announced. When a product line contains depth cameras and tracking modules, the pose entry belongs to the tracking module. Select it on a depth camera and the runtime either returns an error or sits at zero frames, because the sensor head carries depth, infrared and color pipelines and nothing else.

This is a hardware boundary, not a firmware gap. Pose requires an inertial measurement unit fused with camera images by a dedicated tracking engine, and no firmware release adds that silicon to a sensor that never had it. For a model whose data sheet lists only image streams, the answer to "will an update add pose" is no.

The hardware that makes pose: a tracking module

A tracking camera is a different product in a similar housing. Inside sit wide-angle cameras, an IMU sampled at a few hundred hertz, and a dedicated processor running visual-inertial SLAM. The IMU carries fast motion between frames; the cameras watch the scene and correct the inertial drift. That fusion needs tight, hardware-level time synchronization between the inertial and image data, which is why tracking units integrate the whole pipeline instead of bolting a generic IMU onto a depth camera.

Tracking modules exist for payloads that move: AR and VR headsets, drones, handheld scanners, mobile robots. Their output is the trajectory of the device itself, and in many such products tracking is the entire product, with no depth pipeline behind it at all.

An IMU sample stream is not a pose stream

Some depth cameras do expose inertial data, and this is where the confusion usually starts. A motion stream carries raw accelerometer and gyroscope readings at a few hundred hertz — useful for a gravity vector, for anchoring the camera's optical frame, and for discarding frames captured during shock or vibration. It is not pose. Fusing those samples into a trajectory is your software's job unless the vendor ships a tracking engine in firmware.

Mind the frame conventions if you use inertial samples: the IMU frame and the optical frame are not the same, and swapping them puts a right-angle error into everything downstream. We walk through the check in IMU optical frame transform: verify depth camera IMU frames.

What machine-vision 3D sensors output instead

Inspection cells invert the problem. The camera is bolted to a frame or hung over a conveyor at the working distance the sensor is sized for — the 3D camera working distance and positioning guide covers that geometry — so its pose is one constant transform captured at commissioning, and the motion in the cell comes from the robot controller, not from any camera. The 3D camera robot integration check lists what to confirm before wiring that up. What you buy, then, is a sensor that measures the part: depth maps, point clouds, laser profiles. The 3D sensors range splits into four families, all static-mount.

Structured light projects a known pattern and triangulates depth per pixel, which suits bin picking, volume and deformation work from a fixed mount.

The MV-DPS200P-02 is that family's projected-pattern representative.

3D sensorsHikrobot MV-DPS200P-02 Projected structured-light 3D cameraMV-DPS200P-02
Type
Stereo / structured light
$8,829.00 · quotedView and quote

Time of flight answers the same per-pixel question by timing light instead of triangulating it, at range windows set for the station.

The MV-DT01WMU is a ToF sensing camera in that family.

3D sensorsHikrobot MV-DT01WMU ToF sensing cameraMV-DT01WMU
Type
Depth / ToF camera
Price on requestView and quote

Profile sensors and laser galvanometer stereo scanners cover the dimensional end.

The MIS-DP3850-01P reads height along a laser profile and the MV-DLS300P-04 steers its laser with a galvanometer — both measurement engines for a fixed station.

3D sensorsHikrobot MIS-DP3850-01P 3D laser profile sensorMIS-DP3850-01P
Type
Laser profiler
$12,379.00 · quotedView and quote
3D sensorsHikrobot MV-DLS300P-04 Laser galvanometer stereo cameraMV-DLS300P-04
Type
Stereo / structured light
$16,579.00 · quotedView and quote

Whichever family you pick, depth arrives as a stream whose layout and intrinsics decide how it becomes XYZ points — the aligned depth streams guide shows which matrix applies to which stream. Narrow the field with the 3D camera finder.

Worked example: pose and depth on the same wire

depth rate = width × height × bytes per pixel × fps pose rate = floats per pose × 4 B × pose Hz

Take a modest depth configuration: 640 × 480 pixels, 16-bit depth, 30 fps. That is 640 × 480 × 2 B = 614,400 B per frame, and 614,400 × 30 = 18,432,000 B/s ≈ 18.4 MB/s ≈ 147 Mbit/s. The pose side, at 200 Hz and 28 B per sample, is 5,600 B/s ≈ 45 kbit/s. The depth stream outweighs pose by a factor of about 3,300, so bandwidth is never the reason to avoid a pose stream — and a pose stream never saves bandwidth.

Three checks before you order

  1. Read the model's data sheet, not the SDK header. Pose needs a tracking module — an IMU plus a fusion engine — listed as hardware. A sheet promising depth, infrared and color image streams describes a camera with no pose output at any firmware version.
  2. Enumerate what the device itself reports. After connecting, list the stream types the runtime reports as supported for that exact model. The depth camera SDK support check walks the full pre-buy routine.
  3. Bench-test the demo unit. Enable the pose and depth streams together from a known device state — leftover settings are a classic source of flaky counts, as in start from a known state — then capture for ten seconds and count: a 200 Hz pose stream yields about 2,000 samples and a 30 fps depth stream about 300 frames. Zero pose samples means no tracking hardware; spec a tracking camera instead.

The decision, per case

The camera moves and the world is the map — handheld scanning, drone or AGV navigation, AR. Buy a tracking camera with pose in its supported streams, confirm it with the three checks above, and budget fusion work on your side: pose arrives in the tracker's own reference frame, and anchoring that frame to your world is the first engineering task after capture.

The camera is fixed and the part moves — the standard machine-vision cell. No pose stream is needed. One hand-eye transform plus the robot controller's joint data covers position, and the sensor is chosen by measurement type: point clouds for bin picking and volume, laser profiles for dimensional work, ToF for range at scale. The 2D or 3D camera decision for conveyor pick and place is the closest read for that choice. A cell that later puts the camera on a mobile base wants two cameras — a tracker for navigation, a depth sensor on the arm — not one compromise.

For a fixed cell, send the station sketch through the system configurator or write to us via the contact page with the part, the cycle rate and what moves. The 3D vision topic page collects the stream-level mechanics behind this one.

Questions

Can I generate pose data in software from a stereo depth camera?

Yes, as a software project, not a stream. Visual odometry tracks features across successive depth or infrared frames and integrates them into a trajectory. Expect drift that grows with distance travelled, because there is no inertial measurement to bridge fast motion or texture-poor stretches. SLAM libraries add loop closure and map reuse to pull drift back down. Budget real engineering time: this is an algorithm you maintain, not a firmware output you subscribe to.

Does an IMU inside a depth camera mean it can output a pose stream?

No. Raw inertial samples — acceleration and angular rate at a few hundred hertz — are useful for gravity vectors, optical-frame alignment and motion filtering, but they are not pose. Pose requires the fusion step: combining IMU integration with visual feature tracking in dedicated firmware. Check whether the SDK exposes a fused tracking output or only a motion sample stream for the exact model you are buying.

What frame rate does a pose stream run at compared with depth?

Tracking modules commonly publish pose at 100-300 Hz while depth runs at 15-60 fps, based on published visual-inertial odometry systems. The rate matters more than the data size: between two 30 Hz depth frames a camera moving at 1 m/s travels about 33 mm unobserved, while 200 Hz pose updates tighten that gap to 5 mm for interpolation or fusion.

My SDK lists a pose stream type but no frames arrive. Is the camera faulty?

Almost certainly not. Stream-type enumerations usually cover a whole device family, including tracking models that share the same SDK. A depth camera without a tracking module has no fused output to publish, so the stream stays silent or returns an error. Confirm the exact model's supported streams at runtime and look for a tracking or inertial module in its data sheet before assuming a fault.

Do I need a pose stream for robot guidance with a fixed camera?

No. With the camera bolted above the cell, its pose is a single constant transform captured during hand-eye calibration at commissioning. The robot controller publishes its own joint pose faster than any camera stream, and the depth camera's job is the part's geometry, not its own location in the cell.