Project: WebODM (works) vs NodeODM (error)

Good day everybody,

I had a question about a project I’m currently processing. For this I’m using a 32GB Linux VPS, running WebODM (machine A). For large(r) projects, let’s say more than 400 images, I configure another (temporary) VPS (machine B), install NodeODM on it and add this node into WebODM on the 32GB machine. When the project is finished I suspend the temp machine B.

Usually this works (very) good. For a current project, 1595 M3E 20MP images, I configured a larger VPS (machine B) and added this as an extra node into Machine A. Very soon after the processing starts I see an error:

`[INFO] Loading 1594 images
File “/code/run.py”, line 65, in
retcode = app.execute()
^^^^^^^^^^^^^
File “/code/stages/odm_app.py”, line 118, in execute
raise e
File “/code/stages/odm_app.py”, line 82, in execute
self.first_stage.run()
File “/code/opendm/types.py”, line 449, in run
self.process(self.args, outputs)
File “/code/stages/dataset.py”, line 171, in process
p = types.ODM_Photo(f)
^^^^^^^^^^^^^^^^^^
File “/code/opendm/photo.py”, line 178, in init
self.parse_exif_values(path_file)
File “/code/opendm/photo.py”, line 215, in parse_exif_values
tags = exifread.process_file(f, details=True, extract_thumbnail=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/code/venv/lib/python3.12/site-packages/exifread/init.py”, line 121, in process_file
hdr.decode_maker_note()
File “/code/venv/lib/python3.12/site-packages/exifread/core/exif_header.py”, line 612, in decode_maker_note
self.dump_ifd(ifd=0, ifd_name=“MakerNote”, tag_dict=dji.TAGS)
File “/code/venv/lib/python3.12/site-packages/exifread/core/exif_header.py”, line 391, in dump_ifd
self._process_tag(
File “/code/venv/lib/python3.12/site-packages/exifread/core/exif_header.py”, line 342, in _process_tag
printable, prefer_printable = self._get_printable_for_field(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/code/venv/lib/python3.12/site-packages/exifread/core/exif_header.py”, line 241, in _get_printable_for_field
printable = str(values[0])

IndexError: list index out of range`

I made the assumption it might be caused by (some) wrong information in the EXIF headers of one or more picturs, therefore I made a small selection of images, only 138 images.

I processed this smaller subset

  • Machine A –> local node (node-odm-1)
  • Machine A –> Node machine B (256GB RAM)

The strange thing is… the smaller dataset is processed correctly on the 32GB machine, but gets an error on the 256GB machine.
Both working on the same dataset, preset and image count.

Machine A –> WebODM 2.8.4
NodeODM Machine B –> latest

The error code on the smaller subset then reads:

`===== Dumping Info for Geeks (developers need this to fix bugs) =====
Child returned 1
Traceback (most recent call last):
File “/code/stages/odm_app.py”, line 82, in execute
self.first_stage.run()
File “/code/opendm/types.py”, line 470, in run
self.next_stage.run(outputs)
File “/code/opendm/types.py”, line 470, in run
self.next_stage.run(outputs)
File “/code/opendm/types.py”, line 470, in run
self.next_stage.run(outputs)
[Previous line repeated 8 more times]
File “/code/opendm/types.py”, line 449, in run
self.process(self.args, outputs)
File “/code/stages/odm_report.py”, line 214, in process
system.run(“gdal_translate -outsize {} 0 -of png \”{}\" \“{}\” --config GDAL_CACHEMAX {}%".format(image_target_size, colored_hillshade_dem, osfm_dem, get_max_memory()))
File “/code/opendm/system.py”, line 112, in run
raise SubprocessException(“Child returned {}”.format(retcode), retcode)
opendm.system.SubprocessException: Child returned 1

===== Done, human-readable information to follow… =====

[ERROR] Uh oh! Processing stopped because of strange values in the reconstruction. This is often a sign that the input data has some issues or the software cannot deal with it. Have you followed best practices for data acquisition? See ` https://docs.opendronemap.org/flying/`
100 - done.`

Does anybody have an idea what might cause this? Thanks a lot!

I’m going to guess due to changes introduced by Merge branch `24.04` --> `master` (#1904) by spwoodcock · Pull Request #1942 · OpenDroneMap/ODM · GitHub

I’ve pinned/reverted the default NodeODM version to a pre-24.04 update for WebODM, so if you update it should work. The NodeODM image is opendronemap/nodeodm:stable.

Thanks. Yes: until we have a maintainer, best to pin. As indicated on the issue, we have someone who may be able to step in, but I’ll wait on the logistics for that to play out before we announce.