diff --git a/README.md b/README.md index 97a8f845..1f2926d8 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ OpenDroneMap can run natively on Ubuntu 14.04 or later, see [Build and Run Using Current version: 0.2 (this software is in beta) 1. Extract and enter the OpenDroneMap directory -2. Run `bash configure.sh` +2. Run `bash configure.sh install` 4. Copy the default settings file and edit it: `cp default.settings.yaml settings.yaml`. Set the `project-path` value to an empty directory (you will place sub-directories containing individual projects inside). You can add many options to this file, [see here](https://github.com/OpenDroneMap/OpenDroneMap/wiki/Run-Time-Parameters) 3. Download a sample dataset from [here](https://github.com/OpenDroneMap/odm_data_aukerman/archive/master.zip) (about 550MB) and extract it as a subdirectory in your project directory. 4. Run `./run.sh odm_data_aukerman` @@ -47,7 +47,13 @@ See [here](https://github.com/OpenDroneMap/OpenDroneMap/tree/ebaaf802a1fb50e335b Extract and enter the downloaded OpenDroneMap directory and compile all of the code by executing a single configuration script: - bash configure.sh + bash configure.sh install + +When updating to a newer version of ODM, it is recommended that you run + + bash configure.sh reinstall + +to ensure all the dependent packages and modules get updated. For Ubuntu 15.10 users, this will help you get running: diff --git a/configure.sh b/configure.sh index 67aba83a..fc9a30e9 100755 --- a/configure.sh +++ b/configure.sh @@ -1,95 +1,134 @@ #!/bin/bash -## Set up library paths -RUNPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -export PYTHONPATH=$RUNPATH/SuperBuild/install/lib/python2.7/dist-packages:$RUNPATH/SuperBuild/src/opensfm:$PYTHONPATH -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RUNPATH/SuperBuild/install/lib +install() { + ## Set up library paths -## Before installing -echo "Updating the system" -sudo apt-get update + export PYTHONPATH=$RUNPATH/SuperBuild/install/lib/python2.7/dist-packages:$RUNPATH/SuperBuild/src/opensfm:$PYTHONPATH + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RUNPATH/SuperBuild/install/lib -sudo add-apt-repository -y ppa:ubuntugis/ppa -sudo apt-get update + ## Before installing + echo "Updating the system" + sudo apt-get update -echo "Installing Required Requisites" -sudo apt-get install -y -qq build-essential \ - git \ - cmake \ - python-pip \ - libgdal-dev \ - gdal-bin \ - libgeotiff-dev \ - pkg-config + sudo add-apt-repository -y ppa:ubuntugis/ppa + sudo apt-get update -echo "Getting CMake 3.1 for MVS-Texturing" -sudo apt-get install -y software-properties-common python-software-properties -sudo add-apt-repository -y ppa:george-edison55/cmake-3.x -sudo apt-get update -y -sudo apt-get install -y --only-upgrade cmake + echo "Installing Required Requisites" + sudo apt-get install -y -qq build-essential \ + git \ + cmake \ + python-pip \ + libgdal-dev \ + gdal-bin \ + libgeotiff-dev \ + pkg-config -echo "Installing OpenCV Dependencies" -sudo apt-get install -y -qq libgtk2.0-dev \ - libavcodec-dev \ - libavformat-dev \ - libswscale-dev \ - python-dev \ - python-numpy \ - libtbb2 \ - libtbb-dev \ - libjpeg-dev \ - libpng-dev \ - libtiff-dev \ - libjasper-dev \ - libflann-dev \ - libproj-dev \ - libxext-dev \ - liblapack-dev \ - libeigen3-dev \ - libvtk5-dev + echo "Getting CMake 3.1 for MVS-Texturing" + sudo apt-get install -y software-properties-common python-software-properties + sudo add-apt-repository -y ppa:george-edison55/cmake-3.x + sudo apt-get update -y + sudo apt-get install -y --only-upgrade cmake -echo "Removing libdc1394-22-dev due to python opencv issue" -sudo apt-get remove libdc1394-22-dev + echo "Installing OpenCV Dependencies" + sudo apt-get install -y -qq libgtk2.0-dev \ + libavcodec-dev \ + libavformat-dev \ + libswscale-dev \ + python-dev \ + python-numpy \ + libtbb2 \ + libtbb-dev \ + libjpeg-dev \ + libpng-dev \ + libtiff-dev \ + libjasper-dev \ + libflann-dev \ + libproj-dev \ + libxext-dev \ + liblapack-dev \ + libeigen3-dev \ + libvtk5-dev -## Installing OpenSfM Requisites -echo "Installing OpenSfM Dependencies" -sudo apt-get install -y -qq python-networkx \ - libgoogle-glog-dev \ - libsuitesparse-dev \ - libboost-filesystem-dev \ - libboost-iostreams-dev \ - libboost-regex-dev \ - libboost-python-dev \ - libboost-date-time-dev \ - libboost-thread-dev \ - python-pyproj + echo "Removing libdc1394-22-dev due to python opencv issue" + sudo apt-get remove libdc1394-22-dev -sudo pip install -U PyYAML \ - exifread \ - gpxpy \ - xmltodict \ - appsettings + ## Installing OpenSfM Requisites + echo "Installing OpenSfM Dependencies" + sudo apt-get install -y -qq python-networkx \ + libgoogle-glog-dev \ + libsuitesparse-dev \ + libboost-filesystem-dev \ + libboost-iostreams-dev \ + libboost-regex-dev \ + libboost-python-dev \ + libboost-date-time-dev \ + libboost-thread-dev \ + python-pyproj -echo "Installing Ecto Dependencies" -sudo pip install -U catkin-pkg -sudo apt-get install -y -qq python-empy \ - python-nose \ - python-pyside + sudo pip install -U PyYAML \ + exifread \ + gpxpy \ + xmltodict \ + appsettings -echo "Installing OpenDroneMap Dependencies" -sudo apt-get install -y -qq python-pyexiv2 \ - python-scipy \ - jhead \ - liblas-bin + echo "Installing Ecto Dependencies" + sudo pip install -U catkin-pkg + sudo apt-get install -y -qq python-empy \ + python-nose \ + python-pyside -echo "Compiling SuperBuild" -cd SuperBuild -mkdir -p build && cd build -cmake .. && make -j$(nproc) + echo "Installing OpenDroneMap Dependencies" + sudo apt-get install -y -qq python-pyexiv2 \ + python-scipy \ + jhead \ + liblas-bin -echo "Compiling build" -cd ../.. -mkdir -p build && cd build -cmake .. && make -j$(nproc) + echo "Compiling SuperBuild" + cd ${RUNPATH}/SuperBuild + mkdir -p build && cd build + cmake .. && make -j$(nproc) -echo "Configuration Finished" + echo "Compiling build" + cd ${RUNPATH} + mkdir -p build && cd build + cmake .. && make -j$(nproc) + + echo "Configuration Finished" +} + +uninstall() { + echo "Removing SuperBuild and build directories" + cd ${RUNPATH}/SuperBuild + rm -rfv build src download install + cd ../ + rm -rfv build +} + +reinstall() { + echo "Reinstalling ODM modules" + uninstall + install +} + +usage() { + echo "Usage:" + echo "bash configure.sh " + echo "Subcommands:" + echo " install" + echo " Installs all dependencies and modules for running OpenDroneMap" + echo " reinstall" + echo " Removes SuperBuild and build modules, then re-installs them. Note this does not update OpenDroneMap to the latest version. " + echo " uninstall" + echo " Removes SuperBuild and build modules. Does not uninstall dependencies" + echo " help" + echo " Displays this message" +} + +if [[ $1 =~ ^(install|reinstall|uninstall|usage)$ ]]; then + RUNPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + "$1" +else + echo "Invalid instructions." >&2 + usage + exit 1 +fi \ No newline at end of file