Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged zed_isaac_ros_cuda_pc_sub at Robotics Stack Exchange
Package Summary
| Version | 5.6.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/stereolabs/zed-ros2-examples.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-11-02 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- STEREOLABS
Authors
ZED CUDA Zero-Copy Point Cloud Subscriber Example
This example subscribes to the ZED point cloud using the CUDA zero-copy transport of ROS 2 Lyrical (rosidl::Buffer with the cuda buffer backend), prints the coordinates of the point in the middle of the cloud, and displays communication benchmarks.
The example runs two benchmark phases on the same topic and compares them:
- CPU: the subscription accepts only CPU data (the ROS 2 default), so the point cloud is copied from GPU to CPU memory before being delivered, and uploaded back to GPU memory by the subscriber.
-
CUDA: the subscription accepts the
cudabuffer backend, so the point cloud stays in GPU memory and the subscriber reads it directly from the memory of the ZED node, without copies.
For each received point cloud it prints the X, Y, and Z coordinates, in meters, of the middle point, read from GPU memory. For each phase it reports the subscription frequency, the latency, and the CPU and GPU load.
Requirements
- ROS 2 Lyrical with the
rmw_fastrtps_cppor thermw_zenoh_cpp(v0.10.5 or newer) middleware (NVIDIA Isaac ROS 5 environment) - ZED ROS 2 Wrapper v5.6.0 or newer, built with the
cuda_bufferpackage - The
cuda_buffer_backendplugin
Details about the setup of the CUDA zero-copy transport are available in the Isaac ROS with ZED documentation.
Usage
ros2 launch zed_isaac_ros_cuda_pc_sub zed_cuda_pc_sub_example.launch.py camera_model:=<camera_model>
The example subscribes to /zed_isaac/zed/point_cloud/cloud_registered: use the topic_name launch argument to select another point cloud topic.
The coordinates are expressed in the frame of the point cloud message (header.frame_id). They are not valid (NaN) when the depth is not available for the middle point, for example when the object in front of the camera is too close or too far.