Skip to content

NitrosPointCloud: Error when trying to implement pub/sub #49

@stephen-derosa

Description

@stephen-derosa

I am trying to implement a custom_nitros_pointcloud example, similar to the other isaac_ros_managed_nitros_examples. However, when trying to compile the decoder, which has a subscriber to the NitrosPointCloud message, i get the error:

Starting >>> custom_nitros_pointcloud
--- stderr: custom_nitros_pointcloud                             
In file included from /workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/include/custom_nitros_pointcloud/pointcloud_decoder_node.hpp:25,
                 from /workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/src/pointcloud_decoder_node.cpp:18:
/workspaces/isaac_ros-dev/install/isaac_ros_managed_nitros/share/isaac_ros_managed_nitros/gxf/include/isaac_ros_managed_nitros/managed_nitros_subscriber.hpp: In instantiation of ‘nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<NitrosMsgView>::ManagedNitrosSubscriber(rclcpp::Node*, const string&, const string&, std::function<void(const NitrosMsgView&)>, const nvidia::isaac_ros::nitros::NitrosStatisticsConfig&, rclcpp::QoS) [with NitrosMsgView = nvidia::isaac_ros::nitros::NitrosPointCloud; std::string = std::__cxx11::basic_string<char>]’:
/usr/include/c++/11/ext/new_allocator.h:162:4:   required from ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>; _Args = {custom_nitros_pointcloud::PointCloudDecoderNode*, const char (&)[15], const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::_Bind<void (custom_nitros_pointcloud::PointCloudDecoderNode::*(custom_nitros_pointcloud::PointCloudDecoderNode*, std::_Placeholder<1>))(nvidia::isaac_ros::nitros::NitrosPointCloud)>}; _Tp = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>]’
/usr/include/c++/11/bits/alloc_traits.h:516:17:   required from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>; _Args = {custom_nitros_pointcloud::PointCloudDecoderNode*, const char (&)[15], const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::_Bind<void (custom_nitros_pointcloud::PointCloudDecoderNode::*(custom_nitros_pointcloud::PointCloudDecoderNode*, std::_Placeholder<1>))(nvidia::isaac_ros::nitros::NitrosPointCloud)>}; _Tp = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud> >]’
/usr/include/c++/11/bits/shared_ptr_base.h:519:39:   required from ‘std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args&& ...) [with _Args = {custom_nitros_pointcloud::PointCloudDecoderNode*, const char (&)[15], const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::_Bind<void (custom_nitros_pointcloud::PointCloudDecoderNode::*(custom_nitros_pointcloud::PointCloudDecoderNode*, std::_Placeholder<1>))(nvidia::isaac_ros::nitros::NitrosPointCloud)>}; _Tp = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>; _Alloc = std::allocator<nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud> >; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/11/bits/shared_ptr_base.h:650:16:   required from ‘std::__shared_count<_Lp>::__shared_count(_Tp*&, std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>; _Alloc = std::allocator<nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud> >; _Args = {custom_nitros_pointcloud::PointCloudDecoderNode*, const char (&)[15], const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::_Bind<void (custom_nitros_pointcloud::PointCloudDecoderNode::*(custom_nitros_pointcloud::PointCloudDecoderNode*, std::_Placeholder<1>))(nvidia::isaac_ros::nitros::NitrosPointCloud)>}; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/11/bits/shared_ptr_base.h:1342:14:   required from ‘std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud> >; _Args = {custom_nitros_pointcloud::PointCloudDecoderNode*, const char (&)[15], const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::_Bind<void (custom_nitros_pointcloud::PointCloudDecoderNode::*(custom_nitros_pointcloud::PointCloudDecoderNode*, std::_Placeholder<1>))(nvidia::isaac_ros::nitros::NitrosPointCloud)>}; _Tp = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/11/bits/shared_ptr.h:409:59:   required from ‘std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud> >; _Args = {custom_nitros_pointcloud::PointCloudDecoderNode*, const char (&)[15], const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::_Bind<void (custom_nitros_pointcloud::PointCloudDecoderNode::*(custom_nitros_pointcloud::PointCloudDecoderNode*, std::_Placeholder<1>))(nvidia::isaac_ros::nitros::NitrosPointCloud)>}; _Tp = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>]’
/usr/include/c++/11/bits/shared_ptr.h:862:14:   required from ‘std::shared_ptr<_Tp> std::allocate_shared(const _Alloc&, _Args&& ...) [with _Tp = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>; _Alloc = std::allocator<nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud> >; _Args = {custom_nitros_pointcloud::PointCloudDecoderNode*, const char (&)[15], const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::_Bind<void (custom_nitros_pointcloud::PointCloudDecoderNode::*(custom_nitros_pointcloud::PointCloudDecoderNode*, std::_Placeholder<1>))(nvidia::isaac_ros::nitros::NitrosPointCloud)>}]’
/usr/include/c++/11/bits/shared_ptr.h:878:39:   required from ‘std::shared_ptr<_Tp> std::make_shared(_Args&& ...) [with _Tp = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>; _Args = {custom_nitros_pointcloud::PointCloudDecoderNode*, const char (&)[15], const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::_Bind<void (custom_nitros_pointcloud::PointCloudDecoderNode::*(custom_nitros_pointcloud::PointCloudDecoderNode*, std::_Placeholder<1>))(nvidia::isaac_ros::nitros::NitrosPointCloud)>}]’
/workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/src/pointcloud_decoder_node.cpp:33:52:   required from here
/workspaces/isaac_ros-dev/install/isaac_ros_managed_nitros/share/isaac_ros_managed_nitros/gxf/include/isaac_ros_managed_nitros/managed_nitros_subscriber.hpp:52:27: error: no type named ‘BaseType’ in ‘struct nvidia::isaac_ros::nitros::NitrosPointCloud’
   52 |     nitros_type_manager_->registerSupportedType<typename NitrosMsgView::BaseType>();
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/workspaces/isaac_ros-dev/install/isaac_ros_managed_nitros/share/isaac_ros_managed_nitros/gxf/include/isaac_ros_managed_nitros/managed_nitros_subscriber.hpp:52:82: error: no matching function for call to ‘nvidia::isaac_ros::nitros::NitrosTypeManager::<expression error>()’
   52 |     nitros_type_manager_->registerSupportedType<typename NitrosMsgView::BaseType>();
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
In file included from /workspaces/isaac_ros-dev/install/isaac_ros_nitros/include/isaac_ros_nitros/nitros_publisher_subscriber_base.hpp:35,
                 from /workspaces/isaac_ros-dev/install/isaac_ros_nitros/include/isaac_ros_nitros/nitros_subscriber.hpp:31,
                 from /workspaces/isaac_ros-dev/install/isaac_ros_managed_nitros/share/isaac_ros_managed_nitros/gxf/include/isaac_ros_managed_nitros/managed_nitros_subscriber.hpp:26,
                 from /workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/include/custom_nitros_pointcloud/pointcloud_decoder_node.hpp:25,
                 from /workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/src/pointcloud_decoder_node.cpp:18:
/workspaces/isaac_ros-dev/install/isaac_ros_nitros/include/isaac_ros_nitros/types/nitros_type_manager.hpp:61:8: note: candidate: ‘template<class T> void nvidia::isaac_ros::nitros::NitrosTypeManager::registerSupportedType()’
   61 |   void registerSupportedType()
      |        ^~~~~~~~~~~~~~~~~~~~~
/workspaces/isaac_ros-dev/install/isaac_ros_nitros/include/isaac_ros_nitros/types/nitros_type_manager.hpp:61:8: note:   template argument deduction/substitution failed:
In file included from /workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/include/custom_nitros_pointcloud/pointcloud_decoder_node.hpp:25,
                 from /workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/src/pointcloud_decoder_node.cpp:18:
/workspaces/isaac_ros-dev/install/isaac_ros_managed_nitros/share/isaac_ros_managed_nitros/gxf/include/isaac_ros_managed_nitros/managed_nitros_subscriber.hpp:63:38: error: no type named ‘BaseType’ in ‘struct nvidia::isaac_ros::nitros::NitrosPointCloud’
   63 |           const NitrosMsgView view(*(static_cast<typename NitrosMsgView::BaseType *>(&msg)));
      |                                     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/functional:59,
                 from /workspaces/isaac_ros-dev/install/isaac_ros_nitros/include/isaac_ros_nitros/types/nitros_format_agent.hpp:21,
                 from /opt/ros/humble/include/isaac_ros_nitros_point_cloud_type/nitros_point_cloud.hpp:28,
                 from /workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/include/custom_nitros_pointcloud/pointcloud_decoder_node.hpp:21,
                 from /workspaces/isaac_ros-dev/src/custom_nitros_pointcloud/src/pointcloud_decoder_node.cpp:18:
/usr/include/c++/11/bits/std_function.h:435:9: error: ‘std::function<_Res(_ArgTypes ...)>::function(_Functor&&) [with _Functor = nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>::ManagedNitrosSubscriber(rclcpp::Node*, const string&, const string&, std::function<void(const nvidia::isaac_ros::nitros::NitrosPointCloud&)>, const nvidia::isaac_ros::nitros::NitrosStatisticsConfig&, rclcpp::QoS)::<lambda(gxf_context_t, nvidia::isaac_ros::nitros::NitrosTypeBase&)>; _Constraints = void; _Res = void; _ArgTypes = {void*, nvidia::isaac_ros::nitros::NitrosTypeBase&}]’, declared using local type ‘nvidia::isaac_ros::nitros::ManagedNitrosSubscriber<nvidia::isaac_ros::nitros::NitrosPointCloud>::ManagedNitrosSubscriber(rclcpp::Node*, const string&, const string&, std::function<void(const nvidia::isaac_ros::nitros::NitrosPointCloud&)>, const nvidia::isaac_ros::nitros::NitrosStatisticsConfig&, rclcpp::QoS)::<lambda(gxf_context_t, nvidia::isaac_ros::nitros::NitrosTypeBase&)>’, is used but never defined [-fpermissive]
  435 |         function(_Functor&& __f)
      |         ^~~~~~~~
gmake[2]: *** [CMakeFiles/pointcloud_decoder_node.dir/build.make:76: CMakeFiles/pointcloud_decoder_node.dir/src/pointcloud_decoder_node.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:167: CMakeFiles/pointcloud_decoder_node.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed   <<< custom_nitros_pointcloud [6.68s, exited with code 2]

Summary: 0 packages finished [7.00s]
  1 package failed: custom_nitros_pointcloud
  1 package had stderr output: custom_nitros_pointcloud
[1]+  Done                    clear

attached is a .zip of the pkg:
custom_nitros_pointcloud.zip

I am using a isaac ros 3.1, ros humble container, on an x86_64 machine with CUDA 12.4 and nvidia drivers 550.120. Any help here is greatly appreciated!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions