NitrosPointCloud: Issues when trying to implement custom_nitros_pointcloud pub/sub

Cross posting from the isaac_ros_nitros issues board.

I am trying to implement a version of custom_nitros_pointcloud, following the other examples found in the isaac_ros_managed_nitros_examples. However, i am getting a nasty error when doing so of:

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

I shared the source code in the ticket. Any help here would be greatly appreciated.

Ah, well just stumbled upon this:

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.