Once those basic tools are installed, we can download
and start up WebODM. First, clone the Git repository on
your machine by using the command git clone https://
github.com/OpenDroneMap/WebODM in the terminal or
clicking the Download ZIP button on the GitHub web
interface (Figure 3). This will pull down the most current
set of code in the repository and place it in the WebODM
folder in whichever directory you were in when the
command was issued.
Next, go into the WebODM directory: cd WebODM.
We need to install docker-compose with pip install docker-compose. We are then ready to start up the container.
Issue the command ./ webodm.sh start and go get a cup of
coffee — maybe a pizza as well. The first time this runs it
will take a while to get things set up, but it will be much
quicker the next time.
Once the container starts, we need to access the
running application. We’ll do this through a web browser. If
you are on a Windows machine, find the Docker container’s
IP address with docker-machine ip; if you are on a
Linux/Mac system, your container’s IP address should be
Open your favorite web browser and
navigate to http://<container’s IP
address>:8000. The container is running a
server on port 8000 that we connect to. You
will be prompted for login information which
is admin for both the username and
password (Figure 4). You’re into WebODM!
Before we go any further though, I
want to make sure you know how to shut it
down. (Anyone remember the first time they
got into emacs and couldn’t get out?) You
can stop the container with CTRL+c or
./ webodm.sh stop. You can update
WebODM to the most current release with
the ./ webodm.sh update command.
Like WebODM, you can compile this all yourself
if you wish, but I’m going to use the Docker
container. First off, clone the repository for ODM: git
/ OpenDroneMap.git or download the ZIP. Using the
terminal, navigate into the OpenDroneMap directory.
First, we’ll build the packages for ODM with docker
build -t packages -f packages.Dockerfile. (include the
period — it isn’t punctuation this time!). After that
has completed, we can build the ODM image with: docker
build -t odm_image.
That’s it! The container is ready to go and we just have
to run it when we are ready. In a “traditional” install of
ODM, we would run the python script run.py and pass it a
series of command line arguments to tell it how the project
should be configured. In the Docker world, just add on any
arguments to the end of our Docker run call (which we will
build soon) and they will make it to run.py.
I realize that many of you reading may not have your
own drone set up yet or may not be ready to mount an
expensive camera. I also know that collecting your own
data is always difficult — there are always data cleaning
operations that need to be done and the general technical
difficulties associated with setting up any new tool chain.
The ODM folks know that as well and have a really nice
repository of sample data to work with (https://github
.com/OpenDroneMap/odm_data). As of this writing,
there are nine linked repositories of data (Figure 5).
The datasets listed on the page have different numbers
of photos, metadata, etc. On the GitHub page, some
datasets are bolded and are “known” to work well with
ODM. I found that the bolded suggestions were not
necessarily the best since I tested almost all of the datasets
in both ODM and WebODM (Figure 6). At the time of this
48 SERVO 04.2017
Figure 4: Log in to the WebODM container using the default login
Figure 3: In the GitHub web interface, you can either clone the repository using the
URL shown in the box or download a ZIP file. Click the “Clone or download” button
to bring up this information box.
SF Earthquake photo: