This repo has many different uses:
- Build a ROS image for either ROS 1 or 2
- Work with a persistent container with a mounted ROS workspace
- Upload the entire workspace to an edge device
Currently, you can target against:
- any ROS1 distribution (e.g. Noetic)
- base: no-GUI, base packages, based on official
ros:${ros_distro}-ros-baseimage - full: GUI with RViz and Gazebo, based on official
osrf/ros:${ros_distro}-desktop-fullimage - full-gpu: GUI with RViz and Gazebo with GPU support, based on
fullimage - full-cudagl: (deprecated!) GUI with RViz and Gazebo with GPU support, based on official
nvidia/cudaglimage
- base: no-GUI, base packages, based on official
- any ROS2 distribution (e.g. Foxy)
Create a ROS (either 1 or 2) image with:
# Just build the image
# NOTE: you have to manually build any dependent image, e.g. if you want full-gpu:
./init-ros-box.sh -d noetic -v base
./init-ros-box.sh -d noetic -v full # depends on 'base'
./init-ros-box.sh -d noetic -v full-gpu # depends on 'full'
# Build the image and deploy a container, using `ros_noetic` directory as your workspace
./init-ros-box.sh -d noetic -v full-gpu -t ./ros_noeticThe deployed container can be started with go.sh. Once inside:
~/init_catkin_ws.sh # to install missing dependencies with rosdep and build your workspaceTake a look at ./scripts/upload_ws.sh to build and upload the workspace you've deployed anywhere with rsync (just remember to set SOURCE_WS_PATH accordingly).
- Add support for more ROS2 distributions
- Add support for more edge devices (cross compile with buildx)
- Rebase ROS1
fullimage on top ofbase - Resolve internal image depedencies automatically when building