ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

This sentence alone

I want all the developers and robot to have the identical environment for both development and production

Docker. I'm a fan of snaps for deployment of certain assets but you cannot develop inside of a snap, they're read only and take a bunch of time to generate each snap (think 20-30 minutes).

Snaps are for deployment but and cannot be used for development from their read-only state. The general community uses Docker by in large and OSRF even provides base images on DockerHub to pull from for base, desktop, and specialty installs https://hub.docker.com/_/ros.

Docker is pretty easy to get started with, here's an example of building one of my packages in docker: https://github.com/SteveMacenski/slam_toolbox/blob/melodic-devel/Dockerfile. As you can see, its < 25 lines. Launch the container and then you can run your ROS packages (and/or create an entry point so its automatic).

This sentence alone

I want all the developers and robot to have the identical environment for both development and production

Docker. I'm a fan of snaps for deployment of certain assets but you cannot develop inside of a snap, they're read only and take a bunch of time to generate each snap (think 20-30 minutes).

Snaps are for deployment (usually in the cloud, but also on robots/IoT) and cannot be used for development from their read-only state. state packaging up the entire code/dependencies around Ubuntu Core. The general community uses Docker by in large and OSRF even provides base images on DockerHub to pull from for base, desktop, and specialty installs https://hub.docker.com/_/ros.

Docker is pretty easy to get started with, here's an example of building one of my packages in docker: https://github.com/SteveMacenski/slam_toolbox/blob/melodic-devel/Dockerfile. As you can see, its < 25 lines. Launch the container and then you can run your ROS packages (and/or create an entry point so its automatic).

This sentence alone

I want all the developers and robot to have the identical environment for both development and production

Docker. I'm a fan of snaps for deployment of certain assets but you cannot develop inside of a snap, they're read only and take a bunch of time to generate each snap (think 20-30 minutes).

Snaps are for deployment (usually in the cloud, but also on robots/IoT) and cannot be used for development from their read-only state packaging up the entire code/dependencies around Ubuntu Core. The general community uses Docker by in large and OSRF even provides base images on DockerHub to pull from for base, desktop, and specialty installs https://hub.docker.com/_/ros.

Docker is pretty easy to get started with, here's an example of building one of my packages in docker: https://github.com/SteveMacenski/slam_toolbox/blob/melodic-devel/Dockerfile. As you can see, its < 25 lines. Launch the container and then you can run your ROS packages (and/or create an entry point so its automatic).

Edit: More info on snaps and ROS can be found here https://snapcraft.io/docs/catkin-plugin. Analogous to my docker example, here's a snapcraft yaml I use for deployment of the same project https://github.com/SteveMacenski/slam_toolbox/blob/melodic-devel/snap/snapcraft.yaml. Feel free to use those two as testing grounds to get the hang of it since I happen to use both in this particular case