The landscape of software deployment in robotics

We’ve been looking at the different ways companies deploy software to robots for a while and put together an article on the most common techniques we’ve seen.

They usually fall into a few buckets:

  1. Manually updating (with ssh, git, rsync, etc.)
  2. Software Configuration Management (SCM) tools (e.g. Ansible, Salt Project, etc.)
  3. A/B updates (RAUC, Mender, SWUpdate)
  4. Containers - Can be used in combination with techniques (Docker, Kubernetes, Balena, etc.)
  5. AWS Greengrass.
  6. Various other options.

We go through each one at a high-level discussing their pros and cons as applied to robotics based on the learnings we’ve found from the community. Hope it’s helpful to some folks.