Skip to content
M1chaelM edited this page Aug 23, 2020 · 19 revisions

The dave repository includes scripts for creating a Docker container that can be used to develop and run the dave simulation software. In this setup, the required functionality is divided between the host and the Docker container as follows:

  • All required software dependencies are installed in the container.
  • The simulation is run from inside the container.
  • Source repositories live on the host and are mounted into the container.
  • Source can be edited and version control can be managed from either the container or the host.

This approach has the advantage of providing a clean, isolated, portable and consistent runtime environment for running and testing the simulation, while remaining compatible with most choices of development tools.

Host setup

First, make sure your system meets the hardware and software requirements. In particular, you will need to follow the optional instructions to install Docker and nvidia-container-toolkit.

Clone repositories

Follow instructions here to clone the source code repositories you will work with. At minimum, you will need all the repositories under Field-Robotics-Lab.

Install docker

To complete this section your system will need to have curl and git installed:

sudo apt install -y curl git

Follow the official instructions to install docker * Verify you have version 19.03 or higher. * -docker).

The docker container will mount the source directory: ~/uuv_ws/src

Build docker container

Run the build.bash script that is located in the dave repository:

cd ~/uuv_ws/src/dave/docker/
./build.bash .

The first time this script is run it will take a while to build the image.

Run the container

cd ~/uuv_ws/src/dave/docker/
./run.bash -n uuvsim_nvidia

Add a few more terminals

cd ~/uuv_ws/src/DAVE/docker/uuvsim
./join.bash uuvsim_nvidia

Catkin build within the docker container

cd ~/uuv_ws
catkin_make
source devel/setup.bash

Run a test

E.g.,

roslaunch uuv_dave uuv_dave.launch
Clone this wiki locally