Ask Your Question
0

Way to Export ROS Kinetic to multiple machines

asked 2019-06-10 00:58:27 -0500

rhnbmpl gravatar image

updated 2019-06-10 22:52:25 -0500

Topic Edit: Deployment of ROS in a commercial setting.

I want to install ROS Kinetic in multiple machines (say 40-50). But I don't want to run sudo apt-get install ros-kinetic-desktop-full and so on for other packages for each machine as it will take internet bandwidth. Is there a way to "Clone" the ROS Kinetic from my machine to other machines (like copy/paste) provided the machine specifications (architecture, OS version, etc.) are the same in target machine and my machine. I want to do the above exporting for my catkin packages as well for multiple machines.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
3

answered 2019-06-10 02:07:22 -0500

gvdhoorn gravatar image

updated 2019-06-10 06:46:32 -0500

I want to install ROS Kinetic in multiple machines (say 40-50). But I don't want to run sudo apt-get install ros-kinetic-desktop-full and so on for other packages for each machine [..]

This question has come up before -- and I'll try to find it -- but for now: assuming you're using Ubuntu or Debian (and since you show an apt install command I believe you are): ROS is distributed as .deb packages for that platform, so what you're asking for is a way to provision multiple machines with the same installation commands.

That would make this a non-ROS question: there are multiple ways to manage a large number of Ubuntu/Debian machines, and none of them are ROS-specific.

Chef, ansible and similar tools are things you could look at.

as it will take internet bandwidth.

a pointer here would be to look at setting up an apt-mirror and make all machines use that. An alternative could be to use a simple caching http(s) proxy and seed it by having one machine run through the regular install procedure. All others would then get files from the cache of the proxy.

Is there a way to "Clone" the ROS Kinetic from my machine to other machines (like copy/paste) provided the machine specifications (architecture, OS version, etc.) are the same in target machine and my machine.

You'll want to avoid doing this, as, if you're not using any kind of centralised management now, chances are there will be differences between those machines and simply cloning a set of packages could very well result in missing dependencies and/or version conflicts.

Let apt deal with those and properly install the packages and their dependencies.

I want to do the above exporting for my catkin packages as well for multiple machines.

With 50 machines it may make sense to take a look at setting up a ROS buildfarm or one of its alternatives. You may also be able to provision other machines with packages built on one machine and then distributed as .deb packages. There are multiple Q&As on this site about that.

(tip: use Google to search ROS Answers. Append site:answers.ros.org to your query)


Edit: and if you're not setting up those machines for development purposes (ie: they're embedded in a product) then perhaps using Docker (or another containerisation technology) may actually make more sense.


Edit:

Will the generated .deb also account for the dependent packages that ROS needs or my package needs?

If the package manifest of the package(s) that the .deb packages have correctly stated their dependencies, then, yes, the .deb should also contain a declaration of those dependencies.

Yes, those machines are not for development purposes, the machines will be used by other people for separate applications. All the machines will be identical (same OS, same architecture, same Hardware).

If they're really identical, then it might also be possible to use disk cloning software. There are a few caveats ... (more)

edit flag offensive delete link more

Comments

Yes, I am using Ubuntu 16. Will the generated .deb also account for the dependent packages that ROS needs or my package needs? Yes, those machines are not for development purposes, the machines will be used by other people for separate applications. All the machines will be identical (same OS, same architecture, same Hardware). How can Docker be useful? From what I understand, Docker is lightweight VM, which can manager multiple machines. Will it take care of the external dependencies that ROS Kinetic or my package needs?

rhnbmpl gravatar imagerhnbmpl ( 2019-06-10 04:42:55 -0500 )edit

Please note that I feel that your question has moved from something about how to "install the same packages on multiple machines?" to more a "how do I deploy applications in a commercial setting?".

That appears to be an xy-problem.

gvdhoorn gravatar imagegvdhoorn ( 2019-06-10 06:48:01 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2019-06-10 00:58:27 -0500

Seen: 51 times

Last updated: Jun 10