NeoGeographyToolkit / StereoPipeline

The NASA Ames Stereo Pipeline is a suite of automated geodesy & stereogrammetry tools designed for processing planetary imagery captured from orbiting and landed robotic explorers on other planets.
Apache License 2.0
478 stars 168 forks source link

get single model state camera from bundle_adjust #436

Closed steo85it closed 3 weeks ago

steo85it commented 3 weeks ago

Describe the bug By going through the ASP manual I would assume that the standard way to produce model state cameras is to pass an ISIS+ISD/CSM cameras through bundle_adjust with --max-iter=0. However, that crashes unless I provide multiple overlapping images, where bundle_adjust can find matches, etc... (or by directly passing GCP points). Is that the intended behavior? It makes sense for bundle_adjust to expect multiple images, of course, but not for this specific use? Is there a more "direct" way to produce model state cameras (cam_gen only seems to produce cameras in the ISD format, unless I missed something). Thanks!

To Reproduce Steps to reproduce the behavior:

bundle_adjust M129050120LE.cub M129050120LE.json -o run/run 

output >>

    --> Setting number of processing threads to: 4
Found 0 GCP files on the command line.
Using session: csm
Loading camera model: M129050120LE.cub M129050120LE.json
Using plugin: UsgsAstroPluginCSM with model name USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL
Will use the datum:
Geodetic Datum --> Name: D_MOON  Spheroid: MOON  Semi-major axis: 1737400  Semi-minor axis: 1737400  Meridian: Reference Meridian at 0  Proj4 Str: +a=1737400 +b=1737400

Creating output directory: "run".
Writing log info to: run/run-log-bundle_adjust-06-04-1325-370266.txt
Using session: csm
Loading camera model: M129050120LE.cub M129050120LE.json
Using plugin: UsgsAstroPluginCSM with model name USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL
Computing statistics for M129050120LE.cub
Using downsample scale: 12
        Writing stats file: run/run-M129050120LE-stats.tif
        M129050120LE.cub: [ lo: -0.00267345 hi: 0.165105 mean: 0.00902649 std_dev: 0.0255008 ]
Loaded 0 matches.
Failed to build a control network.
 - Consider removing all .vwip and .match files and 
   increasing the number of interest points per tile using
    --ip-per-tile, or decreasing --min-matches.
 - Check if your images are similar enough in illumination,
   and if they have enough overlap.
Will continue if ground control points are present.
Loading GCP files...
No points to optimize (GCP or otherwise). Cannot continue.

Expected behavior I would expect (maybe wrongly) the previous command to generate the (unchanged) model state camera equivalent to the input ISD version.

Your Environment (please complete the following information):

NASA Ames Stereo Pipeline 3.3.0
  Build ID: 31e45032
  Build date: 2023-08-21

Built against:
  NASA Vision Workbench 3.3.0
    Build ID: 4ce867e5
  USGS ISIS 8.0.0
  Boost C++ Libraries 1.72.0
  GDAL 3.5.3 | 20221027
jlaura commented 3 weeks ago

One method to get the sensor state would be to use the python API directly. Something like the following using knoten:

import knoten
sensor = create_csm('path_to_my_isd')

# stringified JSON, write / load as desired
state_str = sensor.getModelState()
oleg-alexandrov commented 3 weeks ago

The section that you reference discusses the fact that bundle_adjust can produce model state files as result of optimization of cameras. So, producing state files alone is not its goal. It does refuse to run if not given what it needs to optimize the cameras.

Further down the doc says "The usgscsm_cam_test program can convert any CSM camera to model state.".

That little tool is likely the easiest thing to use, especially that it is shipped with usgscsm and with ASP.

The "cam_gen" tool also produces model state files, and that section does say that.

steo85it commented 3 weeks ago

Thanks for both replies! You are right, gen_csm offers an easy solution for that conversion, I missed it.

This would already close the issue, however ... does the cam_test tool shipped with ASP have the same functionalities as the usgscsm_cam_test? It does not seem to accept the same arguments. Also, I tried to install the latter for a while without success: I get stuck with some linking to ALE (?) when following the instructions.

@:~/code/usgscsm$ conda activate usgscsm
(usgscsm) @:~/code/usgscsm$ mkdir build
(usgscsm) @:~/code/usgscsm$ cd build/
(usgscsm) @:~/code/usgscsm/build$ cmake -DUSGSCSM_EXTERNAL_DEPS=ON -DUSGSCSM_BUILD_DOCS=OFF -DUSGSCSM_BUILD_TESTS=OFF .. && cmake --build .
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMake Module Path: usgscsm/cmake
-- Setting build type to 'Release' as none was specified.
-- Using external dependencies
-- Found external CSM Library: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/lib/libcsmapi.so
-- Found external CSM Include Directory: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/include/csm
-- Found nlohmann_json: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.11.3")
-- Found ale: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/lib/cmake/ale/ale-config.cmake
-- Found SQLite3: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/include (found version "3.41.2")
-- Found TIFF: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/lib/libtiff.so (found version "4.6.0")
-- Found CURL: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/lib/libcurl.so (found version "8.5.0")
-- Skipping Docs
-- Configuring done (0.3s)
-- Generating done (0.0s)
-- Build files have been written to: usgscsm/build
[  7%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroPlugin.cpp.o
[ 15%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroPluginSupport.cpp.o
[ 23%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroFrameSensorModel.cpp.o
[ 30%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroPushFrameSensorModel.cpp.o
[ 38%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroLsSensorModel.cpp.o
[ 46%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroProjectedSensorModel.cpp.o
[ 53%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroSarSensorModel.cpp.o
[ 61%] Building CXX object CMakeFiles/usgscsm.dir/src/Distortion.cpp.o
[ 69%] Building CXX object CMakeFiles/usgscsm.dir/src/Utilities.cpp.o
[ 76%] Building CXX object CMakeFiles/usgscsm.dir/src/EigenUtilities.cpp.o
[ 84%] Linking CXX shared library libusgscsm.so
[ 84%] Built target usgscsm
[ 92%] Building CXX object CMakeFiles/usgscsm_cam_test.dir/bin/usgscsm_cam_test.cc.o
[100%] Linking CXX executable usgscsm_cam_test
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getSemiMajorRadius(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getBodyRotation(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDistortionCoeffs(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDetectorCenterSample(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getMaxHeight(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getGeoTransform(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getTotalSamples(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getFocal2PixelLines(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getFocalLength(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getLineScanRate(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getTotalLines(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDetectorCenterLine(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getLineSumming(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getInstrumentPosition(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDetectorStartingLine(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getSensorName(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getImageId(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getSemiMinorRadius(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getFocalLengthUncertainty(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getInstrumentPointing(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDetectorStartingSample(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getSunPosition(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getPlatformName(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDistortionModel(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getSensorModelName(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getStartingTime(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getSampleSumming(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getCenterTime(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getFocal2PixelSamples(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getProjection(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
/usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getMinHeight(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)'
collect2: error: ld returned 1 exit status
gmake[2]: *** [CMakeFiles/usgscsm_cam_test.dir/build.make:101: usgscsm_cam_test] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:111: CMakeFiles/usgscsm_cam_test.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2

I also tried without using conda and simply relying on the cloned (--recursive) repo, but that gives another set of ALE-related errors. On a side note, shouldn't usgscsm/.gitmodules rather read

[submodule "ale"]
    path = ale
    url = https://github.com/DOI-USGS/ale.git

? The current version fails cloning for me.

oleg-alexandrov commented 3 weeks ago

This would already close the issue, however ... does the cam_test tool shipped with ASP have the same functionalities as the usgscsm_cam_test? It does not seem to accept the same arguments. Also, I tried to install the latter for a while without success: I get stuck with some linking to ALE (?) when following the instructions.

These are tools that are related a bit but each does its own thing.

ASP ships both of these, as part of the conda package and in the tarball. There should be no need to build anything.

You are having a json linking problem. I can't see any easy fix. Try to get the latest asp tarball and can use the tool from there.

@:~/code/usgscsm$ conda activate usgscsm

(usgscsm) @:~/code/usgscsm$ mkdir build (usgscsm) @:~/code/usgscsm$ cd build/ (usgscsm) @:~/code/usgscsm/build$ cmake -DUSGSCSM_EXTERNAL_DEPS=ON -DUSGSCSM_BUILD_DOCS=OFF -DUSGSCSM_BUILD_TESTS=OFF .. && cmake --build . -- The C compiler identification is GNU 11.4.0 -- The CXX compiler identification is GNU 11.4.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- CMake Module Path: usgscsm/cmake -- Setting build type to 'Release' as none was specified. -- Using external dependencies -- Found external CSM Library: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/lib/libcsmapi.so -- Found external CSM Include Directory: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/include/csm -- Found nlohmann_json: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.11.3") -- Found ale: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/lib/cmake/ale/ale-config.cmake -- Found SQLite3: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/include (found version "3.41.2") -- Found TIFF: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/envs/usgscsm/lib/libtiff.so (found version "4.6.0") -- Found CURL: miniconda3-24.3.0-ynid3mehhgxzwhiqvdroz7r4mn26rwky/lib/libcurl.so (found version "8.5.0") -- Skipping Docs -- Configuring done (0.3s) -- Generating done (0.0s) -- Build files have been written to: usgscsm/build [ 7%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroPlugin.cpp.o [ 15%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroPluginSupport.cpp.o [ 23%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroFrameSensorModel.cpp.o [ 30%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroPushFrameSensorModel.cpp.o [ 38%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroLsSensorModel.cpp.o [ 46%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroProjectedSensorModel.cpp.o [ 53%] Building CXX object CMakeFiles/usgscsm.dir/src/UsgsAstroSarSensorModel.cpp.o [ 61%] Building CXX object CMakeFiles/usgscsm.dir/src/Distortion.cpp.o [ 69%] Building CXX object CMakeFiles/usgscsm.dir/src/Utilities.cpp.o [ 76%] Building CXX object CMakeFiles/usgscsm.dir/src/EigenUtilities.cpp.o [ 84%] Linking CXX shared library libusgscsm.so [ 84%] Built target usgscsm [ 92%] Building CXX object CMakeFiles/usgscsm_cam_test.dir/bin/usgscsm_cam_test.cc.o [100%] Linking CXX executable usgscsm_cam_test /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getSemiMajorRadius(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getBodyRotation(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDistortionCoeffs(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getDetectorCenterSample(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getMaxHeight(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getGeoTransform(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getTotalSamples(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getFocal2PixelLines(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getFocalLength(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getLineScanRate(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getTotalLines(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDetectorCenterLine(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getLineSumming(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getInstrumentPosition(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDetectorStartingLine(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getSensorName(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getImageId(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getSemiMinorRadius(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getFocalLengthUncertainty(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getInstrumentPointing(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDetectorStartingSample(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getSunPosition(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getPlatformName(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getDistortionModel(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getSensorModelName(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getStartingTime(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getSampleSumming(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to ale::getCenterTime(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference toale::getFocal2PixelSamples(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getProjection(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' /usr/bin/ld: libusgscsm.so.2.0.1: undefined reference to `ale::getMinHeight(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits, std::allocator >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator >, void>)' collect2: error: ld returned 1 exit status gmake[2]: [CMakeFiles/usgscsm_cam_test.dir/build.make:101: usgscsm_cam_test] Error 1 gmake[1]: [CMakeFiles/Makefile2:111: CMakeFiles/usgscsm_cam_test.dir/all] Error 2 gmake: *** [Makefile:136: all] Error 2

I also tried without using conda and simply relying on the cloned (--recursive) repo, but that gives another set of ALE-related errors. On a side note, shouldn't usgscsm/.gitmodules rather read

[submodule "ale"] path = ale url = https://github.com/DOI-USGS/ale.git

? The current version fails cloning for me.

— Reply to this email directly, view it on GitHub https://github.com/NeoGeographyToolkit/StereoPipeline/issues/436#issuecomment-2148916677, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKDU3CGMFCSJ37ZE47R2NLZF2SAFAVCNFSM6AAAAABIY7EOKSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNBYHEYTMNRXG4 . You are receiving this because you commented.Message ID: @.***>

steo85it commented 3 weeks ago

Again my bad, I did not see the usgs_cam_test among the "tools" in the latest version of the ASP manual and I did not try to simply call it from the latest version of the software. I got it now, thanks for pointing that out!

oleg-alexandrov commented 3 weeks ago

I added mention that the usgscsm_cam_test tool is shipped with ASP, and also tweaked its manual page a bit in the usgs repo.

On Tue, Jun 4, 2024 at 11:14 PM Stefano Bertone @.***> wrote:

Again my bad, I did not see the usgs_cam_test among the "tools" in the latest version of the ASP manual https://stereopipeline.readthedocs.io/en/latest/tools.html and I did not try to simply call it from the latest version of the software. Thanks for pointing that out!

— Reply to this email directly, view it on GitHub https://github.com/NeoGeographyToolkit/StereoPipeline/issues/436#issuecomment-2148963292, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKDU3CEZ67MMXP4O3SY24LZF2UEPAVCNFSM6AAAAABIY7EOKSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNBYHE3DGMRZGI . You are receiving this because you commented.Message ID: @.***>