-
Notifications
You must be signed in to change notification settings - Fork 18
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
Integrate nodelet support for capabilities and apps #115
Comments
Test this using turtlebot apps and make sure it solves this issue: turtlebot/turtlebot_apps#48 |
Looking into this I realised it's not a trivial issue, since there are multiple use cases:
I'm missing any use cases? @stonier @jihoonl @wjwwood I'll tackle case 1.ii. in this issue, create a new one for case 1.i. (#119) and discuss case 2. over at osrf/capabilities#31. |
The TB follower app is a good example for case 1.ii.. It starts up two nodelet's to be loaded into the mobile base's nodelet manager and one nodelet to be loaded into the rgbd sensor's nodelet manager. Here is my current idea on how to handle this case: For loading a nodelet into the nodelet manager of the right capability, we use the capability's name as a placeholder. Here is an example how this would look like in the rapp's launcher:
So, this solution would work for capabilities containing only one nodelet manager. However, a more complicated capability like navigation might contain more than one manager. For this case I can only come up with standardising names, which are then used instead of Thoughts? |
For case 2, I think it is up to the robot developer to ensure capabilities can share nodelet managers by way of the provider implementations. One other thought is that each capability server could set up one well known nodelet manager. There isn't a good reason to have more than one nodelet manager, other than fault isolation, that I can see. |
Fault isolation...and I'd also say ease of introspection. Nodelets can be a little perverse on a complicated robot sometimes. I could work with both ideas...1) single capability nodelet manager, or 2) guideline for a capability's nodelet naming as marcus suggested (with 1 per capability). Perhaps we could start simple with 1) and move to 2) if we start feeling like 1) is unduly limiting, uncomfortable or insufficient? |
AFAIK this can only be done by using absolute namespaces, which are sometimes hard to implement and maintain.
I remember Daniel having weird issues with nodelets when they processed a lot of traffic. Increasing the number of threads solved it, if I remember right. Unfortunately, this number would be fixed, when using only one nodelet manager for all capabilities. Would setting a really high number of threads by default cause any issues? |
It depends, if the nodelets are using I don't think there is any risk of having a higher number of threads than you need, unless your system can really parallelize and then you go into thrashing. My suggestion would be to start with the default thread setting and adjust it if there are problems. |
Implement nodelet manager support for capabilities on the app manager side. Changes required on the capability server side are already in place: osrf/capabilities#31
The text was updated successfully, but these errors were encountered: