-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Iron][nav2] error: Failed to find a free participant index for domain 0 #458
Comments
Historically, Cyclone's worked great for us out of the box, so it would be great to get that back! |
The Cyclone version didn't change from Humble to Iron, but the RMW layer in Iron initializes the configuration a little differently because of the work that went into getting sensible default behaviours. That might affect things — in particular
Whatever is in the environment variable gets appended to the bit that the RMW layer computes and therefore overrides the "RMW" defaults. Setting What I do find suspicious in the output is that it looks more like hitting Cyclone's default of 9 than like hitting the RMW's (raised) default of 32. Doing |
Lots of log files (that I won't be able to interpret myself), I have enabled that variable only for our navigation stack launch, see attached:
|
I know ... Anyway there's two logs of processes that do start (the two big ones), and there we can see there are 31 processes, 31 port numbers (and it's the port numbers that matter here):
Given your environment variable quote, one would expect 100.
So quite simply, it is using the value of 32 set at
{0} at the end means it found the value only in the first configuration fragment.)
At
|
Thanks for the detailed answer and investigation!
Is it safe to assume that in the meantime, using |
Yes, that's a safe assumption. |
FYI, this is not true. In Humble, we have CycloneDDS version 0.9.x, while in Iron we have 0.10.x. I don't know if that is the cause of this error, or if it comes from the |
Oops! Thanks @clalancette for correcting that. I now remember having known it ... I don't think Cyclone changed in this particular detail from 0.9 to 0.10. |
Are there any updates here? |
Not really, I assumed that the immediate problem turned out to be easily dealt with using some configuration and kinda forgot about it. I did yesterday realize I might be able to better in deciding whether to use multicast: there’s something fishy in Linux with loopback over multicast, it seems to work fine but the interface doesn’t state it supports it. What I could is add a trial multicast to see if it works despite it not being advertised. That should allow eliminating this problem. That said, one has to be careful in using multicast. Quite some effort was spent on figuring out how to prevent unwanted discovery over the network in Iron, and I think everybody is happy with the results. I don’t want to break that … I do have an inkling how to make it all play nicely, by getting some more information from the kernel for receiver packets, but that I definitely should try out first. I do think that this is worth the effort. |
The multicast issue on loopback is a separated one. I believe that most of us now know how to workaround ( |
Makes sense. I didn't realise the behaviour change (likely) occurred with that
IIRC, this change was done after quite some investigation that eventually led to the conclusion that this was the only way within the existing configuration options to work around packets somehow making it from a network interface X into a socket only subscribed to multicast packets on Bumping the number will work around the problem but, as noted in the comment, it is not ideal. I intend to do a Cyclone release soonish anyway, and updating |
Great to know that it is being worked on! Thanks |
for those who come here to find a solution for the new participant index issue - to preserve the previous behavior (the one not depending on participant indices) you need to manually set your ParticipantIndex to
Note: the multicast-disabling tag was not automatically added in my case for some reason, but maybe you will need to also re-enable multicast, i.e. the whole config could look like:
or in a config file (adding for readability):
|
@eboasson is there a chance to change this? This seems like a bug for the default settings for Cyclone users |
Hi @SteveMacenski, it was changed in The plan then is to do a backport to 0.10 so Iron (and Humble) can get easy access to it. |
Friendly ping ;) |
Ping @imstevenpmwork |
@doisyg pong! Have mercy or faith or, ideally, both ... I just have too many things to juggle, but I haven't forgotten it and I will get there ... |
|
@eboasson just wanted to also follow up. This is very important for having the same great out of the box behavior Cyclone’s had up to this point! It may seem small from a tech perspective, but its a big deal for users to buy into Cyclone over other options in initial testing! |
This issue has been mentioned on ROS Discourse. There might be relevant details there: |
I ran into the same issue. The solution presented here (#458 (comment)) worked for me apart from that I had to manually enable multicast on the loopback interface. So for the sake of completeness if someone is looking for a solution:
And manually enable multicast for the loopback interface
|
Is this resolved in humble? I just got this issue running Humble in an apptainer running on Ubuntu 22.04. Even "ros2 topic list" did not work. Setting CYCLONEDDS_URI according to the above solved the issue. The strange thing is that the apptainer running on Ubuntu 24.04 did work without setting the CYCLONEDDS_URI. |
Hello, ran into the same issue with Jazzy using Ubuntu 24.04. Seems like an important bug by default for many users using this RMW. Any updates for this issue? Is it worth opening an issue for Jazzy? Thanks in advance. |
Bug report
Required Info:
Steps to reproduce issue
With export
RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
, start the standard navigation stackExpected behavior
Same as for
Humble
Actual behavior
Multiple errors:
Additional information
Seems related to https://stackoverflow.com/questions/74232474/ros2-galacitc-failed-to-find-a-free-participant-index-for-domain
So suggested workaround appears to solve the issue with:
export CYCLONEDDS_URI=${CYCLONEDDS_URI:-"<CycloneDDS><Discovery><ParticipantIndex>auto</ParticipantIndex><MaxAutoParticipantIndex>100</MaxAutoParticipantIndex></Discovery></CycloneDDS>"}
The text was updated successfully, but these errors were encountered: