NITROS#
What Is NITROS?#
NVIDIA Isaac Transport for ROS (NITROS) is the implementation of two hardware-acceleration features introduced with ROS 2 Humble-type adaptation and type negotiation.
Type adaptation enables ROS nodes to work in a data format optimized for specific hardware accelerators. The adapted type is used by processing graphs to eliminate memory copies between the CPU and the memory accelerator.
Through type negotiation, different ROS nodes in a processing graph can advertise their supported types and the ROS framework can choose data formats, resulting in ideal performance.
Purpose and Problem Solving#
Most middleware frameworks, including ROS, typically work with CPU-based messages. This becomes problematic when working with hardware accelerators like GPUs, VICs, or PVAs. Without NITROS, data processed on these accelerators would need to be copied back to CPU memory before being sent to the next node, causing inefficiencies.
NVIDIA Isaac Transport for ROS package for hardware-acceleration friendly movement of messages.#
NITROS addresses a significant limitation in traditional ROS communication. Let’s talk about how.
How NITROS Works#
NITROS introduces a more efficient way of handling data. It allows sending handles between nodes instead of full data copies.
If the receiving node understands NITROS, it can use the GPU handle directly, eliminating memory copies
For nodes that don’t support NITROS, the framework automatically converts the message to a standard ROS format
This approach makes NITROS both optimal when possible and compatible when necessary.
NITROS Technologies#
NVIDIA offers three NITROS-related technologies: CUDA with NITROS, NITROS Bridge, and PyNITROS.
CUDA With NITROS#
Allows developers to write their own ROS nodes that can send and receive GPU buffers
Compatible with other NITROS nodes developed by NVIDIA
NITROS Bridge#
Designed for inter-process communication
Initially introduced to work with ROS 1 users who hadn’t migrated to ROS 2
Uses a form of CUDA IPC (Inter-Process Communication)
PyNITROS#
Supports Python users
Allows sending raw PyTorch buffers to C++ nodes without memory copies
Benefits of NITROS#
NITROS represents a significant improvement in ROS 2 performance for NVIDIA hardware, allowing developers to leverage GPU acceleration more efficiently in their robotics applications. By leveraging NITROS, you’ll be able to:
Reduce unnecessary memory copies between CPU and GPU
Improve GPU utilization by avoiding synchronization bottlenecks
Enable faster processing of large data structures like point clouds or 4K images
Maintain compatibility with existing ROS tools and nodes