Frameworks in Ubuntu Core

Gianluca Bardaro gianluca.bardaro at
Tue Oct 20 18:09:05 UTC 2015

I already found two different solution that use the approach of creating a single snap for ROS and the nodes:
The second one is derived from the first.

I did some toy examples using this approach, I created two different app that can communicate using the ROS communication system.
The main problem was the size of each single snap, since each one has to include the entire ROS framework.

That's why I tried to create a framework containing only ROS. From a certain point of view ROS is the perfect candidate to be a framework.
It provides some shared resources (like roscore that coordinates all the nodes and a shared parameter server) and a communication layer.
The "problem" is it provides also some libraries to creates nodes. I suppose I could minimize the size of each app by carefully select only the necessary libraries and hopefully obtain something of a reasonable size.

Our hypothetical use case was, for example:
Think about having a fleet of ten drones, or maybe a swarm of ground robot, you want to test multiple localization system, each one maybe based on multiple ROS nodes. You can create multiple apps containing all the different systems and swap or deploy them easily on all the robots simultaneously.
In our opinion breaking the architecture in multiple apps make the system more flexible and easier to manage, even more when multiple people work on different part of the same architecture. This is useful even if you don't have the problem of deploying software on multiple robots.


Da: snappy-devel-bounces at <snappy-devel-bounces at> per conto di Mark Shuttleworth <mark at>
Inviato: martedì 20 ottobre 2015 18.00
A: Ted Gould; snappy-devel at
Oggetto: Re: Frameworks in Ubuntu Core

My recommendation would be to start out with everything in a single
snap, then break out the things that make sense later. Keep us posted!


On 20/10/15 08:26, Ted Gould wrote:
> On Tue, 2015-10-20 at 14:31 +0000, Gianluca Bardaro wrote:
>> I'm trying to use ROS in Ubuntu Core. I know there are already some
>> implementations, but I want to follow a slightly different approach.
>> My aim is to create a framework for the main features of ROS and
>> independent snaps for one or multiple nodes.
>> The point is: I don't understand exactly what a framework can do.
>> Can I use libs included inside an hypothetical ROS framework (i.e.
>> in a snap? If so, how can I do that?
> Probably the best way to think about a framework is a service,
> specifically a service that shares a resource between multiple
> applications. So if you've got a service that doesn't need to talk to
> multiple snaps, an app snap works perfectly well. It doesn't export
> files to an application, just an IPC interface, so sharing libraries
> isn't really possible. Libraries should be included in the applications
> that are connecting to it.
> So then specifically to what you're talking about, would
> exist both in the ROS framework and the applications. It could be
> different versions (an app may need a specific patch).
> I'm a little curious why you want to put the ROS services in to a
> framework. We've definitely looked at that, but weren't sure of all the
> use-cases involved, so I'd love to learn more about what you're
> thinking.

More information about the snappy-devel mailing list