From 93451a077cefb7c9d9893d286ed15adab645abd6 Mon Sep 17 00:00:00 2001 From: Stephen Mather <1174901+smathermather@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:44:18 -0400 Subject: [PATCH 1/6] add ODM build tutorial --- source/tutorials.rst | 87 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/source/tutorials.rst b/source/tutorials.rst index d3bf48a722..9e7a9b662d 100644 --- a/source/tutorials.rst +++ b/source/tutorials.rst @@ -981,3 +981,90 @@ Port 3000 is ClusterODM's proxy. This is the place we assign tasks to ClusterODM :align: center After adding images in this browser, you can press Start Task and see ClusterODM assigning tasks to the nodes you have wired to. Go for a walk and check the progress. + +Development and testing of ODM +============================== + +Development and testing of code changes can be difficult. The simplest way to do so is modify the code and rebuild docker images from source, much as documented in the `README for the ODM repository `_. + +However, having to do a full docker rebuild for each change is time consuming and wasteful. What might be better is to have a dedicated, long running node that allows us to test out changes in near real time. + +#. Fork and clone repository +#. Set up local NodeODM docker instance +#. Modify code +#. Connect to NodeODM instance +#. Install and use changes + +Fork and clone repository +------------------------- + +First, let's fork the ODM repo, and checkout a new branch locally that will function as our development branch. + +.. code-block:: bash + git checkout -b my_clever_new_change + # Switched to a new branch 'my_clever_new_change' + +Set up local NodeODM docker instance +------------------------------------ + +Next, we will set up a NodeODM instance with a locally mounted volume that points to our development branch of ODM + +.. code-block:: bash + docker run -d --restart unless-stopped -p 3000:3000 -v /path/to/cloned/ODM/repository/data:/code opendronemap/nodeodm + +Modify code +----------- + +For our test today, we will attempt to upgrade Ceres Solver to version 2.2.0. Most external libraries like Ceres can be found in the Superbuild directory. In this case we edit SuperBuild/cmake/External-Ceres.cmake, and set it to use version 2.2.0 + +*** Vimdiff image + +Now that we've made that small, but substantive change, we need to rebuild Ceres on the docker image for testing. + + +Connect to NodeODM instance +--------------------------- + +Let us find out our container name, in case we forgot: + +.. code-block:: bash + docker ps + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + c997a4c5611b opendronemap/nodeodm "/usr/bin/node /var/…" 2 minutes ago Up 2 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp affectionate_yalow + +Now that we know the container name, we will connect to that instance using docker exec as follows: + +.. code-block:: bash + docker exec -it affectionate_yalow bash + +Install and use changes +----------------------- + +Let us get the environment prepared for our testing: + +.. code-block:: bash + root@c997a4c5611b:/var/www# cd /code + ./configure.sh installruntimedepsonly + mkdir /code/SuperBuild/build + cd /code/SuperBuild/build + + +Next we can rebuild Ceres. + +.. code-block:: bash + cmake ../. + make -j$(nproc) ceres + ... + -- Up-to-date: /code/SuperBuild/install/include/ceres + -- Up-to-date: /code/SuperBuild/install/include/ceres/internal + -- Installing: /code/SuperBuild/install/include/ceres/internal/config.h + -- Installing: /code/SuperBuild/install/include/ceres/internal/export.h + -- Installing: /code/SuperBuild/install/include/ceres/internal/miniglog/glog/logging.h + -- Installing: /code/SuperBuild/install/lib/cmake/Ceres/CeresTargets.cmake + -- Installing: /code/SuperBuild/install/lib/cmake/Ceres/CeresTargets-release.cmake + -- Installing: /code/SuperBuild/install/lib/cmake/Ceres/CeresConfig.cmake + -- Installing: /code/SuperBuild/install/lib/cmake/Ceres/CeresConfigVersion.cmake + [100%] Completed 'ceres' + [100%] Built target ceres + +Success! Now we can either run ODM directly inside this container, use the NodeODM interface to process data, or connect in with WebODM for additional testing. From b215c3af210b673deae16c430d852ebf21f01f14 Mon Sep 17 00:00:00 2001 From: Stephen Mather <1174901+smathermather@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:46:09 -0400 Subject: [PATCH 2/6] fix code blocks --- source/tutorials.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/tutorials.rst b/source/tutorials.rst index 9e7a9b662d..52c44acc13 100644 --- a/source/tutorials.rst +++ b/source/tutorials.rst @@ -1000,7 +1000,7 @@ Fork and clone repository First, let's fork the ODM repo, and checkout a new branch locally that will function as our development branch. -.. code-block:: bash +:: bash git checkout -b my_clever_new_change # Switched to a new branch 'my_clever_new_change' @@ -1009,7 +1009,7 @@ Set up local NodeODM docker instance Next, we will set up a NodeODM instance with a locally mounted volume that points to our development branch of ODM -.. code-block:: bash +:: bash docker run -d --restart unless-stopped -p 3000:3000 -v /path/to/cloned/ODM/repository/data:/code opendronemap/nodeodm Modify code @@ -1027,14 +1027,14 @@ Connect to NodeODM instance Let us find out our container name, in case we forgot: -.. code-block:: bash +:: bash docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c997a4c5611b opendronemap/nodeodm "/usr/bin/node /var/…" 2 minutes ago Up 2 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp affectionate_yalow Now that we know the container name, we will connect to that instance using docker exec as follows: -.. code-block:: bash +:: bash docker exec -it affectionate_yalow bash Install and use changes @@ -1042,7 +1042,7 @@ Install and use changes Let us get the environment prepared for our testing: -.. code-block:: bash +:: bash root@c997a4c5611b:/var/www# cd /code ./configure.sh installruntimedepsonly mkdir /code/SuperBuild/build @@ -1051,7 +1051,7 @@ Let us get the environment prepared for our testing: Next we can rebuild Ceres. -.. code-block:: bash +:: code-block:: bash cmake ../. make -j$(nproc) ceres ... From 8ef8e8c1b55a6ca5b554059b92d33f5b99f530a0 Mon Sep 17 00:00:00 2001 From: Stephen Mather <1174901+smathermather@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:47:43 -0400 Subject: [PATCH 3/6] fix code blocks for real --- source/tutorials.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/tutorials.rst b/source/tutorials.rst index 52c44acc13..f025a838ff 100644 --- a/source/tutorials.rst +++ b/source/tutorials.rst @@ -1001,6 +1001,7 @@ Fork and clone repository First, let's fork the ODM repo, and checkout a new branch locally that will function as our development branch. :: bash + git checkout -b my_clever_new_change # Switched to a new branch 'my_clever_new_change' @@ -1010,6 +1011,7 @@ Set up local NodeODM docker instance Next, we will set up a NodeODM instance with a locally mounted volume that points to our development branch of ODM :: bash + docker run -d --restart unless-stopped -p 3000:3000 -v /path/to/cloned/ODM/repository/data:/code opendronemap/nodeodm Modify code @@ -1028,6 +1030,7 @@ Connect to NodeODM instance Let us find out our container name, in case we forgot: :: bash + docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c997a4c5611b opendronemap/nodeodm "/usr/bin/node /var/…" 2 minutes ago Up 2 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp affectionate_yalow @@ -1035,6 +1038,7 @@ Let us find out our container name, in case we forgot: Now that we know the container name, we will connect to that instance using docker exec as follows: :: bash + docker exec -it affectionate_yalow bash Install and use changes @@ -1043,6 +1047,7 @@ Install and use changes Let us get the environment prepared for our testing: :: bash + root@c997a4c5611b:/var/www# cd /code ./configure.sh installruntimedepsonly mkdir /code/SuperBuild/build @@ -1051,7 +1056,8 @@ Let us get the environment prepared for our testing: Next we can rebuild Ceres. -:: code-block:: bash +:: bash + cmake ../. make -j$(nproc) ceres ... From b6400b59fabfc64242e705e75add14df03fbb41b Mon Sep 17 00:00:00 2001 From: Stephen Mather <1174901+smathermather@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:50:06 -0400 Subject: [PATCH 4/6] really fix code --- source/tutorials.rst | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/source/tutorials.rst b/source/tutorials.rst index f025a838ff..c1035f5e2f 100644 --- a/source/tutorials.rst +++ b/source/tutorials.rst @@ -1000,7 +1000,7 @@ Fork and clone repository First, let's fork the ODM repo, and checkout a new branch locally that will function as our development branch. -:: bash +:: git checkout -b my_clever_new_change # Switched to a new branch 'my_clever_new_change' @@ -1010,7 +1010,7 @@ Set up local NodeODM docker instance Next, we will set up a NodeODM instance with a locally mounted volume that points to our development branch of ODM -:: bash +:: docker run -d --restart unless-stopped -p 3000:3000 -v /path/to/cloned/ODM/repository/data:/code opendronemap/nodeodm @@ -1019,8 +1019,6 @@ Modify code For our test today, we will attempt to upgrade Ceres Solver to version 2.2.0. Most external libraries like Ceres can be found in the Superbuild directory. In this case we edit SuperBuild/cmake/External-Ceres.cmake, and set it to use version 2.2.0 -*** Vimdiff image - Now that we've made that small, but substantive change, we need to rebuild Ceres on the docker image for testing. @@ -1029,7 +1027,7 @@ Connect to NodeODM instance Let us find out our container name, in case we forgot: -:: bash +:: docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES @@ -1037,7 +1035,7 @@ Let us find out our container name, in case we forgot: Now that we know the container name, we will connect to that instance using docker exec as follows: -:: bash +:: docker exec -it affectionate_yalow bash @@ -1046,7 +1044,7 @@ Install and use changes Let us get the environment prepared for our testing: -:: bash +:: root@c997a4c5611b:/var/www# cd /code ./configure.sh installruntimedepsonly @@ -1056,7 +1054,7 @@ Let us get the environment prepared for our testing: Next we can rebuild Ceres. -:: bash +:: cmake ../. make -j$(nproc) ceres From 283b1749e3f778582188aadc4b2563d6969ee88a Mon Sep 17 00:00:00 2001 From: Stephen Mather Date: Thu, 3 Oct 2024 18:55:06 -0400 Subject: [PATCH 5/6] add ceres change --- source/images/vimdiff_ceres_change.png | Bin 0 -> 57069 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/images/vimdiff_ceres_change.png diff --git a/source/images/vimdiff_ceres_change.png b/source/images/vimdiff_ceres_change.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6742a1156803a5be009ab3fb446b74e825c228 GIT binary patch literal 57069 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 X^lP+RR_q)J9~aNbO2(emeEk0b_`j|> literal 0 HcmV?d00001 From 16caba84c4af359261222dfc96b0adeb7aa89717 Mon Sep 17 00:00:00 2001 From: Stephen Mather <1174901+smathermather@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:57:28 -0400 Subject: [PATCH 6/6] Add images --- source/tutorials.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/tutorials.rst b/source/tutorials.rst index c1035f5e2f..5cd0aedbc9 100644 --- a/source/tutorials.rst +++ b/source/tutorials.rst @@ -1019,6 +1019,8 @@ Modify code For our test today, we will attempt to upgrade Ceres Solver to version 2.2.0. Most external libraries like Ceres can be found in the Superbuild directory. In this case we edit SuperBuild/cmake/External-Ceres.cmake, and set it to use version 2.2.0 +.. figure:: images/vimdiff_ceres_change.png + Now that we've made that small, but substantive change, we need to rebuild Ceres on the docker image for testing.