depth-camera-pipeline

Configure ROS2 depth camera pipelines converting depth images to point clouds or virtual laser scans.

Updated Aug 16, 2026
One-click install
npx skills add https://github.com/three1324/yeonjinautomotive --skill depth-camera-pipeline-three1324
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: depth-camera-pipeline
Source: https://github.com/three1324/yeonjinautomotive/tree/main/.claude/skills/depth-camera-pipeline
Command: npx skills add https://github.com/three1324/yeonjinautomotive --skill depth-camera-pipeline-three1324

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Integrating depth cameras (Intel RealSense, OAK-D, Azure Kinect) into a ROS2/Nav2 robot stack requires choosing between point cloud and virtual laser scan paths, wiring correct topic remappings, and handling optical frame conventions—mistakes here silently break costmap obstacle detection. ## Core Features & Use Cases - Point Cloud Generation: Set up depth_image_proc composable nodes (point_cloud_xyz, point_cloud_xyzrgb) to convert depth images and CameraInfo into PointCloud2 topics. - Virtual Laser Scan Conversion: Configure depthimage_to_laserscan to produce lightweight 2D LaserScan data directly from depth images with tunable scan height and range limits. - Costmap Integration: Add the depth-derived scan as an observation source so Nav2 costmaps detect low obstacles (table legs, furniture) that a 2D LIDAR misses. - Use Case: A mobile robot with a RealSense camera needs to avoid chair legs below its LIDAR plane; use this Skill to launch a depthimage_to_laserscan node and register its output as a costmap observation source. ## Quick Start Set up a depth camera pipeline that converts my RealSense depth image into a virtual laser scan and adds it as an observation source to my Nav2 costmap.

Frequently Asked Questions about depth-camera-pipeline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert a depth image to a laser scan in ROS2?

Use the depthimage_to_laserscan node, which selects a horizontal band of pixel rows, takes the minimum depth per column, and publishes a sensor_msgs/LaserScan. Remap the depth and depth_camera_info topics and set scan_height, range_min, and range_max parameters.

depthimage_to_laserscan vs pointcloud_to_laserscan: which should I use?

Use depthimage_to_laserscan for a single depth camera with minimal CPU overhead since it operates directly on the 2D image. Use pointcloud_to_laserscan when merging multiple depth sources or when you need arbitrary height-range filtering on 3D points.

How do I generate a colored point cloud from a RealSense camera?

Use the depth_image_proc PointCloudXyzrgbNode composable node, remapping the aligned depth image, color image, and color camera_info topics. The depth and color images must be registered to the same frame for correct fusion.

Why is my depth camera point cloud in the wrong frame?

Depth cameras use the optical frame convention (Z forward, X right, Y down), which differs from ROS base_link (X forward, Y left, Z up). Your URDF must include the static transform chain from base_link through camera_link to the camera_depth_optical_frame.

Can a depth camera detect obstacles below my 2D LIDAR plane?

Yes. Convert the depth image to a virtual LaserScan and add it as an observation source in the Nav2 costmap alongside the primary LIDAR. This lets the costmap mark low obstacles like table legs and furniture that a planar LIDAR misses.