Use Nvblox with Nav2 Rolling

I’ve been using Nav2 Rolling branch for some of the behaviortree integrationand am interested in using Nvblox with it. I’ve successfully installed and got it running using the docker builds (which use Humble) but anytime I try to access a topic via a Rolling node (or an Iron node) it crashes Nvblox:

terminate called after throwing an instance of ‘std::bad_alloc’
what(): std::bad_alloc
Aborted (core dumped)

I have Humble and Iron on my dev machine and Humble doesn’t crash the node, but Iron does.
Unfortunately, the behaviortree integrations are not available for Humble, so it seems I have to choose one or the other… unless there’s some way to make them work together. Is this possible?

edited

Hi @john317 and welcome here!

Like you said, right now Isaac ROS is only tested on Humble like the documentation report
https://nvidia-isaac-ros.github.io/getting_started/index.html#system-requirements

Isaac ROS packages have ONLY been tested against ROS 2 Humble. Other ROS 2 versions are NOT YET supported.

You can try, maybe to use Isaac ROS in a docker a try to use Nav2 in another docker with rolling and try if works.
I didn’t tried, but can be an opportunity to test

Raffaello

Thanks for the reply. I don’t think NAV2 rolling will work as I can’t even do a simple “ros topic hz …” from rolling without causing the nvbloz node to crash. I’m not sure what the compatibility issue is. I would be shocked if the message definitions changes between the two releases and wonder if it’s a difference between the FastDDS implementations in the releases.

One solution might be for me to try to build a docker for nvblox based on rolling and though I know it’s not supported, is there anything that is known that would prevent it from working?

I did some further testing and using RVIZ2 on a machine running Iron, it will crash the Nvblox node when one of the topics is selected to be viewed, but if you restart the Nvblox node, it runs fine and you can change topics/etc. to visualize with no issue. But when you exit RVIZ2 then the node may crash. I think I’m going to try to rebuild the docker from scratch and see if that improves the situation.

Thank you for keeping us updated.

Are you trying nvblox also on ROS 2 Iron?

No, I’m just running Nvblox following the quick start guide. I did completely rebuild it last night, but still have issues accessing it from both rolling and iron. I think it might be fastdds related difference between humble and rolling/iron. I’ve not tried nav2 yet but will this weekend, but once it’s connected (tested with rviz2 and a python node I made to just subscribe to one of the nvblox topics) after restarting the crashed nvblox node, it works fine.

Someone posted on robotics.stackexchange a similar issue (don’t know if they are running Nvblox):

I tried to switch my rolling node to run ROS_DOMAIN_ID=1 and the Nvblox docker with ROS_DOMAIN_ID=0 and then try a domain bridge running on humble to pass the topics across and the domain bridge crashed. So I don’t think this is an Nvblox issue but a FastDDS issue between humble and rolling/iron.

Looking good!
In this case, I close this topic :-)

Best,
Raffaello