Depth Cameras
Depth cameras measure the distance from the sensor to every point in the scene, producing a 2.5D representation of the environment. They are essential for obstacle avoidance, manipulation, 3D mapping, and any task requiring spatial understanding beyond what 2D images provide.
Prerequisites
Section titled “Prerequisites”Three Depth Sensing Technologies
Section titled “Three Depth Sensing Technologies”Stereo Vision
Section titled “Stereo Vision”Uses two cameras separated by a known baseline to calculate depth via triangulation.
[Left Cam]───baseline───[Right Cam] │ │ └─────────┬─────────────┘ │ Disparity Matching ▼ [Depth Map]How it works: The same point appears at different horizontal positions in each image. This difference (disparity) is inversely proportional to depth.
Pros: Works outdoors, long range, passive operation possible Cons: Needs texture for matching, computationally intensive
Structured Light
Section titled “Structured Light”Projects a known IR pattern and analyzes its distortion on objects.
[IR Projector]───pattern──►[Object] │ distortion │ ◄────────[Camera] │ triangulation ▼ [Depth Map]How it works: Known patterns (dots, stripes, or coded patterns) deform when hitting surfaces at different depths. A camera captures this distortion and computes depth via triangulation.
Pros: High accuracy at short range, works on textureless surfaces Cons: IR pattern washed out in sunlight, limited range
Time-of-Flight (ToF)
Section titled “Time-of-Flight (ToF)”Measures the time for IR light to travel to an object and back.
[Emitter]────IR pulse────►[Object] │ │ │ reflection │ │ └◄────────────────────────┘ │ ▼ measure time/phase[Depth Map]How it works: Emits modulated IR light and measures either phase shift (continuous wave) or direct time delay (pulsed) to calculate distance.
Pros: Fast capture, works in low light, texture-independent Cons: Multipath interference, limited outdoor range
Technology Comparison
Section titled “Technology Comparison”| Aspect | Stereo | Structured Light | ToF |
|---|---|---|---|
| Range | 0.5–20m | 0.3–5m | 0.2–8m |
| Accuracy | Medium | High (short range) | Medium |
| Speed | Medium | Medium | Fast |
| Outdoor | Good | Poor | Moderate |
| Texture needed | Yes | No | No |
| Cost | Low–Medium | Medium | Medium–High |
Popular Depth Cameras
Section titled “Popular Depth Cameras”Intel RealSense (Active Stereo)
Section titled “Intel RealSense (Active Stereo)”| Model | Baseline | Range | Features |
|---|---|---|---|
| D455 | 95mm | 0.4–6m | 86° FoV, up to 90fps |
| D456 | 95mm | 0.4–6m | IP65-rated outdoor |
| D405 | — | 0.1–0.5m | Short-range manipulation |
| D435i | 50mm | 0.3–3m | Built-in IMU, compact |
Stereolabs ZED (Stereo + Neural Depth)
Section titled “Stereolabs ZED (Stereo + Neural Depth)”| Model | Features |
|---|---|
| ZED 2i | IP66, 12cm baseline, 0.2–20m, neural depth |
| ZED SDK 5.1 | Isaac ROS NITROS support, 10x lower latency |
Orbbec
Section titled “Orbbec”| Model | Technology | Features |
|---|---|---|
| Femto Bolt | ToF | Azure Kinect replacement, 120° FoV |
| Femto Mega | ToF | Built-in compute, PoE support |
| Gemini 335Lg | Active Stereo | Mobile robot optimized, indoor/outdoor |
ROS 2 Integration
Section titled “ROS 2 Integration”Standard Topics
Section titled “Standard Topics”/camera/depth/image_raw # Depth image (32FC1 meters or 16UC1 mm)/camera/depth/camera_info # Calibration parameters/camera/depth_registered/points # Colored point cloud/camera/color/image_raw # RGB imageLaunch Examples
Section titled “Launch Examples”# Intel RealSense with point cloudros2 launch realsense2_camera rs_launch.py \ enable_depth:=true \ depth_module.profile:=640x480x30 \ pointcloud.enable:=true
# ZED cameraros2 launch zed_wrapper zed_camera.launch.py \ camera_model:=zed2i
# Orbbec Femto Boltros2 launch orbbec_camera femto_bolt.launch.pyDepth Subscriber Example
Section titled “Depth Subscriber Example”import rclpyfrom rclpy.node import Nodefrom sensor_msgs.msg import Imagefrom cv_bridge import CvBridge
class DepthSubscriber(Node): def __init__(self): super().__init__('depth_subscriber') self.subscription = self.create_subscription( Image, '/camera/depth/image_raw', self.depth_callback, 10) self.bridge = CvBridge()
def depth_callback(self, msg): # Convert to numpy array (meters, 32-bit float) depth_image = self.bridge.imgmsg_to_cv2( msg, desired_encoding='32FC1')
# Get depth at center pixel h, w = depth_image.shape center_depth = depth_image[h // 2, w // 2] self.get_logger().info(f'Center depth: {center_depth:.3f}m')
def main(): rclpy.init() node = DepthSubscriber() rclpy.spin(node) rclpy.shutdown()Isaac ROS GPU Acceleration
Section titled “Isaac ROS GPU Acceleration”Isaac ROS 3.2 provides GPU-accelerated depth processing:
| Package | Purpose |
|---|---|
isaac_ros_stereo_image_proc | Disparity computation |
isaac_ros_depth_image_proc | Depth to point cloud |
isaac_ros_dnn_stereo_depth | DNN-based depth estimation |
DNN Stereo Models
Section titled “DNN Stereo Models”ESS (Efficient Semi-Supervised):
- Fast inference for real-time applications
- Outputs disparity + confidence map
- Robust to unseen environments
FoundationStereo (new in Isaac ROS 3.2):
- Transformer-based foundation model
- Zero-shot generalization across scenes
- Uses Depth Anything V2 as feature extractor
- Best Paper Nomination at CVPR 2025
Depth Processing Pipeline
Section titled “Depth Processing Pipeline”┌─────────────┐ ┌──────────────┐ ┌───────────────┐│ Depth │ → │ Undistort │ → │ Register ││ Sensor │ │ (calibrate) │ │ to RGB │└─────────────┘ └──────────────┘ └───────────────┘ │ ▼┌─────────────┐ ┌──────────────┐ ┌───────────────┐│ Obstacle │ ← │ Point Cloud │ ← │ Depth to ││ Detection │ │ (PCL2) │ │ 3D Points │└─────────────┘ └──────────────┘ └───────────────┘Choosing the Right Technology
Section titled “Choosing the Right Technology”| Use Case | Recommended |
|---|---|
| Outdoor navigation | Stereo (passive or active) |
| Indoor manipulation | Structured light or ToF |
| AMR obstacle avoidance | ToF (fast, compact) |
| 3D scanning | Structured light (high accuracy) |
| Low-light environments | ToF |
| Long-range perception | Stereo |
Related Terms
Section titled “Related Terms”Sources
Section titled “Sources”- Intel RealSense D455 — D400 series specifications
- Intel RealSense ROS2 — Official ROS 2 wrapper
- Stereolabs ZED SDK 5.1 — SDK features and NITROS integration
- Orbbec Femto Bolt — ToF camera specifications
- OrbbecSDK ROS2 — Orbbec ROS 2 wrapper
- Isaac ROS DNN Stereo Depth — GPU-accelerated depth estimation
- Isaac ROS FoundationStereo — Foundation model for stereo depth
- LIPS 3D Depth Camera Principles — Technology comparison