turn when on the road.
In this article, we are going to learn about making
maps using images from our quads and modern
photogrammetry/structure from motion (SFM) techniques.
There are various levels of sophistication. Technically,
photogrammetry is anything that lets you get information
about the physical world by examining images of any
radiated electromagnetic energy. You could be using a
simple 2D image and measuring distances, trying to
reconstruct a textured 3D volume, and maybe even
providing ground truth markers and helping map the
progress of a construction project. The uses are really
limitless, and the technology is only going to get better!
Software Options
Photogrammetry software has really exploded in the
past few years and low cost/high resolution mapping is
being employed in more and more industries. I saw a talk
at Maker Faire in New York City last year that covered how
drone mapping was being used for commercial building
assessment purposes. There are a lot of really excellent
software packages out there. We’re going to mention a
few of the commercial and open source options, but
ultimately focus on one package for this article.
The commercial market seems to be dominated by two
products: Agisoft Photoscan ( www.agisoft.com) and
PIX4D ( https://pix4d.com). The results from these
packages are impressive. They can deal with ground truth
markers, many data formats, and have ways to produce
nice clean final products. Some of the professional tools can
run on multiple node clusters for faster processing, and
easily integrate into other GIS tools. These tools are also
point-and-click for the most part with some scripting
capability.
The convenience of these programs is alluring, but the
price tags are not friendly to the weekend tinkerer. The
professional versions run into the thousands of dollars.
PIX4D can be rented for $350/month if you do have a
short-term project that you need the program for. I would
like to come back and try these tools at some point and do
a comparison of their output to several of the open source
tools on the same dataset. For now, we’ll just say that they
are likely out of the price range of all but the most serious
hobbyists or professional drone pilots. (Who would have
thought that would be a job title 15 years ago?)
The open source world is where I really like to stay if
possible, and there are no shortages of open source
photogrammetry and SFM projects. A few that caught my
eye when looking around included VisualSFM by
Changchang Wu (http://ccwu.me/vsfm). This program
has a nice GUI and looks like it could be pretty easy to
learn. OpenSFM is another option out there (https://git
hub.com/mapillary/OpenSfM). It’s built on the OpenCV
package and has a nifty viewer in JavaScript that can be
used to look at the models produced.
In this article, we’ll focus on the OpenDroneMap
(ODM) project. ODM was released initially in September
2014 and is a fork of the Bundler Tools project
( https://github.com/qwesda/Bundler Tools). The
Bundler Tools themselves help get the Path-based Multi-view
Stereo Software (PMVS) and Bundler projects running.
PMVS is developed by Yasutaka Furukawa and Jean Ponce
( www.di.ens.fr/pmvs).
In combination with Bundler SFM by Noah Snavely
( www.cs.cornell.edu/~snavely/bundler), we have some
really powerful software behind us. The whole idea of ODM
was to make these tools easy to use and provide a free and
capable package. The ODM community is actively
developing the project with nearly 43 contributors.
The group recently came out with a project called
WebODM ( https://github.com/OpenDroneMap/
WebODM) that puts a really nice application on top of
ODM. The first commit to the repository was in August
2016, so it is still a rapidly changing tool. We will use ODM
and/or WebODM for our purposes. WebODM will be easier
to use since it has a slick interface and is relatively easy to
get up and running with no real command line voodoo
required, but we will also set up ODM for those who feel at
home in the terminal.
Installing WebODM
To get up and running with WebODM, we are going to
use Docker. Docker is a container based way to deploy
software. The Docker container holds a file system for the
application, the code, system tools, and libraries, etc., all in
one box. This is really nice because everyone that uses the
Docker container has the exact same setup — which makes
installation, development, and troubleshooting a lot easier.
You may be thinking that this sounds like a virtual
machine — which is not really true. Yes, it lets the software
run identically on pretty much any platform, but in reality,
the Docker engine is running on top of your operating
system. In a virtual machine setup, there is a hypervisor
running on top of your operating system that supervises
guest operating systems running on top of it, and finally
the applications run in those guest operating systems.
Running a container is a lot more efficient and it lets you
isolate the things going on inside the container from other
containers and the system.
All of that being said, you need to install Docker. Head
on over to www.docker.com and download the
appropriate version for your system. There is a GUI installer
that you’ll run through and then you’ll be all set. Before
spinning up WebODM, you should also have Git and Python
installed. If you’ve followed along with our other projects,
you probably already do, but if not, grab Git from
https://git-scm.com/downloads and Python from your
favorite distributer. I recommend the Anaconda Python
installer from Continuum Analytics ( www.continuum.io/
downloads).
SERVO 04.2017 47