Embedded Computing
Nearly all marine robots include one or more embedded computers running GNU/Linux. These can range from high-power x86 systems (e.g., Intel i7 processors) to low power ARM-based mini systems-on-a-chip (e.g., Raspberry Pi). Throughout our work on many of marine autonomy and communications applications we have developed significant expertise in bootstrapping, deploying, and developing for these various embedded computers. We use the Debian (and Ubuntu) GNU/Linux distributions for their high quality and ubiquity.
ARM and x86_64 Linux kernel and filesystem development
We have produced customized kernels and Debian/Ubuntu filesystems (for many architectures: arm64, armhf, amd64) for numerous projects to meet the specific needs of the application. We have worked with embedded computers from Raspberry Pi, Beaglebone, Nvidia, Gumstix, and others.
DevOps for continuous integration and deployment
Modern software development is much more than simply writing good code. We are familiar with common devops platforms such as Gitlab Runners, Github Actions, and CircleCI for automated the entire lifecycle for software development from “git commit” to throwing the vehicle in the water. This includes continuous integration (build testing, unit tests, etc.), automated package builds, automated rootfs filesystem builds (see, for example, the Jaiabot rootfs-gen), and code cleanliness/style checks.
Debian Package Development
At sea testing is extremely costly. Thus, it is critical to develop processes that reduce the risk of failed deployments due to human error. One source of error that can be eliminated is the tracking of software revisions from version control software (typically git) through to the compiled code running on the platforms. Pairing git with Debian package builds in a clean environment (chroot or Docker container) provides version tracking and assurance of properly built packages. This reduces the chance of failed deployments due to corrupt software or incorrect revisions being run.
We have provided automated package building and toolchains for several projects to build software for multiple target architectures and/or distributions.
Debian packages for Debian oldstable, Debian stable, and all currently supported versions of Ubuntu LTS are built automatically using CircleCI to our packages server: https://packages.gobysoft.org/ (instructions for use are included in the Goby3 documentation)