Using snaps to advance robotics development

by Sarah Dickinson on 30 October 2017

Robotics development has seen great expansion in recent years. Some roboticists strongly believe that this expansion is not only due to the rise of inexpensive sensors and actuators but also to the new software trends enabling code sharing and reuse at a much larger scale than ever before. We spoke to Mohamed Saad Ibn Seddik, roboticist and Chief Scientist at Sea Machines, to find out why he thinks that robots should be treated just like IoT devices if companies want to have them widely adopted. Mohamed Saad thinks that robots, even more than other IoT devices, require special attention and tools to ensure the safety and benefits that they provide. Mohamed Saad also believes that the one way to achieve that goal is to use snaps for packaging robotics software.

How did you find out about snaps?

About a year or so ago I came across Kyle Fazzari, a software engineer at Canonical, who invited me to try snaps when working at MIT in Boston. It seemed snaps would be a great fit for robots and we later found ourselves presenting together at the MOOS developer conference in early August this year. In robotics, everything can be super archaic – for example, there is no staging. Continuous development is therefore almost not present in robotics. Also, a lot of people working in robotics come from different backgrounds and experiences and don’t even have a computer science background at all, so work can be error-prone. Snaps will help the robotic community take a step forward in their development. Plus we think it will help bring the community together to ensure software is interoperable.

How does building snaps compare to other forms of packaging you produce? How easy was it to integrate with your existing infrastructure and process?

Like many, we found writing Debian packages a nightmare and couldn’t find a good way to do it without being excessively time-consuming. Therefore, the use of snaps as a middleware and the automatic updates work seamlessly.  Most roboticists, robotic labs and companies use Ubuntu and I see that snaps are the best way forward to keep software up-to-date.

Do you currently use the snap store as a way of distributing your software? How do you see the store changing the way users find and install your software?

It will depend on the use case: in one hand, some companies will not be very open to having their software searchable and downloadable for free, others might not give it too much thought. It will all depend on the business model. Therefore a brand store will be crucial for adoption by companies. For labs and universities, on the other hand, they will want to use the default snap store to guarantee exposure and reuse of their software. And this is something that we already witnessed with Debian packages for instance (when someone has enough time to create one.)

Where do you see the benefits of snaps in the context of your business?

In the robotics industry, reliability and safety are key. We saw companies go under because of faulty software that was not updated on time. These kinds of problems and other similar ones can easily be avoided by good software practices and snaps. Think about the automatic updates provided by snaps, for example, if one customer finds a bug, an update can be issued to all previously sold units and there’s no need to send engineers to install the patches. This advantage alone will save money to whoever decides to use snaps as a deployment tool. Furthermore, people are now used to having their phones automatically update all their apps seamlessly, so why not their robots too?

What release channels (edge/beta/candidate/stable) in the store are you using or plan to use, if any?

Knowing the robotics community, many packages will be in the edge channel for a while. However, as the community is known to also be an early-adopter community, it might spread really fast and change can happen very quickly. For companies, some will want to have private brand stores for their packages, that’s for sure.

How would you improve the snap system?

Knowing what to search for so my search results don’t bring up Minecraft instead of Snapcraft would help discovery! On a serious note, we use the tutorials and could see some enhancements to be made on those.

Newsletter Signup

Related posts

A technical introduction to the Snap Store Proxy

In the world of IoT, it is crucial to be fully in control of your devices. Over-the-air (OTA) updates are essential for a distributed set of devices. This must be carefully managed to ensure that an update is not pushed at a time where the device is active and operation should not be interrupted. To […]

Snap Performance Skunk Works – Ensuring speed and consistency for snaps

Snaps are used on desktop machines, servers and IoT devices. However, it’s the first group that draws the most attention and scrutiny. Due to the graphic nature of desktop applications, users are often more attuned to potential problems and issues that may arise in the desktop space than with command-line tools or software running in […]

How to cache snap downloads and save bandwidth

For many people, fast broadband connection and unlimited data are a reality. For others, they are not. If you have several Linux hosts in your (home) environment, and you’re using snaps, each of these systems will separately communicate with the Snap Store and periodically download necessary updates. This can be costly in terms of inbound […]