Merge pull request #17 from smathermather/publish

Pull in small changes plus new install instructions
pull/20/head
Stephen Mather 2019-09-14 13:30:26 -04:00 zatwierdzone przez GitHub
commit 6a076318fc
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
18 zmienionych plików z 537 dodań i 69 usunięć

Wyświetl plik

@ -1,117 +1,500 @@
.. Notes and doc on installing ODM
ODM Installation
================
Installation and Getting Started
================================
This section is excerpted and modified with permission from `OpenDroneMap: The Missing Guide <https://odmbook.com>`_, by Piero Toffanin.
Until recently OpenDroneMap was the term used to refer to a single command line application (what is now known as the ODM project). Not anymore. With the recent development of a web interface, an API and other tools, OpenDroneMap has become an ecosystem of various applications to process, analyze and display aerial data. This ecosystem is made of several components:
.. figure:: https://www.opendronemap.org/wp-content/uploads/2018/07/odm-logo-64x64.png
:alt: ODM Logo
:align: center
* **ODM** is the processing engine, which can be used from the command line. It takes images as input and produces a variety of outputs, including point clouds, 3D models and orthophotos
.. figure:: images/NodeODMLogo.png
:alt: NodeODM Logo
:align: center
* **NodeODM** is a light-weight API built on top of ODM. It allows users and applications to access the functions of ODM over a computer network
.. figure:: https://www.opendronemap.org/wp-content/uploads/2018/07/webodm-icon-64x64.png
:alt: WebODM Logo
:align: center
* **WebODM** is a friendly user interface that includes a map viewer, a 3D viewer, user logins, a plugin system and many other features that are expected of modern drone mapping platforms
.. figure:: https://www.opendronemap.org/wp-content/uploads/2019/01/cloudodm-64x64.png
:alt: CloudODM Logo
:align: center
* **CloudODM** is a small command line client to communicate with ODM via the NodeODM API
.. figure:: images/PyODMLogo.png
:alt: PyODM Logo
:align: center
* **PyODM** is a Python SDK for creating tasks via the NodeODM API. We cover it in more detail in the “Automated Processing With Python” chapter
.. figure:: images/ClusterODMLogo.png
:alt: ClusterODM Logo
:align: center
* **ClusterODM** is a load balancer for connecting together multiple NodeODM instances
ODM, NodeODM and WebODM are available on all major platforms (Windows, macOS and Linux) via a program called docker, which is required to run the software. Docker offers a way to run “containers”. Containers are packaged copies of an entire system, its software and its dependencies. These containers run within a virtual environment. On Linux this virtual environment is available from the operating system and is very efficient. On macOS and Windows the containers run within a VM, so theres a bit of a overhead. but its still very suitable for running the software. Once installed users do not have to worry much about docker, as it operates (almost) transparently.
Without docker it would not be possible to run ODM on Windows or macOS. On these platforms ODM cannot run natively. Future development efforts are being focused on leveraging the new Windows Subsystem for Linux (WSL) and the possibility to make a native port of all dependencies to macOS, which is going to make the installation much easier.
On Ubuntu Linux 16.04 its feasible to run all OpenDroneMap software natively. However, because theres very little performance penalty for running docker on Linux and docker is straightforward to setup on this platform, we dont recommend it. On Linux the advantages of containerization far outweigh a tiny performance penalty. With docker users also get easy one-step updates of the software, so thats nice.
Hardware Recommendations
------------------------
OpenDroneMap is built on Ubuntu 16.04 but can be run on other major platforms using Docker.
The bare minimum requirements for running the software
are:
* 64bit CPU manufactured on or after 2010
* 20 GB of disk space
* 4 GB RAM
No more than 100-200 images can be processed with the above specifications (the software will run out of memory). Recommended requirements are:
* Latest Generation CPU
* 100 GB of disk space
* 16 GB RAM
The above will allow for a few hundred images to be processed without too many issues. A CPU with more cores will allow for faster processing, while a graphics card (GPU) currently has no impact on performance. For processing more images, add more disk space and RAM linearly to the number of images you need to process.
Minimum 4GB of RAM, recommended 16GB or more. Many parts of the ODM toolchain are parallelized, and memory requirements will increase as the size of the input data increases.
.. _docker-installation:
Docker Installation (cross-platform)
------------------------------------
Installation
------------
We recommend people use `docker <https://www.docker.com>`_ for running ODM, whether you are on Windows, macOS or Linux.
Install Docker on Windows
`````````````````````````
Before you start, check that your CPU supports virtualization! Sometimes this is disabled from the BIOS. The feature is often called "VT-X" and needs to be enabled. On Windows 8 or higher you can check if virtualization is enabled by opening the Task Manager --> Performance tab. The "Virtualization" field of your CPU should read "enabled". On Windows 7 you can use `this tool <http://www.microsoft.com/en-us/download/details.aspx?id=592>`_ instead.
Now we can install docker:
* If you are on Windows 10 Home, Windows 8 (any version) or Windows 7 (any version), use Docker Toolbox: https://github.com/docker/toolbox/releases/download/v18.09.3/DockerToolbox-18.09.3.exe
* If you are on Windows 10 Professional or a newer version use Docker for Windows instead: https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe
Install Docker on macOS/Linux
`````````````````````````````
Docker installation on macOS and Linux is straightforward.
* For macOS simply download the Docker for Mac installer from https://download.docker.com/mac/stable/Docker.dmg
* For Linux simply use the the docker install script::
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
Running ODM/WebODM
Install on Windows
``````````````````
With docker installed, see the :ref:`docker-usage` usage page on using ODM.
To run OpenDroneMap you need at least Windows 7. Previous
versions of Windows are not supported.
Before running ODM it's advised to check that Docker is allocating sufficient resources to containers. In Windows this can be done in the 'Docker for Windows' program under the 'Advanced' tab.
Step 1. Check Virtualization Support
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ODM is a command line utility. We also have a graphical interface called `WebODM <https://github.com/OpenDroneMap/WebODM>`_. To install it, make sure you have installed `git <https://git-scm.com/downloads/>`_ and `python <https://www.python.org/downloads/>`_. Then launch a shell (macOS/Linux) or ``Git Bash`` (Windows) from the start menu (**not** a command prompt/powershell) and simply type::
Docker requires a feature from your CPU called virtualization, which allows it to run virtual machines (VMs). Make sure you have it enabled! Sometimes this is disabled. To check, on Windows 8 or higher you can open the **Task Manager** (press CTRL+SHIFT+ESC) and switch to the **Performance** tab.
git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1
cd WebODM/
./webodm.sh start
.. figure:: images/virtualizationcheck.png
:alt: Image of checking virtualization in Windows 8 or higher
:align: center
See the `WebODM project README <https://github.com/OpenDroneMap/WebODM>`_ for other useful commands.
*Virtualization should be enabled*
On Windows 7 to see if you have virtualization enabled you can use the `Microsoft® Hardware-Assisted Virtualization Detection Tool <http://
www.microsoft.com/en-us/download/details.aspx?id=592>`_ instead.
If virtualization is disabled, youll need to enable it. The procedure unfortunately is a bit different for each computer model, so the best way to do this is to look up on a search engine “how to enable vtx for <type your computer model here>”. Often times its a matter of restarting the computer, immediately pressing F2 or F12 during startup, navigating the boot menu and changing the settings to enable virtualization (often called “VT-X”).
.. figure:: images/bioskeys.png
:alt: Table of different bios keys
:align: center
*Common keys to press at computer startup to access the boot menu for various PC vendors*
Step 2. Install Requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
First, youll need to install:
* Git: https://git-scm.com/downloads
* Python (latest version 3): https://www.python.org/downloads/windows/
For Python 3, make sure you check **Add Python 3.x to PATH** during the installation.
.. figure:: images/installpython3.png
:alt: Screenshot of Python3 installation process
:align: center
*Dont forget to add the Python executable to your PATH (so that you can run commands with it)*
Then, only if you are on Windows 10 Home, Windows 8 (any version) or Windows 7 (any version), install:
* Docker Toolbox: https://github.com/docker/toolbox/releases/download/v18.09.3/DockerToolbox-18.09.3.exe
If you are on Windows 10 Professional or a newer version, you should install instead:
* Docker for Windows: https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe
Please do **NOT** install both docker programs. They are different and will create a mess if they are both installed.
After installing docker, launch it from the Desktop icon that is created from the installation (**Docker Quickstart** in the case of Docker Toolbox, **Docker for Windows** for Docker for Windows). This is important, do not skip this step. If there are errors, follow the prompts on screen to fix them.
Step 3. Check Memory and CPU Allocation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Docker on Windows works by running a VM in the background (think of a VM as a “computer emulator”). This VM has a certain amount of memory allocated and WebODM can only use as much memory as its allocated.
If you installed Docker Toolbox (see below if you installed Docker for Windows instead):
1. Open the **VirtualBox Manager** application
2. Right click the **default** VM and press **Close (ACPI Shutdown)** to stop the machine
3. Right click the **default** VM and press **Settings...**
4. Move the **Base Memory** slider from the **System** paneland allocate 60-70% of all available memory, optionally adding 50% of the available processors from the **Processor** tab also
.. figure:: images/virtualboxsettings.png
:alt: Screenshot of VirtualBox Settings
:align: center
*VirtualBox default VM settings*
Then press **OK**, right click the **default** VM and press **Start**.
If you installed Docker for Windows instead:
1. Look in the system tray and right click the “white whale” icon.
2. From the menu, press **Settings...**
3. From the panel, click **Advanced** and use the sliders to allocate 60-70% of available memory and use half of all available CPUs.
4. Press **Apply**.
.. figure:: images/dockericon.png
:alt: Screenshot of Docker Icon
:align: center
*Step 1 Docker icon*
.. figure:: images/dockersettings.png
:alt: Screenshot of Docker Settings
:align: center
*Step 3 & 4 Docker settings*
Step 4. Download WebODM
^^^^^^^^^^^^^^^^^^^^^^^
Open the **Git Gui** program that comes installed with Git. From there:
* In **Source Location** type: https://github.com/Open-DroneMap/WebODM
* In **Target Directory** click browse and navigate to a folder of your choosing (create one if necessary)
* Press **Clone**
.. figure:: images/gitgui.png
:alt: Screenshot of Git Gui
:align: center
*Git Gui*
If the download succeeded, you should now see this window:
.. figure:: images/gitguisuccess.png
:alt: Screenshot of Git Gui after successful download
:align: center
*Git Gui after successful download (clone)*
Go to the **Repository** menu, then click **Create Desktop Icon**. This will allow you to come back to this application easily in the future.
Step 4. Launch WebODM
^^^^^^^^^^^^^^^^^^^^^
From Git Gui, go to the **Repository** menu, then click **Git Bash**. From the command line terminal type:
.. code:: bash
$ ./webodm.sh start&
Several components will download to your machine at this point, including WebODM, NodeODM and ODM. After the download you should be greeted by the following screen:
.. figure:: images/webodmsuccess.png
:alt: Screenshot of after successfully downloading WebODM
:align: center
*Console output after starting WebODM for the first time*
* If you are using Docker for Windows, open a web browser to http://localhost:8000
* If you are using Docker Toolbox, find the IP address to connect to by typing:
.. code:: bash
$ docker-machine ip
You should get a result like the following:
.. code:: bash
192.168.1.100
Then connect to http://192.168.1.100:8000 (replacing the IP address with the proper one).
Installing on macOS
```````````````````
Most modern (post 2010) Mac computers running macOS Sierra 10.12 or higher can run OpenDroneMap using docker, as long as hardware virtualization is supported (see below).
Step 1. Check Virtualization Support
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Open a Terminal window and type:
.. code:: bash
$ sysctl kern.hv_support
You will get a response similar to the following:
.. code:: bash
kern.hv_support: 1
If the result is *kern.hv_support: 1*, then your Mac is supported! Continue with Step 2.
If the result is *kern.hv_support: 0*, unfortunately it means your Mac is too old to run OpenDroneMap. :(
Step 2. Install Requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There are only two programs to install:
1. Docker: https://download.docker.com/mac/stable/Docker.dmg
2. Git: https://sourceforge.net/projects/git-osx-installer/files/
After installing docker you should find an icon that looks like a whale in the task bar.
.. figure:: images/macwhale.png
:alt: Screenshot of Docker whale
:align: center
*Docker app running*
You can verify that docker is running properly by opening the **Terminal** app and typing:
.. code:: bash
$ docker run hello-world
Which should return
.. code:: bash
Hello from Docker!
To verify that git is installed, simply type:
.. code:: bash
$ git --version
Which should return something similar to the following:
.. code:: bash
git version 2.20.1 (Apple Git-117)
If you get a “bash: git: command not found”, try to restart your **Terminal** app and double-check for any errors during the install process.
Step 3. Check Memory and CPU Allocation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Docker on macOS works by running a VM in the background (think of it as a “computer emulator”). This VM has a certain amount of memory allocated and WebODM can only use as much memory as its allocated.
1. Right click the whale icon from the task bar and click **Preferences**...
2. Select the **Advanced** tab
3. Adjust the CPUs slider to use half of all available CPUs and the memory to use 60-70% of all available memory
4. Press **Apply & Restart**
.. figure:: images/dockeradvanced.png
:alt: Screenshot of Docker advanced settings
:align: center
*Docker advanced settings*
Step 4. Download and Launch WebODM
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
From a **Terminal** type:
.. code:: bash
$ git clone https://github.com/OpenDroneMap/WebODM
$ cd WebODM
$ ./webodm.sh start
Then open a web browser to http://localhost:8000.
Installing on Linux
```````````````````
OpenDroneMap can run on any Linux distribution that supports docker. According to `dockers documentation website <https://docs.docker.com/install/>`_ the officially supported distributions are CentOS, Debian, Ubuntu and Fedora, with static binaries available for others. If you have to pick a distribution solely for running OpenDroneMap, Ubuntu is the recommended way to go.
Step 1. Install Requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There are four programs that need to be installed:
1. Docker
2. Git
3. Python (2 or 3)
4. Pip
We cannot possibly cover the installation process for every Linux distribution out there, so well limit the instructions to those that are distributions officially supported by docker. In all cases its just a matter of opening a terminal prompt and typing a few commands.
Install on Ubuntu / Debian
__________________________
Commands to type:
.. code:: bash
$ sudo apt update
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sh get-docker.sh
$ sudo apt install -y git python python-pip
Install on CentOS / RHEL
________________________
Commands to type:
.. code:: bash
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sh get-docker.sh
$ sudo yum -y install git python python-pip
Install on Fedora
_________________
Commands to type:
.. code:: bash
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sh get-docker.sh
$ sudo dnf install git python python-pip
Install on Arch
_______________
Commands to type:
.. code:: bash
$ sudo pacman -Sy docker git python python-pip
Step 2. Check Additional Requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In addition to the three programs above, the dockercompose script is also needed. Sometimes its already installed with docker, but sometimes it isnt. To verify if its installed try to type:
.. code:: bash
$ docker-compose --version
You should see somethings similar to the following:
.. code:: bash
docker-compose version 1.22.0, build f46880f
If instead you get something similar to the following:
.. code:: bash
docker-compose: command not found
you can install it by using pip:
.. code:: bash
$ sudo pip install docker-compose
Build your docker image
```````````````````````
Step 3. Download and Launch WebODM
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Download and extract the latest version of ODM: https://github.com/OpenDroneMap/ODM/archive/master.zip
From a terminal type:
In Docker toolbox or Docker CE, navigate to your extracted ODM directory. Then build the Docker image.::
.. code:: bash
cd Documents/OpenDroneMap_v0_3_1/
docker build -t my_odm_image .
$ git clone https://github.com/OpenDroneMap/WebODM
$ cd WebODM
$ ./webodm.sh start
Then open a web browser to http://localhost:8000.
When building your own Docker image, if image size is of importance to you, you should use the ``--squash`` flag, like so:::
Basic Commands and Troubleshooting
``````````````````````````````````
docker build --squash -t my_odm_image .
The cool thing about using docker is that 99% of the tasks youll ever need to perform while using WebODM can be done via the ./webodm.sh script. You have already encountered one of them:
This will clean up intermediate steps in the Docker build process, resulting in a significantly smaller image (about half the size).
.. code:: bash
Experimental flags need to be enabled in Docker to use the ``--squash`` flag. To enable this, insert the following into the file /etc/docker/daemon.json:::
$ ./webodm.sh start
which takes care of starting WebODM and setting up a default processing node (node-odm-1). If you want to stop WebODM, you can already guess what the command is:
{
"experimental": true
}
.. code:: bash
After this, you must restart docker by typing ``sudo service docker restart`` into your Linux terminal.
$ ./webodm.sh stop
There are several other commands you can use, along with different flags. Flags are parameters passed to the ./webodm.sh command and are typically prefixed with “–”. The **port** flag for example instructs WebODM to use a different network port:
.. code:: bash
$ ./webodm.sh start --port 80
Once this is done, go to :ref:`docker-usage`
Other useful commands are listed below:
.. code:: bash
.. _native-installation:
# Restart WebODM (useful if things get stuck)
$ ./webodm.sh restart
# Reset the admin user's password if you forget it
$ ./webodm.sh resetadminpassword newpass
# Update everything to the latest version
$ ./webodm.sh update
# Store processing results in the specified folder instead of the default location (inside docker)
$ ./webodm.sh restart --media-dir /path/to/webodm_results
Native Installation (Ubuntu 16.04)
----------------------------------
# See all options
$ ./webodm.sh --help
Download and extract the latest version of ODM: https://github.com/OpenDroneMap/ODM/archive/master.zip
`The community forum <https://community.opendronemap.org>`_ is a great place to ask for help if you get stuck during any of the installation steps and for general questions on using the ./webodm.sh script.
The installation is simple::
Hello, WebODM!
``````````````
bash configure.sh install
After running ./webodm.sh start and opening WebODM in the browser, you will be greeted with a welcome message and will be asked to create the first user. Take some time to familiarize yourself with the web interface and explore its various menus.
.. figure:: images/webodmdashboard.png
:alt: Screenshot of WebODM Dashboard
:align: center
configure.sh can take up to 2 arguments
*WebODM Dashboard*
configure.sh command [n]
command: can be one of (install, reinstall, uninstall, usage)
Notice that under the **Processing Nodes** menu theres a "node-odm-1" node already configured for you to use. This is a NodeODM node and has been created automatically by WebODM. This node is running on the same machine as WebODM.
[n] is an optional argument that will set the number of processes for the compiler
If youve made it this far, congratulations! Now its time to start processing some data.
.. figure:: images/congratulations.png
:alt: Image of celebratory dance
:align: center
Setting environment variables
`````````````````````````````
Running on more than one machine
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Using your favorite editor, open `~/.bashrc` and append the following to the bottom of the file (replace /your/path/OpenDroneMap with your installation path, e.g. /home/user/OpenDroneMap)::
**Optionally:** If you have another computer, you can repeat the installation process (install docker, git, python, etc.) and launch a new NodeODM node by typing from a Terminal/Git Bash window:
export PYTHONPATH=$PYTHONPATH:/your/path/OpenDroneMap/SuperBuild/install/lib/python2.7/dist-packages
export PYTHONPATH=$PYTHONPATH:/your/path/OpenDroneMap/SuperBuild/src/opensfm
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/path/OpenDroneMap/SuperBuild/install/lib
.. code:: bash
You will need to log out and back in again for the variables to set.
docker run --rm -it -p 3000:3000 opendronemap/nodeodm -q 1 --token secret
The above command asks docker to launch a new container using the opendronemap/nodeodm image from Docker Hub (the latest version of NodeODM), using port 3000, setting a maximum number of concurrent tasks to 1 and to protect the node from unauthorized access using the password "secret".
From WebODM you can then press the **Add New** button under **Processing Nodes**. For the **hostname/IP** field type the IP of the second computer. For the **port** field type “3000”. For the **token** field type “secret”. You can also add an optional **label** for your node, such as “second computer”. Then press **Save**.
If everything went well, you should now have two processing nodes! You will be able to process multiple tasks in parallel using two different machines.

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 7.0 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 6.1 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 5.8 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 131 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 18 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 95 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 99 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 130 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 122 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 94 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 215 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 72 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 134 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 242 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 297 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 215 KiB

Wyświetl plik

@ -49,6 +49,9 @@ ODM can also automatically distribute the processing of each submodel to multipl
:alt: image of lens distortion effect on bowling of data
:align: center
Getting Started with Distributed Split-Merge
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The first step is start ClusterODM::
docker run -ti -p 3001:3000 -p 8080:8080 opendronemap/clusterodm
@ -74,14 +77,96 @@ Make sure you are running version ``1.5.1`` or higher of the NodeODM API.
At this point, simply use the ``--sm-cluster`` option to enable distributed split-merge::
docker run -ti --rm -v /my/project:/datasets/code opendronemap/odm --project-path /datasets --split 400 --split-overlap 100 --sm-cluster http://<cluster-odm-ip>:3001
docker run -ti --rm -v /my/project:/datasets/code opendronemap/odm --project-path /datasets --split 800 --split-overlap 120 --sm-cluster http://<cluster-odm-ip>:3001
Understanding the Cluster
^^^^^^^^^^^^^^^^^^^^^^^^^
When connected via telnet, it is possible to interrogate what is happening on the cluster. For example, we can use the command HELP to find out available commands::
# HELP
NODE ADD <hostname> <port> [token] - Add new node
NODE DEL <node number> - Remove a node
NODE INFO <node number> - View node info
NODE LIST - List nodes
NODE LOCK <node number> - Stop forwarding tasks to this node
NODE UNLOCK <node number> - Resume forwarding tasks to this node
NODE UPDATE - Update all nodes info
NODE BEST <number of images> - Show best node for the number of images
ROUTE INFO <taskId> - Find route information for task
ROUTE LIST [node number] - List routes
TASK LIST [node number] - List tasks
TASK INFO <taskId> - View task info
TASK OUTPUT <taskId> [lines] - View task output
TASK CANCEL <taskId> - Cancel task
TASK REMOVE <taskId> - Remove task
ASR VIEWCMD <number of images> - View command used to create a machine
!! - Repeat last command
If, for example, the NodeODM instance wasn't active when ClusterODM started, we might list nodes and see something as follows::
# NODE LIST
1) localhost:3000 [offline] [0/2] <version 1.5.3> [L]
To address this, we can start up our local node (if not already started), and then perform a ``NODE UPDATE``::
# NODE UPDATE
OK
# NODE LIST
1) localhost:3000 [online] [0/2] <version 1.5.3> [L]
Accessing the Logs
^^^^^^^^^^^^^^^^^^
While a process is running, it is also possible to list the tasks, and view the task output::
# TASK LIST
# TASK OUTPUT <taskId> [lines]
Autoscaling CloudODM
^^^^^^^^^^^^^^^^^^^^
CloudDOM also includes the option to autoscale on multiple platforms, including, to date, Amazon and Digital Ocean. This allows users to reduce costs associated with always-on instances as well as being able to scale processing based on demand.
To setup autoscaling you must:
* Have a functioning version of NodeJS installed and then install ClusterODM
::
git clone https://github.com/OpenDroneMap/ClusterODM
cd ClusterODM
npm install
* Make sure docker-machine is installed.
* Setup a S3-compatible bucket for storing results.
* Create a configuration file for `DigitalOcean <https://github.com/OpenDroneMap/ClusterODM/blob/master/docs/digitalocean.md>`_ or `Amazon Web Services <https://github.com/OpenDroneMap/ClusterODM/blob/master/docs/aws.md>`_.
You can then launch ClusterODM with::
node index.js --asr configuration.json
You should see something similar to following messages in the console::
info: ASR: DigitalOceanAsrProvider
info: Can write to S3
info: Found docker-machine executable
You should always have at least one static NodeODM node attached to ClusterODM, even if you plan to use the autoscaler for all processing. If you setup auto scaling, you can't have zero nodes and rely 100% on the autoscaler. You need to attach a NodeODM node to act as the "reference node" otherwise ClusterODM will not know how to handle certain requests (for the forwarding the UI, for validating options prior to spinning up an instance, etc.). For this purpose, you should add a "dummy" NodeODM node and lock it::
telnet localhost 8080
> NODE ADD localhost 3001
> NODE LOCK 1
> NODE LIST
1) localhost:3001 [online] [0/2] <version 1.5.1> [L]
This way all tasks will be automatically forwarded to the autoscaler.
Limitations
-----------
The 3D textured meshes are currently not being merged as part of the workflow (only point clouds, DEMs and orthophotos are).
GCPs are fully supported, however, there needs to be at least 3 GCP points on each submodel for the georeferencing to take place. If a submodel has less than 3 GCPs, a combination of the remaining GCPs + EXIF data will be used instead (which is going to be less accurate). We recommend using the ``image_groups.txt`` file to accurately control the submodel split when using GCPs.
GCPs are fully supported, however, there needs to be at least 3 GCP points on each submodel for the georeferencing to take place. If a submodel has fewer than 3 GCPs, a combination of the remaining GCPs + EXIF data will be used instead (which is going to be less accurate). We recommend using the ``image_groups.txt`` file to accurately control the submodel split when using GCPs.
Aknowledgments
--------------