(ultimate end goal: create a website where the public can view historical aerial imagery layers; these aerial imagery layers would be stitched together and georeferenced by odm.
I am using the ODM docker image on a digitalocean ubuntu 16.04 droplet.
following the instructions in the readme to run ODM.
Here’s what I’ve done so far:
Setup, ubuntu 16.04 digitalocean instance;
secured it;
converted my source images from TIFs to JPEGs;
created a gcp_list.txt with Ground Control Points Interface | WebODM ⚡
Initially, I was receiving notices that my gcp file was not being found; so I did some troubleshooting with this by doing doing:
removed tiff in file names;
removed hyphens from file names (Hyphens in filenames break opensfm · Issue #648 · OpenDroneMap/WebODM · GitHub)
renamed my gcp file to gcp_list.txt ;
had 2 copies of my gcp_list.txt file; one in my home directory (where I would run the docker command for odm); and in my images directory;
I had also tried:
docker run -it --rm
-v “$(pwd)/images:/code/images”
-v “$(pwd)/odm_orthophoto:/code/odm_orthophoto”
-v “$(pwd)/settings.yaml:/code/settings.yaml”
-v “$(pwd)/odm_texturing:/code/odm_texturing”
opendronemap/odm --rerun-all --gcp gcp_list.txt
which quickly gave me an error;
AttributeError: ‘NoneType’ object has no attribute ‘gcp_path’
Meanwhile, I also did a couple things to ensure that I was on the right track:
(edited the project_path in settings.yaml to be “/” as indicated in https://github.com/OpenDroneMap/ODM/blob/d80d0b2992c96d4a336319f46e76b844dfa33e84/docker.settings.yaml
adjusted other settings.yaml for creating high quality orthophotos;
per https://docs.opendronemap.org/using.html#creating-high-quality-orthophotos
Finally, I was able to get my gcp_list.txt identified and found;
by using the following command below:
I run this command from my home directory in my digitalocean instance:
I explicitly included the gcp_list as a parameter for docker instead of odm as follows:
docker run -it --rm \
-v "$(pwd)/images:/code/images" \
-v "$(pwd)/odm_orthophoto:/code/odm_orthophoto" \
-v "$(pwd)/settings.yaml:/code/settings.yaml" \
-v "$(pwd)/odm_texturing:/code/odm_texturing" \
-v "$(pwd)/gcp_list.txt:/code/gcp_list.txt" \
opendronemap/odm
my GCP file is recognized: The output is, which gets me quite far,
The primary error that I receive is at the end of that file, accompanies https://community.opendronemap.org/t/unable-to-convert-scaled-value-1e-32-to-int32-pdal-with-grayscale-colorspace-images/2665 · GitHub which states:
“PDAL: writers.las: Unable to convert scaled value (1e+32) to int32 for dimension ‘X’ when writing LAS/LAZ file /code/odm_georeferencing/odm_georeferenced_model.decimated.las.”
This error message is very similar to PDAL: writers.las: Unable to convert scaled value (1.564621925e+25) to int32 for dimension 'Z' · Issue #798 · OpenDroneMap/ODM · GitHub, but not exactly the same as #798;
; in mine, the dimension is X; and in #798, the dimension is Z.
my source images are at:
https://f002.backblazeb2.com/file/publique/2019-webodm-debugging/15104.jpeg
(replace 15104 with the following integers: 15104 to 15107 and 14124 to 14127)
In addition to solving the error message above, I’m also asking about the following:
-
considering these images aren’t georeferenced AND I can’t create frame centers
(from my limited knowledge as I understand, frame centers are only applicable if all of the images have exactly the same dimensions, and each are slightly different and are the center points of images that are made from drones), are there enough center points (Ground Control Points Interface | WebODM ⚡) and is that best way to reach my goal, (of being able to stitch all of these images together and then host them online) (The entire image set is about 700, but I started out with only 6 here to see if I could get a proof of concept working). -
Is the following something to be worried about; they appear in my logs when I run the docker command:
rm: cannot remove ‘/code/odm_orthophoto’: Device or resource busy
rm: cannot remove ‘/code/odm_texturing’: Device or resource busy
(I’ve deleted those odm folders that are created each time i run the container to be safe and I’ve noticed that odm_orthophoto and odm_texturing folder are owned by root)
- Is my GCP file correct? It’s at accompanies https://community.opendronemap.org/t/unable-to-convert-scaled-value-1e-32-to-int32-pdal-with-grayscale-colorspace-images/2665 · GitHub
Thanks for any assistance.