3.0 KiB
my_ros2_docker_image
This template repository should give a good overview on how to build your own ROS2 development instance and produce a new hosted docker image out of it. For now the steps below are only suited for a existing Ubuntu installation. Windows is for now not supported in this repository.
Install dependencies needed for working with docker images and tools to make your life easier
Using the official Docker convenience installer script, we will install docker and docker compose:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Then add yourself to the docker group so you must not always use sudo when tinkering with docker commands:
sudo groupadd docker
sudo usermod -aG docker $USER
Update the group changes:
newgrp docker
Source: https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script
Simple build
First things first: Let's begin with a short and simple build. This is a short hello, world! example.
Clone this repository to your local machine
git clone https://github.com/bjoernellens1/ros2_docker_template
Build the hello, world! image
docker buildx bake hello-world --load # to load into local container registry
or
docker buildx bake hello-world --push # to push into specified remote container registry
Run the hello, world! image
docker compose run hello-world
Advanced build: Custom ROS2 image that includes the Unitree GO1 package.
docker buildx bake my_example --load # to load into local container registry
or
docker buildx bake my_example --push # to push into specified remote container registry
To run my_example:
Run my_example just once to see if everything's working:
This will launch the Unitree udp high-level control node.
docker compose run my_example
Run my_example in background
docker compose up -d my_example
Run my_example in foreground
docker compose up my_example
Execute shell inside my_example
If container is stopped
docker compose run my_example bash
If container is already running
docker compose exec my_example bash
Execute example_program inside my_example
docker compose run my_example example_program
You will find that example_program does not exist. Try using rqt for example:
docker compose run my_example rqt
Next steps
Fork this repository and make it your own
What you will want to change in your repository:
my.repos and my_extended.repos:
These are yaml files containing the repositories you may want to include into your final ros2 workspace. For a multi-stage build for instance, I define my base image repositories in "my.repos" and the extended image repositories in "my_extended.repos"
Additional Resources
For further references please visit my WIP repositories for mobile robotic platforms: