Issue linking isaac_ros_nitros_type in ROS 2 node

’m trying to use isaac-ros-nitros in an existing ROS 2 node to leverage the zero-copy GPU capabilities of Nitros.

Currently, I’m running a basic experiment where:

  1. A list of sensors is read.

  2. Some data manipulation is performed in gpu

  3. The results are published as a single stack message for another node to continue processing.

Both nodes run in the same process.

I see that TensorList and Tensor are designed for use with nitros_manager, but I cannot find a way to properly link the library in my code.

My CMakeLists.txt currently contains:

find_package(isaac_ros_nitros REQUIRED)
find_package(isaac_ros_tensor_list_interfaces REQUIRED)
find_package(isaac_ros_common REQUIRED)
find_package(isaac_ros_nitros REQUIRED)

set(dependencies
rclcpp
common
nav_msgs
geometry_msgs
sensor_msgs
autonomy_msgs
common_msgs
example_interfaces
data_transform_base
data_transform
isaac_ros_nitros
isaac_ros_tensor_list_interfaces
isaac_ros_common
)
ament_target_dependencies(${PROJECT_NAME}
${dependencies}
)

and include


#include <isaac_ros_nitros/nitros_tensor.hpp>
#include <isaac_ros_nitros/nitros_tensor_list.hpp>
#include  <isaac_ros_nitros_tensor_list_type/nitros_tensor_list.hpp>

nvidia::isaac_ros::nitros::NitrosTensorList tensor_list;

This produces the following compilation error:

fatal error: isaac_ros_nitros_tensor_list_type/nitros_tensor_list.hpp: No such file or directory
53 | include <isaac_ros_nitros_tensor_list_type/nitros_tensor_list.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

if I remove the nitros_Tensor_list.hpp include:
error: name followed by “::” must be a class or namespace name
nvidia::isaac_ros::nitros::NitrosTensorList tensor_list;

When I check the headers in /opt/ros/jazzy/include/isaac_ros_nitros/ and /opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/, I only find headers like:

>> find /opt/ros/${ROS_DISTRO}/include/isaac_ros_* -type f
/opt/ros/jazzy/include/isaac_ros_common/qos.hpp
/opt/ros/jazzy/include/isaac_ros_common/cuda_stream.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/nitros_publisher_subscriber_group.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/nitros_subscriber.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/types/nitros_type_base.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/types/nitros_empty.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/types/nitros_type_message_filter_traits.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/types/type_adapter_nitros_context.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/types/nitros_type_manager.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/types/type_utility.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/types/nitros_format_agent.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/types/nitros_type_view_factory.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/nitros_publisher.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/nitros_context.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/nitros_node.hpp
/opt/ros/jazzy/include/isaac_ros_nitros/nitros_publisher_subscriber_base.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/rosidl_typesupport_fastrtps_c__visibility_control.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__rosidl_typesupport_introspection_cpp.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__description.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__traits.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__description.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__functions.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__type_support.cpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__rosidl_typesupport_fastrtps_cpp.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__description.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__type_support.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__struct.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__rosidl_typesupport_fastrtps_c.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__rosidl_typesupport_fastrtps_cpp.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__type_support.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__struct.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__rosidl_typesupport_introspection_c.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__type_support.cpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__traits.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__type_support.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__rosidl_typesupport_introspection_c.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__type_support.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__rosidl_typesupport_introspection_cpp.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__builder.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__type_support.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__functions.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__struct.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__functions.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__type_support.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__rosidl_typesupport_fastrtps_cpp.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__struct.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__functions.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__builder.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__struct.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__functions.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__type_support.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__rosidl_typesupport_introspection_c.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__struct.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__functions.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__type_support.cpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__type_support.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__type_support.c
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__rosidl_typesupport_fastrtps_c.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__builder.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor__rosidl_typesupport_fastrtps_c.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_list__rosidl_typesupport_introspection_cpp.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/detail/tensor_shape__traits.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/rosidl_generator_cpp__visibility_control.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/tensor_shape.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/rosidl_typesupport_fastrtps_cpp__visibility_control.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/rosidl_typesupport_introspection_c__visibility_control.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/tensor_shape.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/tensor_list.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/tensor.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/tensor.hpp
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/rosidl_generator_c__visibility_control.h
/opt/ros/jazzy/include/isaac_ros_tensor_list_interfaces/isaac_ros_tensor_list_interfaces/msg/tensor_list.h

But I cannot locate nitros_tensor_list.hpp or the corresponding NitrosTensorList class.

It seems the package isaac_ros_nitros_type is missing from the system installation, and I cannot link to it from my workspace.

Could you advise:

  1. How to correctly include and use NitrosTensorList in my ROS 2 node?

  2. Whether isaac_ros_tensor_list_interfaces is CPU-only, or if it can be used to publish messages from GPU memory via zero-copy?

  3. Is there a recommended way to build or install isaac_ros_nitros_type for Jazzy so it’s available system-wide?

Thanks for your time

So I found out I need to install each packages not only isaac_ros_nitros

sudo apt install ros-${ROS_DISTRO}-isaac-ros-nitros ros-${ROS_DISTRO}-isaac-ros-managed-nitros ros-${ROS_DISTRO}-isaac-ros-tensor-list-interfaces.

Now I’m facing a gfx error every time i run the code

ERROR /opt/ros/jazzy/share/isaac_ros_gxf/gxf/include/gxf/core/entity.hpp@371: Expression 'check_entity_item_ptr()' failed with error 'GXF_ENTITY_NOT_FOUND'.
[component_container_mt-5] 2026-02-23 16:07:35.672 ERROR external/com_nvidia_gxf/gxf/core/runtime.cpp@810: Failed to obtain name of entity (E51): GXF_ENTITY_NOT_FOUND
[component_container_mt-5] 2026-02-23 16:07:35.672 ERROR external/com_nvidia_gxf/gxf/core/runtime.cpp@818: Failed to get components for entity '(null)' (E51) while deleting it: GXF_ENTITY_NOT_FOUND
[component_container_mt-5] 2026-02-23 16:07:35.672 ERROR external/com_nvidia_gxf/gxf/std/entity_warden.cpp@900: [E00051] Ref count for the entity < 0. Count: -1

where in launch.py i have my composable node

nitros_container = ComposableNodeContainer(

    name="nitros_container",

    namespace="",

    package="rclcpp_components",

    executable="component_container_mt",

    composable_node_descriptions=[

        nitro_sub, nitro_pub

    ],

# prefix=['xterm -e gdb --args'],

    output="screen",

)

and my pub is

nvidia::isaac_ros::nitros::NitrosTensorList createMsg(){



for (auto map : maps)

{    nvidia::isaac_ros::nitros::NitrosTensor tensor = nvidia::isaac_ros::nitros::NitrosTensorBuilder()

        .WithShape({1, 1, 

static_cast<int32_t>(map.width), 

static_cast<int32_t>(map.height)})

       .WithDataType(nvidia::isaac_ros::nitros::NitrosDataType::kFloat32)

       .WithData(map.data) #this data is in GPU

       .Build();

   builder.AddTensor(mapName, (std::move(tensor)));

}

    tensor_list = builder.Build();

return tensor_list;

}

I found that I can’t define
nvidia::isaac_ros::nitros::NitrosTensorList tensor_list_;
as a member variable in my class.

Do I always need to keep two separate objects—one for computation/manipulation and another that is copied (e.g., via copyDeviceToDevice) into tensor_list_?

Could you please advise on the recommended approach for this?

Hello @dresi,

Welcome to the Isaac ROS forum!

The GXF GXF_ENTITY_NOT_FOUND errors are caused by a NitrosTensorList surviving longer than the Nitros/GXF graph expects. Instead of storing a NitrosTensorList as a class member, create it inside the callback where you publish and let it go out of scope right after publishing.

Keep your GPU map buffers as your own members. On each publish, you could run your GPU kernels into those buffers. Build a new NitrosTensorList with .WithData(map.data) for each tensor and publish that NitrosTensorList immediately.

You do not need a second GPU buffer purely for NITROS: the builder is meant to wrap existing buffers zero‑copy, as long as their lifetime covers the processing window.

You could reference here to make your own node.