0
$\begingroup$

Rosanswers logo

Hi, I'm working on a project with Ubuntu 16.04 and kinetic where I have two catkin workspaces: one for building the iai_kinect2 package for handling KinectOne data reading, and another for building my own packages for image processing. I used to build them separately and run them in different docker containers, whereas roscore is running in the host PC. In this fashion, each container sources its own setup.bash file, so the iai_kinect2 nodelets cannot find the libraries for launching my own nodelets, which have been built in another container.

I am wondering if there is a way of launching nodelets from different dockercontainers / machines onto the same manager without having to source the bash file of each build in the host machine.

Right now I have placed both packages in the same container as a workaround, but I would like to be able to separate them as the project I work on requires different libraries for different packages, therefore using several docker containers to launch the nodes from each package.


Originally posted by jgallostra on ROS Answers with karma: 30 on 2019-03-08

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

As commented by @gvdhoorn:

Nodelets are stored on disk as shared libraries. If the manager process cannot access the shared library, it cannot load the nodelet.

In this particular case, what could work is clever mounting of directories from the ROS workspace containing the nodelets into the container that wants to load them (don't forget the metadata that is also need, ie: package.xml). But depending on what those nodelets exactly do this may not work, as all the dependencies of those nodelets would also need to be accessible.

This issue has to do more with "dependency hell" rather than nodelets. If workspace A needs a certain set of dependencies, and workspace B needs another incompatible set of dependencies, using artefacts from workspace A in processes from workspace B is not going to work.


Originally posted by jgallostra with karma: 30 on 2019-03-11

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by jgallostra on 2019-03-11:
Btw, should I close the question now that it has been answered?

Comment by gvdhoorn on 2019-03-11:
No. Just mark it as answered by clicking the checkmark.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.