From 42671fd71027ba55c641c086dbd615b874bddab2 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Thu, 1 Feb 2024 22:34:28 -0500 Subject: [PATCH 01/17] initial attempts at building a wheel --- .github/workflows/wheels.yml | 86 ++++++++++++++++++++++ .gitignore | 3 +- CMakeLists.txt | 12 ++-- README.md | 8 +++ calico/python/__init__.py | 2 - calico/python/calico.cpp | 2 +- pyproject.toml | 19 +++++ scripts/install-ceres.sh | 22 ++++++ setup.py | 133 +++++++++++++++++++++++++++++++++++ 9 files changed, 277 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/wheels.yml delete mode 100644 calico/python/__init__.py create mode 100644 pyproject.toml create mode 100755 scripts/install-ceres.sh create mode 100644 setup.py diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml new file mode 100644 index 0000000..f95bd94 --- /dev/null +++ b/.github/workflows/wheels.yml @@ -0,0 +1,86 @@ +name: Wheels + +on: + workflow_dispatch: + pull_request: + push: + branches: + - master + release: + types: + - published + +jobs: + build_sdist: + name: Build SDist + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Build SDist + run: pipx run build --sdist + + - name: Check metadata + run: pipx run twine check dist/* + + - uses: actions/upload-artifact@v3 + with: + path: dist/*.tar.gz + + + build_wheels: + name: Wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Dependencies + run: sudo apt install libeigen3-dev libgtest-dev \ + libabsl-dev libceres-dev python3-pybind11 \ + libopencv-dev libyaml-cpp-dev libgmock-dev + + - name: Ceres + run: ./scripts/install_ceres.sh + + - uses: pypa/cibuildwheel@v2.16 + env: + CIBW_ARCHS_MACOS: auto universal2 + + - name: Verify clean directory + run: git diff --exit-code + shell: bash + + - name: Upload wheels + uses: actions/upload-artifact@v3 + with: + path: wheelhouse/*.whl + + + upload_all: + name: Upload if release + needs: [build_wheels, build_sdist] + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' + + steps: + - uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - uses: actions/download-artifact@v3 + with: + name: artifact + path: dist + + - uses: pypa/gh-action-pypi-publish@release/v1 + with: + password: ${{ secrets.pypi_password }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index f04ae7d..6a9f423 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ build __pycache__ Testing .ipynb_checkpoints -doc \ No newline at end of file +doc +calico.egg-info \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index d1123c8..f2ed276 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,7 +85,7 @@ target_link_libraries( trajectory world_model ) - + # Accelerometer library and tests. add_library( accelerometer_models @@ -207,11 +207,11 @@ target_link_libraries( # Python bindings. pybind11_add_module( - _calico + calico ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/calico.cpp ) target_link_libraries( - _calico PUBLIC + calico PUBLIC accelerometer aprilgrid_detector batch_optimizer @@ -222,12 +222,12 @@ target_link_libraries( Eigen3::Eigen ) set_target_properties( - _calico PROPERTIES + calico PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/calico ) file( COPY - ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/__init__.py + #${CMAKE_CURRENT_SOURCE_DIR}/calico/python/__init__.py ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/utils.py DESTINATION ${PROJECT_BINARY_DIR}/calico ) @@ -294,7 +294,7 @@ install( ) # Install python library. install( - TARGETS _calico + TARGETS calico DESTINATION ${Python_SITELIB}/calico ) install( diff --git a/README.md b/README.md index d97c69d..3882ab8 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,14 @@ Calico features: Check out our [wiki pages](https://github.com/yangjames/Calico/wiki) for more info. +# Dependencies + +``` +sudo apt install libeigen3-dev libgtest-dev libabsl-dev libceres-dev \ + python3-pybind11 libopencv-dev libyaml-cpp-dev libgmock-dev +./scripts/install-ceres.sh +``` + # License Poor sensor calibration is a problem endemic to robotics, yet it's typically not given enough attention because it tends to detract from higher level project goals. The purpose of this library is to help roboticists quickly resolve their calibration issues so that they can move on to more interesting things. This library is hereby granted the MIT license, to be used free of charge by anyone within academia or industry. diff --git a/calico/python/__init__.py b/calico/python/__init__.py deleted file mode 100644 index 783a420..0000000 --- a/calico/python/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from ._calico import * -from .utils import * diff --git a/calico/python/calico.cpp b/calico/python/calico.cpp index f9eea07..e67085e 100644 --- a/calico/python/calico.cpp +++ b/calico/python/calico.cpp @@ -15,7 +15,7 @@ #include "pybind11/stl.h" -PYBIND11_MODULE(_calico, m) { +PYBIND11_MODULE(calico, m) { m.doc() = "Calico"; namespace py = pybind11; using namespace calico; diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..c14bb6e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,19 @@ +[project] +name = "calico" +version = "0.0.1" +authors= [ + {name = "James Yang", email = "james.yang92@gmail.com"} +] +requires-python = ">=3.8" +description="Calico calibration library" +dependencies = [ + 'numpy ~= 1.26.0', + 'opencv-python-headless>=4.8.0.74', +] + +[project.optional-dependencies] # Optional +test = ['pytest>=6.0'] + +[build-system] +requires = ["setuptools>=42", "wheel", "pybind11~=2.6.1"] +build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/scripts/install-ceres.sh b/scripts/install-ceres.sh new file mode 100755 index 0000000..1d72a97 --- /dev/null +++ b/scripts/install-ceres.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# CMake +# google-glog + gflags +# Use ATLAS for BLAS & LAPACK +# Eigen3 +# SuiteSparse (optional) +sudo apt-get install -y cmake libgoogle-glog-dev \ + libgflags-dev libatlas-base-dev libeigen3-dev \ + libsuitesparse-dev + +cd /tmp || exit +git clone https://ceres-solver.googlesource.com/ceres-solver +cd ceres-solver || exit + +cmake . +make -j3 +#make test +# Optionally install Ceres, it can also be exported using CMake which +# allows Ceres to be used without requiring installation, see the documentation +# for the EXPORT_BUILD_DIR option for more information. +sudo make install \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..4bc7db8 --- /dev/null +++ b/setup.py @@ -0,0 +1,133 @@ +import os +import re +import subprocess +import sys +from pathlib import Path + +from setuptools import Extension, setup +from setuptools.command.build_ext import build_ext + +# Convert distutils Windows platform specifiers to CMake -A arguments +PLAT_TO_CMAKE = { + "win32": "Win32", + "win-amd64": "x64", + "win-arm32": "ARM", + "win-arm64": "ARM64", +} + + +# A CMakeExtension needs a sourcedir instead of a file list. +# The name must be the _single_ output extension from the CMake build. +# If you need multiple extensions, see scikit-build. +class CMakeExtension(Extension): + def __init__(self, name: str, sourcedir: str = "") -> None: + super().__init__(name, sources=[]) + self.sourcedir = os.fspath(Path(sourcedir).resolve()) + + +class CMakeBuild(build_ext): + def build_extension(self, ext: CMakeExtension) -> None: + # Must be in this form due to bug in .resolve() only fixed in Python 3.10+ + ext_fullpath = Path.cwd() / self.get_ext_fullpath(ext.name) + extdir = ext_fullpath.parent.resolve() + + # Using this requires trailing slash for auto-detection & inclusion of + # auxiliary "native" libs + + debug = int(os.environ.get("DEBUG", 0)) if self.debug is None else self.debug + cfg = "Debug" if debug else "Release" + + # CMake lets you override the generator - we need to check this. + # Can be set with Conda-Build, for example. + cmake_generator = os.environ.get("CMAKE_GENERATOR", "") + + # Set Python_EXECUTABLE instead if you use PYBIND11_FINDPYTHON + cmake_args = [ + f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir}{os.sep}", + f"-DPYTHON_EXECUTABLE={sys.executable}", + f"-DCMAKE_BUILD_TYPE={cfg}", # not used on MSVC, but no harm + ] + build_args = [] + # Adding CMake arguments set as environment variable + # (needed e.g. to build for ARM OSx on conda-forge) + if "CMAKE_ARGS" in os.environ: + cmake_args += [item for item in os.environ["CMAKE_ARGS"].split(" ") if item] + + # CALICO_VERSION_INFO shows you how to pass a value into the C++ code + # from Python. + # In this example, we pass in the version to C++. You might not need to. + cmake_args += [f"-DCALICO_VERSION_INFO={self.distribution.get_version()}"] + + if self.compiler.compiler_type != "msvc": + # Using Ninja-build since it a) is available as a wheel and b) + # multithreads automatically. MSVC would require all variables be + # exported for Ninja to pick it up, which is a little tricky to do. + # Users can override the generator with CMAKE_GENERATOR in CMake + # 3.15+. + if not cmake_generator or cmake_generator == "Ninja": + try: + import ninja + + ninja_executable_path = Path(ninja.BIN_DIR) / "ninja" + cmake_args += [ + "-GNinja", + f"-DCMAKE_MAKE_PROGRAM:FILEPATH={ninja_executable_path}", + ] + except ImportError: + pass + + else: + # Single config generators are handled "normally" + single_config = any(x in cmake_generator for x in {"NMake", "Ninja"}) + + # CMake allows an arch-in-generator style for backward compatibility + contains_arch = any(x in cmake_generator for x in {"ARM", "Win64"}) + + # Specify the arch if using MSVC generator, but only if it doesn't + # contain a backward-compatibility arch spec already in the + # generator name. + if not single_config and not contains_arch: + cmake_args += ["-A", PLAT_TO_CMAKE[self.plat_name]] + + # Multi-config generators have a different way to specify configs + if not single_config: + cmake_args += [ + f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{cfg.upper()}={extdir}" + ] + build_args += ["--config", cfg] + + if sys.platform.startswith("darwin"): + # Cross-compile support for macOS - respect ARCHFLAGS if set + archs = re.findall(r"-arch (\S+)", os.environ.get("ARCHFLAGS", "")) + if archs: + cmake_args += ["-DCMAKE_OSX_ARCHITECTURES={}".format(";".join(archs))] + + # Set CMAKE_BUILD_PARALLEL_LEVEL to control the parallel build level + # across all generators. + if "CMAKE_BUILD_PARALLEL_LEVEL" not in os.environ: + # self.parallel is a Python 3 only way to set parallel jobs by hand + # using -j in the build_ext call, not supported by pip or PyPA-build. + if hasattr(self, "parallel") and self.parallel: + # CMake 3.12+ only. + build_args += [f"-j{self.parallel}"] + + build_temp = Path(self.build_temp) / ext.name + if not build_temp.exists(): + build_temp.mkdir(parents=True) + + print(f"build_temp: {build_temp}") + + subprocess.run( + ["cmake", ext.sourcedir, *cmake_args], cwd=build_temp, check=True + ) + subprocess.run( + ["cmake", "--build", ".", *build_args], cwd=build_temp, check=True + ) + + +setup( + ext_modules=[CMakeExtension("calico")], + cmdclass={"build_ext": CMakeBuild}, + zip_safe=False, + packages=["calico"], +) From ce81befbe994d820dcb5cb4bbe8054ba8826e4cf Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Thu, 1 Feb 2024 22:56:00 -0500 Subject: [PATCH 02/17] reorganized into more distinct monorepos --- .vscode/settings.json | 2 + CMakeLists.txt | 74 +++++----- README.md | 4 +- ...bindings_test.cpython-310-pytest-6.2.5.pyc | Bin 5550 -> 0 bytes pyproject.toml => python/pyproject.toml | 10 +- python/setup.py | 32 +++++ {calico/python => python/src}/calico.cpp | 2 +- .../src}/test/python_bindings_test.py | 0 .../src}/test/python_utils_test.py | 0 {calico/python => python/src}/utils.py | 0 setup.py | 133 ------------------ 11 files changed, 80 insertions(+), 177 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 calico/test/__pycache__/python_bindings_test.cpython-310-pytest-6.2.5.pyc rename pyproject.toml => python/pyproject.toml (66%) create mode 100644 python/setup.py rename {calico/python => python/src}/calico.cpp (99%) rename {calico => python/src}/test/python_bindings_test.py (100%) rename {calico => python/src}/test/python_utils_test.py (100%) rename {calico/python => python/src}/utils.py (100%) delete mode 100644 setup.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index f2ed276..e3d5220 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,8 @@ find_package(Eigen3 3.3 REQUIRED NO_MODULE) find_package(GTest REQUIRED) find_package(absl REQUIRED) find_package(Ceres REQUIRED) -find_package(pybind11 REQUIRED) -find_package(Python REQUIRED) +# find_package(pybind11 REQUIRED) +# find_package(Python REQUIRED) find_package(OpenCV REQUIRED) find_package(yaml-cpp REQUIRED) @@ -206,31 +206,31 @@ target_link_libraries( ) # Python bindings. -pybind11_add_module( - calico - ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/calico.cpp -) -target_link_libraries( - calico PUBLIC - accelerometer - aprilgrid_detector - batch_optimizer - camera - gyroscope - trajectory - world_model - Eigen3::Eigen -) -set_target_properties( - calico PROPERTIES - LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/calico -) -file( - COPY - #${CMAKE_CURRENT_SOURCE_DIR}/calico/python/__init__.py - ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/utils.py - DESTINATION ${PROJECT_BINARY_DIR}/calico -) +# pybind11_add_module( +# calico +# ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/calico.cpp +# ) +# target_link_libraries( +# calico PUBLIC +# accelerometer +# aprilgrid_detector +# batch_optimizer +# camera +# gyroscope +# trajectory +# world_model +# Eigen3::Eigen +# ) +# set_target_properties( +# calico PROPERTIES +# LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/calico +# ) +# file( +# COPY +# #${CMAKE_CURRENT_SOURCE_DIR}/calico/python/__init__.py +# ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/utils.py +# DESTINATION ${PROJECT_BINARY_DIR}/calico +# ) # Install cpp library. install( @@ -293,16 +293,16 @@ install( DESTINATION include/calico/sensors/ ) # Install python library. -install( - TARGETS calico - DESTINATION ${Python_SITELIB}/calico -) -install( - FILES - ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/utils.py - ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/__init__.py - DESTINATION ${Python_SITELIB}/calico -) +# install( +# TARGETS calico +# DESTINATION ${Python_SITELIB}/calico +# ) +# install( +# FILES +# ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/utils.py +# ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/__init__.py +# DESTINATION ${Python_SITELIB}/calico +# ) if (BUILD_TESTING) # Typedefs test. diff --git a/README.md b/README.md index 3882ab8..a452be8 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ Check out our [wiki pages](https://github.com/yangjames/Calico/wiki) for more in # Dependencies ``` -sudo apt install libeigen3-dev libgtest-dev libabsl-dev libceres-dev \ - python3-pybind11 libopencv-dev libyaml-cpp-dev libgmock-dev +sudo apt install libeigen3-dev libgtest-dev libabsl-dev \ + libopencv-dev libyaml-cpp-dev libgmock-dev python3-pybind11 ./scripts/install-ceres.sh ``` diff --git a/calico/test/__pycache__/python_bindings_test.cpython-310-pytest-6.2.5.pyc b/calico/test/__pycache__/python_bindings_test.cpython-310-pytest-6.2.5.pyc deleted file mode 100644 index 1243d6d34230a354c040b8f87ea4e9658959b3a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5550 zcmd^DON<;x8SeLV_sl-M-d(><5}XVHZ@`3Su-7jfqINLbN*n-R5R$cge|69F^s=@kP)_t{zN-4` z+4aA>Gcn;RcwT>SguVH3Mfo!|#vcQXW&A@1UHRFfX7V#%ID z#g?U0ab)RM+)E16nEtN9bl+(d@9341Kf#Qf8h^oe`jZ2!!_-yzFPq!gNm;28jz1b2 z%lL<{0DO6hipEr?y{lAorZWSj!AxeMG+BY!C@tnN7iEDJSqY`hCfFoOhfT3*lrEcD zRm!tsam^2-^VMch>s;N4Zgkq`f;J1<^{}R5v*AN`Vc~xs|L_}tI!=5~?Wrg=lvQ-2E!Kc~WHija73&QxGWvyB9jHtn=&B;=Hs}}ux;9V;8r>t#W2|f$^;17S zHu2Nn{^frCgI~Pk{`L1C+^_%S`}e1={pNS~>qme6_saWE|LM$@UdJKu{PRrxx_q?d z`YHJwTK@3mpa1H;fBa$dblDMBO}?72u69EI6caY@MAazhv_&!E)ppoS8d|$63K4Ds zZ!V^)Vd(S7t2UdpCZ-9q%6WA|lv28XYrWbm8^Q?v=5-|qUg$Y&mw9&2?wp>QI< z)%8&Gw-mk)$Nksx(v42bUuslaezJI7_gKac8LzM)Ro-uuBGhoh2tMs$*TT~CKo6oFa%w9}AIW{@R;1U)w@h1j9*aYiShN=wAjnzI_ zI#5+5R{A=atM-k7LQIR4hS{*dc7+(+2U7=X-$CDSECizOCS#daS9?Y}vKSlL$f(qq z=ugH5#!d~_?N39TOo*3$PmN7)1~o(0W-)4CY|0(f{v1YGa{m6DmGE@ZpQccRlTjP_o{sx~XccH@9|Ff9+Ia}URMHn*}2ba5^Omu!XQ3vlLm5~fb@?O ze?I)~-20dQxcS2~oI1CuvwWPBYKn=owVL1bIpizyxhSmq(F(*&6ce$%NKz{bms0BC z+~}{hBObKFpcY>4Fuy4lZsxjIA(;M^c5_3x$zp4K-4`}?NQP^jo5IG*NoxZ1Y(Y*| zmKO;~QpE(ujrA6&!zLhM7Bu(b+rz`i!C8}&lnNI^Ua3ZYyN2Unv0;5NcjU`{HC*RD zsh7|KCd@FZwz|R&p}m;ui^;Q$jSn(m4(h(Js@<;NW@0Me9hOUcN*=J9yJcuNw6RV1 z?8<6O-rtn02cugR3Bk|aY^GX^zz}bYRFacmk>sltTVrof8f%0?4a8L2zwM0?rFBVQ zj*dAi*UH_);aO?;Z*83H(Xg`XhEiz9!QXn7&z&k?OmKmx}OV=aMDPN^ zrwKkoa0)OK9;ZHfyBDeNa|E9!_yWNf3BE+|WrCLozCv)Cfc(c8hbJY6M+cHKmN8`W z*~fEcG~eB|BnZ7#yr5VKJEeDdz1$#yDNMVtlYBs0TkO5|M5dqBR{ZB zeqftS{x-?&wlto3FToF@LwX1~O|CN3FzY;w6|e4Aul)&mw{F=tufQChf9u7MMxkbs zUH8-`VF#^h-S-0aIF&+xCtv4()~6({O3uS@ec@iF(*AEu%LS2GjyF^{$54j3P3`V-%nD%_Q=Yp|rNLrPVQ2K56A|XUbL*EVygD+CbRa;Twtd zBYP=qI6aCiLuoY2dgAh2M9S${VNx&~?zTmVcgvRi9u^BpLTxw}IE&{VZ<4Z!xmzH? zrbW)vYWD!JAV@kAI|4*x$c(#sPi1CLV~9fWH`1FjBSfipC~~BD)%1*52bzd6P0vE4 zsP_v41u@(78(I%>VPrR)zKi6=I-pQ5l@v4HD&u~Ov_iw6wrpXghB<0s#fBy0ON!kJ zE4Vcow~YV<(&7w2c$o+z7*3JHB$aAw@EY{`!g)2Q2kcyjZ3u$}wMb0MAj4z+^`IS4 zG9z7(n7`fOO(xR~F9^L_r;V5g;m_gS!*ji6fFvc{?G{NK%67v4gPiuihW)+WD~VFp zhal^C)_TNQPGlo?ua!HMGa4uCWFWm1F(E~k2nMy}X6=WTnPi+#((i1U+|^OQPaaI__wliq1J^(~rjG0q zpAcZzti-OR^a4}s_?R%H;=*m@Tx1E6rOH`O!_E3r`hU(UViskt_*fxlA!E#DC00h} ztJGhR`D%I&?1&FHJyXs#`%`EmTTPJZcgYfGBWEzuLf)ZinGI#P%X)+sfN5+ z(&p04w$R@nTPbZGGx1qTejZ7z$R*qw|2m+&AZ3CdCIaz133-oG?PCNo_&q_jvjpb| z=)U<1!4-n51oTaZzeYeD;SGS8JXeisH?DM}pcQN)qjVrntA0D|aO9edWma1@GbRgr zIH&AL3&KB3YhEN+rG@8Z=$bfgFH4g6>olTCBb?4?*Fw17YE|K;c1h?yxk&zqzr@^- z45$r_Hb~od49$2rZ|v2chUSw$rvzu3Mp9cJra_bnmDJ5oKHhWXw_hn2h3&~~(DQ`r zk-1!N`ly#YkJ4|-6Frabr}sQV@Kpk`8oWXf5VQ#1BFNrY)=2%h1|SxNl+M|BQQNW0 z@@LuyOOvvn4$-OxZOR(B=>J~cmv^# zNTM*LxtJ_(9N)sES2Ek{t?q{O8^T_PAEI7iAa&aic5-X@iblufw*kVS6Ycd%!hR{a Zr_=6.0'] [build-system] -requires = ["setuptools>=42", "wheel", "pybind11~=2.6.1"] -build-backend = "setuptools.build_meta" \ No newline at end of file +requires = ["setuptools>=42", "wheel", "pybind11>=2.10.0"] +build-backend = "setuptools.build_meta" + +[tool.ruff] +target-version = "py39" \ No newline at end of file diff --git a/python/setup.py b/python/setup.py new file mode 100644 index 0000000..5cf840e --- /dev/null +++ b/python/setup.py @@ -0,0 +1,32 @@ +# Available at setup time due to pyproject.toml +from pybind11.setup_helpers import Pybind11Extension, build_ext +from setuptools import setup + +__version__ = "0.0.1" + +# The main interface is through Pybind11Extension. +# * You can add cxx_std=11/14/17, and then build_ext can be removed. +# * You can set include_pybind11=false to add the include directory yourself, +# say from a submodule. +# +# Note: +# Sort input source files if you glob sources to ensure bit-for-bit +# reproducible builds (https://github.com/pybind/python_example/pull/53) + +ext_modules = [ + Pybind11Extension( + "calico", + ["src/main.cpp"], + # Example: passing in the version to the compiled code + define_macros=[("VERSION_INFO", __version__)], + ), +] + +setup( + version=__version__, + ext_modules=ext_modules, + # Currently, build_ext only provides an optional "highest supported C++ + # level" feature, but in the future it may provide more features. + cmdclass={"build_ext": build_ext}, + zip_safe=False, +) diff --git a/calico/python/calico.cpp b/python/src/calico.cpp similarity index 99% rename from calico/python/calico.cpp rename to python/src/calico.cpp index e67085e..8b2d59e 100644 --- a/calico/python/calico.cpp +++ b/python/src/calico.cpp @@ -16,7 +16,7 @@ PYBIND11_MODULE(calico, m) { - m.doc() = "Calico"; + m.doc() = "calico"; namespace py = pybind11; using namespace calico; using namespace calico::chart_detectors; diff --git a/calico/test/python_bindings_test.py b/python/src/test/python_bindings_test.py similarity index 100% rename from calico/test/python_bindings_test.py rename to python/src/test/python_bindings_test.py diff --git a/calico/test/python_utils_test.py b/python/src/test/python_utils_test.py similarity index 100% rename from calico/test/python_utils_test.py rename to python/src/test/python_utils_test.py diff --git a/calico/python/utils.py b/python/src/utils.py similarity index 100% rename from calico/python/utils.py rename to python/src/utils.py diff --git a/setup.py b/setup.py deleted file mode 100644 index 4bc7db8..0000000 --- a/setup.py +++ /dev/null @@ -1,133 +0,0 @@ -import os -import re -import subprocess -import sys -from pathlib import Path - -from setuptools import Extension, setup -from setuptools.command.build_ext import build_ext - -# Convert distutils Windows platform specifiers to CMake -A arguments -PLAT_TO_CMAKE = { - "win32": "Win32", - "win-amd64": "x64", - "win-arm32": "ARM", - "win-arm64": "ARM64", -} - - -# A CMakeExtension needs a sourcedir instead of a file list. -# The name must be the _single_ output extension from the CMake build. -# If you need multiple extensions, see scikit-build. -class CMakeExtension(Extension): - def __init__(self, name: str, sourcedir: str = "") -> None: - super().__init__(name, sources=[]) - self.sourcedir = os.fspath(Path(sourcedir).resolve()) - - -class CMakeBuild(build_ext): - def build_extension(self, ext: CMakeExtension) -> None: - # Must be in this form due to bug in .resolve() only fixed in Python 3.10+ - ext_fullpath = Path.cwd() / self.get_ext_fullpath(ext.name) - extdir = ext_fullpath.parent.resolve() - - # Using this requires trailing slash for auto-detection & inclusion of - # auxiliary "native" libs - - debug = int(os.environ.get("DEBUG", 0)) if self.debug is None else self.debug - cfg = "Debug" if debug else "Release" - - # CMake lets you override the generator - we need to check this. - # Can be set with Conda-Build, for example. - cmake_generator = os.environ.get("CMAKE_GENERATOR", "") - - # Set Python_EXECUTABLE instead if you use PYBIND11_FINDPYTHON - cmake_args = [ - f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir}{os.sep}", - f"-DPYTHON_EXECUTABLE={sys.executable}", - f"-DCMAKE_BUILD_TYPE={cfg}", # not used on MSVC, but no harm - ] - build_args = [] - # Adding CMake arguments set as environment variable - # (needed e.g. to build for ARM OSx on conda-forge) - if "CMAKE_ARGS" in os.environ: - cmake_args += [item for item in os.environ["CMAKE_ARGS"].split(" ") if item] - - # CALICO_VERSION_INFO shows you how to pass a value into the C++ code - # from Python. - # In this example, we pass in the version to C++. You might not need to. - cmake_args += [f"-DCALICO_VERSION_INFO={self.distribution.get_version()}"] - - if self.compiler.compiler_type != "msvc": - # Using Ninja-build since it a) is available as a wheel and b) - # multithreads automatically. MSVC would require all variables be - # exported for Ninja to pick it up, which is a little tricky to do. - # Users can override the generator with CMAKE_GENERATOR in CMake - # 3.15+. - if not cmake_generator or cmake_generator == "Ninja": - try: - import ninja - - ninja_executable_path = Path(ninja.BIN_DIR) / "ninja" - cmake_args += [ - "-GNinja", - f"-DCMAKE_MAKE_PROGRAM:FILEPATH={ninja_executable_path}", - ] - except ImportError: - pass - - else: - # Single config generators are handled "normally" - single_config = any(x in cmake_generator for x in {"NMake", "Ninja"}) - - # CMake allows an arch-in-generator style for backward compatibility - contains_arch = any(x in cmake_generator for x in {"ARM", "Win64"}) - - # Specify the arch if using MSVC generator, but only if it doesn't - # contain a backward-compatibility arch spec already in the - # generator name. - if not single_config and not contains_arch: - cmake_args += ["-A", PLAT_TO_CMAKE[self.plat_name]] - - # Multi-config generators have a different way to specify configs - if not single_config: - cmake_args += [ - f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{cfg.upper()}={extdir}" - ] - build_args += ["--config", cfg] - - if sys.platform.startswith("darwin"): - # Cross-compile support for macOS - respect ARCHFLAGS if set - archs = re.findall(r"-arch (\S+)", os.environ.get("ARCHFLAGS", "")) - if archs: - cmake_args += ["-DCMAKE_OSX_ARCHITECTURES={}".format(";".join(archs))] - - # Set CMAKE_BUILD_PARALLEL_LEVEL to control the parallel build level - # across all generators. - if "CMAKE_BUILD_PARALLEL_LEVEL" not in os.environ: - # self.parallel is a Python 3 only way to set parallel jobs by hand - # using -j in the build_ext call, not supported by pip or PyPA-build. - if hasattr(self, "parallel") and self.parallel: - # CMake 3.12+ only. - build_args += [f"-j{self.parallel}"] - - build_temp = Path(self.build_temp) / ext.name - if not build_temp.exists(): - build_temp.mkdir(parents=True) - - print(f"build_temp: {build_temp}") - - subprocess.run( - ["cmake", ext.sourcedir, *cmake_args], cwd=build_temp, check=True - ) - subprocess.run( - ["cmake", "--build", ".", *build_args], cwd=build_temp, check=True - ) - - -setup( - ext_modules=[CMakeExtension("calico")], - cmdclass={"build_ext": CMakeBuild}, - zip_safe=False, - packages=["calico"], -) From 54f54536aa494682b85d69ff31eb88543b89be4b Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 02:13:02 -0500 Subject: [PATCH 03/17] got wheel building --- .github/workflows/wheels.yml | 9 +- .gitignore | 5 +- README.md | 2 + python/CMakeLists.txt | 55 +++++++++++++ python/pyproject.toml | 3 +- python/setup.py | 155 ++++++++++++++++++++++++++++------- scripts/install-ceres.sh | 8 +- 7 files changed, 203 insertions(+), 34 deletions(-) create mode 100644 python/CMakeLists.txt diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index f95bd94..a660ff9 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -14,6 +14,10 @@ jobs: build_sdist: name: Build SDist runs-on: ubuntu-latest + defaults: + run: + working-directory: ./python + steps: - uses: actions/checkout@v4 with: @@ -37,6 +41,9 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] + defaults: + run: + working-directory: ./python steps: - uses: actions/checkout@v4 @@ -45,7 +52,7 @@ jobs: - name: Dependencies run: sudo apt install libeigen3-dev libgtest-dev \ - libabsl-dev libceres-dev python3-pybind11 \ + libabsl-dev libceres-dev \ libopencv-dev libyaml-cpp-dev libgmock-dev - name: Ceres diff --git a/.gitignore b/.gitignore index 6a9f423..21a06a8 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,7 @@ __pycache__ Testing .ipynb_checkpoints doc -calico.egg-info \ No newline at end of file +*.egg-info +CMakeFiles +*.a +*.whl \ No newline at end of file diff --git a/README.md b/README.md index a452be8..b416bc6 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ Check out our [wiki pages](https://github.com/yangjames/Calico/wiki) for more in # Dependencies +Install the latest version of the CUDA sdk + ``` sudo apt install libeigen3-dev libgtest-dev libabsl-dev \ libopencv-dev libyaml-cpp-dev libgmock-dev python3-pybind11 diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt new file mode 100644 index 0000000..6f762cf --- /dev/null +++ b/python/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required(VERSION 3.4...3.18) +project(calico) + +# Load dependencies. +find_package(Eigen3 3.3 REQUIRED NO_MODULE) +find_package(GTest REQUIRED) +find_package(absl REQUIRED) +find_package(Ceres REQUIRED) +find_package(OpenCV REQUIRED) +find_package(yaml-cpp REQUIRED) +find_package(pybind11 REQUIRED) + +# Add top level include directory. +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR} + ${OpenCV_INCLUDE_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../ + ${CMAKE_CURRENT_SOURCE_DIR}/../calico/third_party/apriltags +) + +pybind11_add_module(calico src/calico.cpp) +target_link_libraries( + calico PRIVATE + Eigen3::Eigen + absl::status + absl::statusor + absl::flat_hash_map + Ceres::ceres + ${OpenCV_LIBS} + ${YAML_CPP_LIBRARIES} +) +target_link_libraries( + calico PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../libaccelerometer.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libaccelerometer_models.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libaccelerometer_cost_functor.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libapriltags.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libaprilgrid_detector.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libbatch_optimizer.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera_cost_functor.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera_models.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libgyroscope.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libgyroscope_models.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libgyroscope_cost_functor.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libtrajectory.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libworld_model.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera_models.a + ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera.a +) + +# EXAMPLE_VERSION_INFO is defined by setup.py and passed into the C++ code as a +# define (VERSION_INFO) here. +target_compile_definitions(calico + PRIVATE VERSION_INFO=${CALICO_VERSION_INFO}) \ No newline at end of file diff --git a/python/pyproject.toml b/python/pyproject.toml index 85ee203..a8a995b 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,5 +1,6 @@ [project] -name = "pycalico" +name = "calico" +version = "0.0.1" authors= [ {name = "James Yang", email = "james.yang92@gmail.com"} ] diff --git a/python/setup.py b/python/setup.py index 5cf840e..dee678f 100644 --- a/python/setup.py +++ b/python/setup.py @@ -1,32 +1,131 @@ -# Available at setup time due to pyproject.toml -from pybind11.setup_helpers import Pybind11Extension, build_ext -from setuptools import setup - -__version__ = "0.0.1" - -# The main interface is through Pybind11Extension. -# * You can add cxx_std=11/14/17, and then build_ext can be removed. -# * You can set include_pybind11=false to add the include directory yourself, -# say from a submodule. -# -# Note: -# Sort input source files if you glob sources to ensure bit-for-bit -# reproducible builds (https://github.com/pybind/python_example/pull/53) - -ext_modules = [ - Pybind11Extension( - "calico", - ["src/main.cpp"], - # Example: passing in the version to the compiled code - define_macros=[("VERSION_INFO", __version__)], - ), -] +import os +import re +import subprocess +import sys +from pathlib import Path +from setuptools import Extension, setup +from setuptools.command.build_ext import build_ext + +# Convert distutils Windows platform specifiers to CMake -A arguments +PLAT_TO_CMAKE = { + "win32": "Win32", + "win-amd64": "x64", + "win-arm32": "ARM", + "win-arm64": "ARM64", +} + + +# A CMakeExtension needs a sourcedir instead of a file list. +# The name must be the _single_ output extension from the CMake build. +# If you need multiple extensions, see scikit-build. +class CMakeExtension(Extension): + def __init__(self, name: str, sourcedir: str = "") -> None: + super().__init__(name, sources=[]) + self.sourcedir = os.fspath(Path(sourcedir).resolve()) + + +class CMakeBuild(build_ext): + def build_extension(self, ext: CMakeExtension) -> None: + # Must be in this form due to bug in .resolve() only fixed in Python 3.10+ + ext_fullpath = Path.cwd() / self.get_ext_fullpath(ext.name) + extdir = ext_fullpath.parent.resolve() + + # Using this requires trailing slash for auto-detection & inclusion of + # auxiliary "native" libs + + debug = int(os.environ.get("DEBUG", 0)) if self.debug is None else self.debug + cfg = "Debug" if debug else "Release" + + # CMake lets you override the generator - we need to check this. + # Can be set with Conda-Build, for example. + cmake_generator = os.environ.get("CMAKE_GENERATOR", "") + + # Set Python_EXECUTABLE instead if you use PYBIND11_FINDPYTHON + # EXAMPLE_VERSION_INFO shows you how to pass a value into the C++ code + # from Python. + cmake_args = [ + f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir}{os.sep}", + f"-DPYTHON_EXECUTABLE={sys.executable}", + f"-DCMAKE_BUILD_TYPE={cfg}", # not used on MSVC, but no harm + ] + build_args = [] + # Adding CMake arguments set as environment variable + # (needed e.g. to build for ARM OSx on conda-forge) + if "CMAKE_ARGS" in os.environ: + cmake_args += [item for item in os.environ["CMAKE_ARGS"].split(" ") if item] + + # In this example, we pass in the version to C++. You might not need to. + cmake_args += [f"-DCALICO_VERSION_INFO={self.distribution.get_version()}"] + + if self.compiler.compiler_type != "msvc": + # Using Ninja-build since it a) is available as a wheel and b) + # multithreads automatically. MSVC would require all variables be + # exported for Ninja to pick it up, which is a little tricky to do. + # Users can override the generator with CMAKE_GENERATOR in CMake + # 3.15+. + if not cmake_generator or cmake_generator == "Ninja": + try: + import ninja + + ninja_executable_path = Path(ninja.BIN_DIR) / "ninja" + cmake_args += [ + "-GNinja", + f"-DCMAKE_MAKE_PROGRAM:FILEPATH={ninja_executable_path}", + ] + except ImportError: + pass + + else: + # Single config generators are handled "normally" + single_config = any(x in cmake_generator for x in {"NMake", "Ninja"}) + + # CMake allows an arch-in-generator style for backward compatibility + contains_arch = any(x in cmake_generator for x in {"ARM", "Win64"}) + + # Specify the arch if using MSVC generator, but only if it doesn't + # contain a backward-compatibility arch spec already in the + # generator name. + if not single_config and not contains_arch: + cmake_args += ["-A", PLAT_TO_CMAKE[self.plat_name]] + + # Multi-config generators have a different way to specify configs + if not single_config: + cmake_args += [ + f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{cfg.upper()}={extdir}" + ] + build_args += ["--config", cfg] + + if sys.platform.startswith("darwin"): + # Cross-compile support for macOS - respect ARCHFLAGS if set + archs = re.findall(r"-arch (\S+)", os.environ.get("ARCHFLAGS", "")) + if archs: + cmake_args += ["-DCMAKE_OSX_ARCHITECTURES={}".format(";".join(archs))] + + # Set CMAKE_BUILD_PARALLEL_LEVEL to control the parallel build level + # across all generators. + if "CMAKE_BUILD_PARALLEL_LEVEL" not in os.environ: + # self.parallel is a Python 3 only way to set parallel jobs by hand + # using -j in the build_ext call, not supported by pip or PyPA-build. + if hasattr(self, "parallel") and self.parallel: + # CMake 3.12+ only. + build_args += [f"-j{self.parallel}"] + + build_temp = Path(self.build_temp) / ext.name + if not build_temp.exists(): + build_temp.mkdir(parents=True) + + subprocess.run( + ["cmake", ext.sourcedir, *cmake_args], cwd=build_temp, check=True + ) + subprocess.run( + ["cmake", "--build", ".", *build_args], cwd=build_temp, check=True + ) + +# The information here can also be placed in setup.cfg - better separation of +# logic and declaration, and simpler if you include description/version in a file. setup( - version=__version__, - ext_modules=ext_modules, - # Currently, build_ext only provides an optional "highest supported C++ - # level" feature, but in the future it may provide more features. - cmdclass={"build_ext": build_ext}, + ext_modules=[CMakeExtension("calico")], + cmdclass={"build_ext": CMakeBuild}, zip_safe=False, ) diff --git a/scripts/install-ceres.sh b/scripts/install-ceres.sh index 1d72a97..48bd006 100755 --- a/scripts/install-ceres.sh +++ b/scripts/install-ceres.sh @@ -7,13 +7,15 @@ # SuiteSparse (optional) sudo apt-get install -y cmake libgoogle-glog-dev \ libgflags-dev libatlas-base-dev libeigen3-dev \ - libsuitesparse-dev + libsuitesparse-dev nvidia-cuda-toolkit cd /tmp || exit git clone https://ceres-solver.googlesource.com/ceres-solver -cd ceres-solver || exit -cmake . +mkdir ceres-bin +cd ceres-bin || exit +USE_CUDA=off cmake ../ceres-solver + make -j3 #make test # Optionally install Ceres, it can also be exported using CMake which From 71fb874f03d944f0837551aee4a44e6199d52e4a Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 02:23:36 -0500 Subject: [PATCH 04/17] clarified install details --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b416bc6..a27de26 100644 --- a/README.md +++ b/README.md @@ -23,12 +23,15 @@ Check out our [wiki pages](https://github.com/yangjames/Calico/wiki) for more in # Dependencies -Install the latest version of the CUDA sdk +* Calico is not compatible with Ubuntu 20.04 the minimum supported version is 22.04. +* Install the latest version of the CUDA sdk +* The version of Ceres that ships with 22.04 is too old for Calico, run `./scripts/install-ceres.sh` to install the latest version. + +You will also need the following dependencies: ``` sudo apt install libeigen3-dev libgtest-dev libabsl-dev \ - libopencv-dev libyaml-cpp-dev libgmock-dev python3-pybind11 -./scripts/install-ceres.sh + libopencv-dev libyaml-cpp-dev libgmock-dev ``` # License From 3f9cf87593742dc5601714e0a47d2f9aac685355 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 10:35:00 -0500 Subject: [PATCH 05/17] simplify the CMake files --- .gitignore | 3 +- CMakeLists.txt | 186 +++++++++++++++++------------------------- README.md | 17 ++++ python/CMakeLists.txt | 52 ++++-------- 4 files changed, 108 insertions(+), 150 deletions(-) diff --git a/.gitignore b/.gitignore index 21a06a8..9643491 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ doc *.egg-info CMakeFiles *.a -*.whl \ No newline at end of file +*.whl +Makefile diff --git a/CMakeLists.txt b/CMakeLists.txt index e3d5220..1219599 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,10 @@ cmake_minimum_required(VERSION 3.5) project (Calico) +# set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/lib) +# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/lib) +# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/bin) + # Turn off testing by default. option(BUILD_TESTING "Build unit tests." OFF) include(CTest) @@ -14,21 +18,19 @@ find_package(Eigen3 3.3 REQUIRED NO_MODULE) find_package(GTest REQUIRED) find_package(absl REQUIRED) find_package(Ceres REQUIRED) -# find_package(pybind11 REQUIRED) -# find_package(Python REQUIRED) find_package(OpenCV REQUIRED) find_package(yaml-cpp REQUIRED) # Add top level include directory. include_directories( - ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_LIST_DIR} ${OpenCV_INCLUDE_DIRS} ) # Build trajectory library and tests. add_library( trajectory - ${CMAKE_CURRENT_SOURCE_DIR}/calico/trajectory.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/trajectory.cpp ) target_link_libraries( trajectory @@ -42,7 +44,7 @@ target_link_libraries( # World model library. add_library( world_model - ${CMAKE_CURRENT_SOURCE_DIR}/calico/world_model.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/world_model.cpp ) target_link_libraries( world_model @@ -56,7 +58,7 @@ target_link_libraries( # Gyroscope library. add_library( gyroscope_models - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/gyroscope_models.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/gyroscope_models.cpp ) target_link_libraries( gyroscope_models @@ -66,7 +68,7 @@ target_link_libraries( add_library( gyroscope_cost_functor - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/gyroscope_cost_functor.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/gyroscope_cost_functor.cpp ) target_link_libraries( gyroscope_cost_functor @@ -76,7 +78,7 @@ target_link_libraries( add_library( gyroscope - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/gyroscope.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/gyroscope.cpp ) target_link_libraries( gyroscope @@ -89,7 +91,7 @@ target_link_libraries( # Accelerometer library and tests. add_library( accelerometer_models - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/accelerometer_models.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/accelerometer_models.cpp ) target_link_libraries( accelerometer_models @@ -99,7 +101,7 @@ target_link_libraries( add_library( accelerometer_cost_functor - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/accelerometer_cost_functor.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/accelerometer_cost_functor.cpp ) target_link_libraries( accelerometer_cost_functor @@ -109,7 +111,7 @@ target_link_libraries( add_library( accelerometer - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/accelerometer.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/accelerometer.cpp ) target_link_libraries( accelerometer @@ -122,7 +124,7 @@ target_link_libraries( # Camera library. add_library( camera_models - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/camera_models.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/camera_models.cpp ) target_link_libraries( camera_models @@ -132,7 +134,7 @@ target_link_libraries( add_library( camera_cost_functor - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/camera_cost_functor.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/camera_cost_functor.cpp ) target_link_libraries( camera_cost_functor @@ -142,7 +144,7 @@ target_link_libraries( add_library( camera - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/camera.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/camera.cpp ) target_link_libraries( camera @@ -155,7 +157,7 @@ target_link_libraries( # Batch optimizer. add_library( batch_optimizer - ${CMAKE_CURRENT_SOURCE_DIR}/calico/batch_optimizer.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/batch_optimizer.cpp ) target_link_libraries( batch_optimizer @@ -167,25 +169,25 @@ target_link_libraries( # AprilTags c++ library. include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/ - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/apriltags/ + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/ + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/apriltags/ ) add_library( apriltags - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/Edge.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/FloatImage.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/Gaussian.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/GLine2D.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/GLineSegment2D.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/GrayModel.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/Homography33.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/MathUtil.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/Quad.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/Segment.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/TagFamily.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/TagDetection.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/TagDetector.cc - ${CMAKE_CURRENT_SOURCE_DIR}/calico/third_party/apriltags/src/UnionFindSimple.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/Edge.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/FloatImage.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/Gaussian.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/GLine2D.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/GLineSegment2D.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/GrayModel.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/Homography33.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/MathUtil.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/Quad.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/Segment.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/TagFamily.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/TagDetection.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/TagDetector.cc + ${CMAKE_CURRENT_LIST_DIR}/calico/third_party/apriltags/src/UnionFindSimple.cc ) target_link_libraries( apriltags @@ -195,7 +197,7 @@ target_link_libraries( # AprilGrid Detector add_library( aprilgrid_detector - ${CMAKE_CURRENT_SOURCE_DIR}/calico/chart_detectors/aprilgrid_detector.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/chart_detectors/aprilgrid_detector.cpp ) target_link_libraries( aprilgrid_detector @@ -205,33 +207,6 @@ target_link_libraries( ${YAML_CPP_LIBRARIES} ) -# Python bindings. -# pybind11_add_module( -# calico -# ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/calico.cpp -# ) -# target_link_libraries( -# calico PUBLIC -# accelerometer -# aprilgrid_detector -# batch_optimizer -# camera -# gyroscope -# trajectory -# world_model -# Eigen3::Eigen -# ) -# set_target_properties( -# calico PROPERTIES -# LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/calico -# ) -# file( -# COPY -# #${CMAKE_CURRENT_SOURCE_DIR}/calico/python/__init__.py -# ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/utils.py -# DESTINATION ${PROJECT_BINARY_DIR}/calico -# ) - # Install cpp library. install( TARGETS @@ -259,56 +234,45 @@ install( DESTINATION lib/cmake/calico ) set(top_level_headers - ${CMAKE_CURRENT_SOURCE_DIR}/calico/profiler.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/trajectory.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/bspline.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test_utils.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/optimization_utils.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/batch_optimizer.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/typedefs.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/matchers.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/status_builder.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/geometry.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/world_model.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/statusor_macros.h + ${CMAKE_CURRENT_LIST_DIR}/calico/profiler.h + ${CMAKE_CURRENT_LIST_DIR}/calico/trajectory.h + ${CMAKE_CURRENT_LIST_DIR}/calico/bspline.h + ${CMAKE_CURRENT_LIST_DIR}/calico/test_utils.h + ${CMAKE_CURRENT_LIST_DIR}/calico/optimization_utils.h + ${CMAKE_CURRENT_LIST_DIR}/calico/batch_optimizer.h + ${CMAKE_CURRENT_LIST_DIR}/calico/typedefs.h + ${CMAKE_CURRENT_LIST_DIR}/calico/matchers.h + ${CMAKE_CURRENT_LIST_DIR}/calico/status_builder.h + ${CMAKE_CURRENT_LIST_DIR}/calico/geometry.h + ${CMAKE_CURRENT_LIST_DIR}/calico/world_model.h + ${CMAKE_CURRENT_LIST_DIR}/calico/statusor_macros.h ) install( FILES ${top_level_headers} DESTINATION include/calico ) set(sensor_headers - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/gyroscope_models.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/camera.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/accelerometer_cost_functor.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/sensor_base.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/gyroscope_cost_functor.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/camera_cost_functor.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/camera_models.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/accelerometer_models.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/gyroscope.h - ${CMAKE_CURRENT_SOURCE_DIR}/calico/sensors/accelerometer.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/gyroscope_models.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/camera.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/accelerometer_cost_functor.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/sensor_base.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/gyroscope_cost_functor.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/camera_cost_functor.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/camera_models.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/accelerometer_models.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/gyroscope.h + ${CMAKE_CURRENT_LIST_DIR}/calico/sensors/accelerometer.h ) install( FILES ${sensor_headers} DESTINATION include/calico/sensors/ ) -# Install python library. -# install( -# TARGETS calico -# DESTINATION ${Python_SITELIB}/calico -# ) -# install( -# FILES -# ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/utils.py -# ${CMAKE_CURRENT_SOURCE_DIR}/calico/python/__init__.py -# DESTINATION ${Python_SITELIB}/calico -# ) if (BUILD_TESTING) # Typedefs test. add_executable( typedefs_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/typedefs_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/typedefs_test.cpp ) target_link_libraries( typedefs_test @@ -320,7 +284,7 @@ if (BUILD_TESTING) # Geometry test. add_executable( geometry_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/geometry_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/geometry_test.cpp ) target_link_libraries( geometry_test @@ -333,7 +297,7 @@ if (BUILD_TESTING) # Spline test. add_executable( bspline_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/bspline_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/bspline_test.cpp ) target_link_libraries( bspline_test @@ -347,7 +311,7 @@ if (BUILD_TESTING) # Trajectory test. add_executable( trajectory_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/trajectory_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/trajectory_test.cpp ) target_link_libraries( trajectory_test @@ -359,7 +323,7 @@ if (BUILD_TESTING) # World model test. add_executable( world_model_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/world_model_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/world_model_test.cpp ) target_link_libraries( world_model_test @@ -371,7 +335,7 @@ if (BUILD_TESTING) # Gyroscope models test. add_executable( gyroscope_models_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/gyroscope_models_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/gyroscope_models_test.cpp ) target_link_libraries( gyroscope_models_test @@ -383,7 +347,7 @@ if (BUILD_TESTING) # Gyroscope cost functor test. add_executable( gyroscope_cost_functor_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/gyroscope_cost_functor_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/gyroscope_cost_functor_test.cpp ) target_link_libraries( gyroscope_cost_functor_test @@ -395,7 +359,7 @@ if (BUILD_TESTING) # Gyroscope test. add_executable( gyroscope_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/gyroscope_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/gyroscope_test.cpp ) target_link_libraries( gyroscope_test @@ -407,7 +371,7 @@ if (BUILD_TESTING) # Accelerometer models test. add_executable( accelerometer_models_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/accelerometer_models_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/accelerometer_models_test.cpp ) target_link_libraries( accelerometer_models_test @@ -419,7 +383,7 @@ if (BUILD_TESTING) # Accelerometer cost functor test. add_executable( accelerometer_cost_functor_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/accelerometer_cost_functor_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/accelerometer_cost_functor_test.cpp ) target_link_libraries( accelerometer_cost_functor_test @@ -431,7 +395,7 @@ if (BUILD_TESTING) # Accelerometer test. add_executable( accelerometer_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/accelerometer_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/accelerometer_test.cpp ) target_link_libraries( accelerometer_test @@ -443,7 +407,7 @@ if (BUILD_TESTING) # Camera models test. add_executable( camera_models_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/camera_models_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/camera_models_test.cpp ) target_link_libraries( camera_models_test @@ -455,7 +419,7 @@ if (BUILD_TESTING) # Camera cost functor test. add_executable( camera_cost_functor_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/camera_cost_functor_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/camera_cost_functor_test.cpp ) target_link_libraries( camera_cost_functor_test @@ -467,7 +431,7 @@ if (BUILD_TESTING) # Camera test. add_executable( camera_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/camera_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/camera_test.cpp ) target_link_libraries( camera_test @@ -479,7 +443,7 @@ if (BUILD_TESTING) # Batch optimizer test. add_executable( batch_optimizer_test - ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/batch_optimizer_test.cpp + ${CMAKE_CURRENT_LIST_DIR}/calico/test/batch_optimizer_test.cpp ) target_link_libraries( batch_optimizer_test @@ -493,14 +457,14 @@ if (BUILD_TESTING) # Python bindings test. add_test( NAME python_bindings_test - COMMAND python3 -m pytest ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/python_bindings_test.py - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/calico/test + COMMAND python3 -m pytest ${CMAKE_CURRENT_LIST_DIR}/calico/test/python_bindings_test.py + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/calico/test ) # Python utilities test. add_test( NAME python_utils_test - COMMAND python3 -m pytest ${CMAKE_CURRENT_SOURCE_DIR}/calico/test/python_utils_test.py - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/calico/test + COMMAND python3 -m pytest ${CMAKE_CURRENT_LIST_DIR}/calico/test/python_utils_test.py + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/calico/test ) set_tests_properties( python_bindings_test python_utils_test diff --git a/README.md b/README.md index a27de26..069aa22 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,23 @@ sudo apt install libeigen3-dev libgtest-dev libabsl-dev \ libopencv-dev libyaml-cpp-dev libgmock-dev ``` +# Building + +## Native + +``` +cmake . +make -j3 +make install +``` + +## Python + +``` +cd python +pip wheel --no-deps . +``` + # License Poor sensor calibration is a problem endemic to robotics, yet it's typically not given enough attention because it tends to detract from higher level project goals. The purpose of this library is to help roboticists quickly resolve their calibration issues so that they can move on to more interesting things. This library is hereby granted the MIT license, to be used free of charge by anyone within academia or industry. diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 6f762cf..ead8898 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -1,55 +1,31 @@ cmake_minimum_required(VERSION 3.4...3.18) project(calico) -# Load dependencies. -find_package(Eigen3 3.3 REQUIRED NO_MODULE) -find_package(GTest REQUIRED) -find_package(absl REQUIRED) -find_package(Ceres REQUIRED) -find_package(OpenCV REQUIRED) -find_package(yaml-cpp REQUIRED) +include(${CMAKE_CURRENT_LIST_DIR}/../CMakeLists.txt) + +# # Load dependencies. find_package(pybind11 REQUIRED) # Add top level include directory. include_directories( - ${CMAKE_CURRENT_SOURCE_DIR} - ${OpenCV_INCLUDE_DIRS} - ${CMAKE_CURRENT_SOURCE_DIR}/../ - ${CMAKE_CURRENT_SOURCE_DIR}/../calico/third_party/apriltags + ${CMAKE_CURRENT_LIST_DIR} ) pybind11_add_module(calico src/calico.cpp) -target_link_libraries( - calico PRIVATE - Eigen3::Eigen - absl::status - absl::statusor - absl::flat_hash_map - Ceres::ceres - ${OpenCV_LIBS} - ${YAML_CPP_LIBRARIES} -) target_link_libraries( calico PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/../libaccelerometer.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libaccelerometer_models.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libaccelerometer_cost_functor.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libapriltags.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libaprilgrid_detector.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libbatch_optimizer.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera_cost_functor.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera_models.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libgyroscope.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libgyroscope_models.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libgyroscope_cost_functor.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libtrajectory.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libworld_model.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera_models.a - ${CMAKE_CURRENT_SOURCE_DIR}/../libcamera.a + Eigen3::Eigen + accelerometer + aprilgrid_detector + batch_optimizer + camera + gyroscope + trajectory + world_model ) -# EXAMPLE_VERSION_INFO is defined by setup.py and passed into the C++ code as a + +# CALICO_VERSION_INFO is defined by setup.py and passed into the C++ code as a # define (VERSION_INFO) here. target_compile_definitions(calico PRIVATE VERSION_INFO=${CALICO_VERSION_INFO}) \ No newline at end of file From 87bed529e1ececcdd3bf6463976b409d50bb7b00 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 11:50:25 -0500 Subject: [PATCH 06/17] re-enable build sharing --- CMakeLists.txt | 6 +++--- python/CMakeLists.txt | 2 ++ python/setup.py | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b793dbd..b9faec0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ cmake_minimum_required(VERSION 3.5) project (Calico) -# set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/lib) -# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/lib) -# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/bin) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/build/bin) # Turn off testing by default. include(CTest) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index ead8898..108fa3f 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -3,6 +3,8 @@ project(calico) include(${CMAKE_CURRENT_LIST_DIR}/../CMakeLists.txt) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PYBIND_LIBRARY_OUTPUT_DIRECTORY}) + # # Load dependencies. find_package(pybind11 REQUIRED) diff --git a/python/setup.py b/python/setup.py index dee678f..4fb66d5 100644 --- a/python/setup.py +++ b/python/setup.py @@ -45,7 +45,7 @@ def build_extension(self, ext: CMakeExtension) -> None: # EXAMPLE_VERSION_INFO shows you how to pass a value into the C++ code # from Python. cmake_args = [ - f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir}{os.sep}", + f"-DPYBIND_LIBRARY_OUTPUT_DIRECTORY={extdir}{os.sep}", f"-DPYTHON_EXECUTABLE={sys.executable}", f"-DCMAKE_BUILD_TYPE={cfg}", # not used on MSVC, but no harm ] @@ -92,7 +92,7 @@ def build_extension(self, ext: CMakeExtension) -> None: # Multi-config generators have a different way to specify configs if not single_config: cmake_args += [ - f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{cfg.upper()}={extdir}" + f"-DPYBIND_LIBRARY_OUTPUT_DIRECTORY_{cfg.upper()}={extdir}" ] build_args += ["--config", cfg] From a9b05ec08442353a6816e3f92bbed3da7070896a Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 11:53:48 -0500 Subject: [PATCH 07/17] fix branch name --- .github/workflows/wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index a660ff9..d857a58 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -5,7 +5,7 @@ on: pull_request: push: branches: - - master + - mainline release: types: - published From 84586100d655373e1aab995e0c507eda2a4674e8 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 11:54:51 -0500 Subject: [PATCH 08/17] run for all branches --- .github/workflows/wheels.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index d857a58..061b045 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -4,8 +4,6 @@ on: workflow_dispatch: pull_request: push: - branches: - - mainline release: types: - published From f4b9ebc9143b171dfe6dfcc82c23f470584893f1 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 11:59:25 -0500 Subject: [PATCH 09/17] explicit OS --- .github/workflows/wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 061b045..9daca15 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [ubuntu-22.04] defaults: run: working-directory: ./python From 5eac6d3ae74c4f7740089f1551cc9d9959dcb78d Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 12:02:20 -0500 Subject: [PATCH 10/17] update --- .github/workflows/wheels.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 9daca15..5df4eb7 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -49,9 +49,10 @@ jobs: submodules: true - name: Dependencies - run: sudo apt install libeigen3-dev libgtest-dev \ - libabsl-dev libceres-dev \ - libopencv-dev libyaml-cpp-dev libgmock-dev + run: sudo apt update && \ + sudo apt install libeigen3-dev libgtest-dev \ + libabsl-dev libceres-dev \ + libopencv-dev libyaml-cpp-dev libgmock-dev - name: Ceres run: ./scripts/install_ceres.sh From e4230bf4ec87731a99f6ca078109c7a70c8c5b59 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 12:04:08 -0500 Subject: [PATCH 11/17] cleaner run commands --- .github/workflows/wheels.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 5df4eb7..7c3b5ff 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -49,13 +49,12 @@ jobs: submodules: true - name: Dependencies - run: sudo apt update && \ + run: | + sudo apt update sudo apt install libeigen3-dev libgtest-dev \ - libabsl-dev libceres-dev \ - libopencv-dev libyaml-cpp-dev libgmock-dev - - - name: Ceres - run: ./scripts/install_ceres.sh + libabsl-dev libceres-dev \ + libopencv-dev libyaml-cpp-dev libgmock-dev + ./scripts/install_ceres.sh - uses: pypa/cibuildwheel@v2.16 env: From 463cb49f2c16025ad2ab9dc1a4575cb28071ef22 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 12:39:36 -0500 Subject: [PATCH 12/17] refactor python build system to deduplicate --- README.md | 7 +- calico/__init__.py | 2 - calico/calico.cpp | 420 --------------------------------------- calico/utils.py | 186 ----------------- pyproject.toml | 14 +- python/pyproject.toml | 22 -- python/setup.py | 131 ------------ scripts/install-ceres.sh | 2 +- setup.py | 191 +++++++++++------- 9 files changed, 135 insertions(+), 840 deletions(-) delete mode 100644 calico/__init__.py delete mode 100644 calico/calico.cpp delete mode 100644 calico/utils.py delete mode 100644 python/pyproject.toml delete mode 100644 python/setup.py diff --git a/README.md b/README.md index 069aa22..303585d 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ Check out our [wiki pages](https://github.com/yangjames/Calico/wiki) for more in # Dependencies * Calico is not compatible with Ubuntu 20.04 the minimum supported version is 22.04. -* Install the latest version of the CUDA sdk * The version of Ceres that ships with 22.04 is too old for Calico, run `./scripts/install-ceres.sh` to install the latest version. +* * Optional: Install the latest version of the CUDA sdk before you install Ceres You will also need the following dependencies: @@ -38,7 +38,7 @@ sudo apt install libeigen3-dev libgtest-dev libabsl-dev \ ## Native -``` +```bash cmake . make -j3 make install @@ -46,8 +46,7 @@ make install ## Python -``` -cd python +```bash pip wheel --no-deps . ``` diff --git a/calico/__init__.py b/calico/__init__.py deleted file mode 100644 index 783a420..0000000 --- a/calico/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from ._calico import * -from .utils import * diff --git a/calico/calico.cpp b/calico/calico.cpp deleted file mode 100644 index f9eea07..0000000 --- a/calico/calico.cpp +++ /dev/null @@ -1,420 +0,0 @@ -#include "calico/batch_optimizer.h" -#include "calico/chart_detectors/aprilgrid_detector.h" -#include "calico/sensors/accelerometer.h" -#include "calico/sensors/camera.h" -#include "calico/sensors/gyroscope.h" -#include "calico/typedefs.h" - -#include - -#include "absl/status/status.h" -#include "absl/strings/string_view.h" -#include "pybind11/eigen.h" -#include "pybind11/numpy.h" -#include "pybind11/pybind11.h" -#include "pybind11/stl.h" - - -PYBIND11_MODULE(_calico, m) { - m.doc() = "Calico"; - namespace py = pybind11; - using namespace calico; - using namespace calico::chart_detectors; - using namespace calico::sensors; - using namespace calico::utils; - - // absl::Status - py::enum_(m, "StatusCode") - .value("kOk", absl::StatusCode::kOk) - .value("kInvalidArgument", absl::StatusCode::kInvalidArgument); - - py::class_(m, "Status") - .def(py::init<>()) - .def("ok", &absl::Status::ok) - .def("code", &absl::Status::code) - .def("message", [](absl::Status& self) { - return std::string(self.message()); - }); - - // Typedefs. - py::class_(m, "Pose3d") - .def(py::init<>()) - .def(py::init()) - .def_property("rotation", &Pose3d::GetRotation, &Pose3d::SetRotation) - .def_property("translation", - &Pose3d::GetTranslation, &Pose3d::SetTranslation); - - // Loss function types. - py::enum_(m, "LossFunctionType") - .value("kNone", LossFunctionType::kNone) - .value("kHuber", LossFunctionType::kHuber) - .value("kCauchy", LossFunctionType::kCauchy); - - // Base sensor class. - py::class_>(m, "Sensor"); - - // Accelerometer class. - py::enum_(m, "AccelerometerIntrinsicsModel") - .value("kNone", AccelerometerIntrinsicsModel::kNone) - .value("kAccelerometerScaleOnly", - AccelerometerIntrinsicsModel::kAccelerometerScaleOnly) - .value("kAccelerometerScaleAndBias", - AccelerometerIntrinsicsModel::kAccelerometerScaleAndBias) - .value("kAccelerometerVectorNav", - AccelerometerIntrinsicsModel::kAccelerometerVectorNav); - - py::class_(m, "AccelerometerObservationId") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("stamp", &AccelerometerObservationId::stamp) - .def_readwrite("sequence", &AccelerometerObservationId::sequence); - - py::class_(m, "AccelerometerMeasurement") - .def(py::init<>()) - .def_readwrite("measurement", &AccelerometerMeasurement::measurement) - .def_readwrite("id", &AccelerometerMeasurement::id); - - py::class_, Sensor> - (m, "Accelerometer") - .def(py::init<>()) - .def("SetName", &Accelerometer::SetName) - .def("GetName", &Accelerometer::GetName) - .def("SetExtrinsics", &Accelerometer::SetExtrinsics) - .def("GetExtrinsics", &Accelerometer::GetExtrinsics) - .def("SetIntrinsics", - [](Accelerometer& self, const Eigen::VectorXd& intrinsics) { - const auto status = self.SetIntrinsics(intrinsics); - if (!status.ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(status.message())); - } - }) - .def("GetIntrinsics", &Accelerometer::GetIntrinsics) - .def("SetLatency", &Accelerometer::SetLatency) - .def("GetLatency", &Accelerometer::GetLatency) - .def("EnableExtrinsicsEstimation", &Accelerometer::EnableExtrinsicsEstimation) - .def("EnableIntrinsicsEstimation", &Accelerometer::EnableIntrinsicsEstimation) - .def("EnableLatencyEstimation", &Accelerometer::EnableLatencyEstimation) - .def("SetModel", &Accelerometer::SetModel) - .def("GetModel", &Accelerometer::GetModel) - .def("SetLossFunction", &Accelerometer::SetLossFunction) - .def("AddMeasurement", &Accelerometer::AddMeasurement) - .def("AddMeasurements", &Accelerometer::AddMeasurements) - .def("SetMeasurementNoise", &Accelerometer::SetMeasurementNoise) - .def("Project", - [](const Accelerometer& self, const std::vector& interp_times, - const Trajectory& sensorrig_trajectory, const WorldModel& world_model) { - const auto interp_vals = self.Project( - interp_times, sensorrig_trajectory, world_model); - if (!interp_vals.status().ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(interp_vals.status().message())); - } - return interp_vals.value(); - }); - - // Gyroscope class. - py::enum_(m, "GyroscopeIntrinsicsModel") - .value("kNone", GyroscopeIntrinsicsModel::kNone) - .value("kGyroscopeScaleOnly", - GyroscopeIntrinsicsModel::kGyroscopeScaleOnly) - .value("kGyroscopeScaleAndBias", - GyroscopeIntrinsicsModel::kGyroscopeScaleAndBias) - .value("kGyroscopeVectorNav", - GyroscopeIntrinsicsModel::kGyroscopeVectorNav); - - py::class_(m, "GyroscopeObservationId") - .def(py::init<>()) - .def(py::init()) - .def_readwrite("stamp", &GyroscopeObservationId::stamp) - .def_readwrite("sequence", &GyroscopeObservationId::sequence); - - py::class_(m, "GyroscopeMeasurement") - .def(py::init<>()) - .def_readwrite("measurement", &GyroscopeMeasurement::measurement) - .def_readwrite("id", &GyroscopeMeasurement::id); - - py::class_, Sensor>(m, "Gyroscope") - .def(py::init<>()) - .def("SetName", &Gyroscope::SetName) - .def("GetName", &Gyroscope::GetName) - .def("SetExtrinsics", &Gyroscope::SetExtrinsics) - .def("GetExtrinsics", &Gyroscope::GetExtrinsics) - .def("SetIntrinsics", - [](Gyroscope& self, const Eigen::VectorXd& intrinsics) { - const auto status = self.SetIntrinsics(intrinsics); - if (!status.ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(status.message())); - } - }) - .def("GetIntrinsics", &Gyroscope::GetIntrinsics) - .def("SetLatency", &Gyroscope::SetLatency) - .def("GetLatency", &Gyroscope::GetLatency) - .def("EnableExtrinsicsEstimation", &Gyroscope::EnableExtrinsicsEstimation) - .def("EnableIntrinsicsEstimation", &Gyroscope::EnableIntrinsicsEstimation) - .def("EnableLatencyEstimation", &Gyroscope::EnableLatencyEstimation) - .def("SetModel", &Gyroscope::SetModel) - .def("GetModel", &Gyroscope::GetModel) - .def("SetLossFunction", &Gyroscope::SetLossFunction) - .def("AddMeasurement", &Gyroscope::AddMeasurement) - .def("AddMeasurements", &Gyroscope::AddMeasurements) - .def("SetMeasurementNoise", &Gyroscope::SetMeasurementNoise) - .def("Project", - [](const Gyroscope& self, const std::vector& interp_times, - const Trajectory& sensorrig_trajectory, const WorldModel& world_model) { - const auto interp_vals = self.Project( - interp_times, sensorrig_trajectory, world_model); - if (!interp_vals.status().ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(interp_vals.status().message())); - } - return interp_vals.value(); - }); - - - // Camera class. - py::enum_(m, "CameraIntrinsicsModel") - .value("kNone", CameraIntrinsicsModel::kNone) - .value("kOpenCv5", CameraIntrinsicsModel::kOpenCv5) - .value("kOpenCv8", CameraIntrinsicsModel::kOpenCv8) - .value("kKannalaBrandt", CameraIntrinsicsModel::kKannalaBrandt) - .value("kDoubleSphere", CameraIntrinsicsModel::kDoubleSphere) - .value("kFieldOfView", CameraIntrinsicsModel::kFieldOfView) - .value("kUnifiedCamera", CameraIntrinsicsModel::kUnifiedCamera) - .value("kExtendedUnifiedCamera", - CameraIntrinsicsModel::kExtendedUnifiedCamera); - - py::class_(m, "CameraObservationId") - .def(py::init<>()) - .def(py::init()) - .def("__hash__", absl::Hash()) - .def("__str__", - [](const CameraObservationId& self) { - return "stamp: " + std::to_string(self.stamp) + ", image_id: " + - std::to_string(self.image_id) + ", model_id: " + - std::to_string(self.model_id) + ", feature_id: " + - std::to_string(self.feature_id); - }) - .def_readwrite("stamp", &CameraObservationId::stamp) - .def_readwrite("image_id", &CameraObservationId::image_id) - .def_readwrite("model_id", &CameraObservationId::model_id) - .def_readwrite("feature_id", &CameraObservationId::feature_id); - - py::class_(m, "CameraMeasurement") - .def(py::init<>()) - .def_readwrite("pixel", &CameraMeasurement::pixel) - .def_readwrite("id", &CameraMeasurement::id); - - py::class_, Sensor>(m, "Camera") - .def(py::init<>()) - .def("SetName", &Camera::SetName) - .def("GetName", &Camera::GetName) - .def("SetExtrinsics", &Camera::SetExtrinsics) - .def("GetExtrinsics", &Camera::GetExtrinsics) - .def("SetIntrinsics", - [](Camera& self, const Eigen::VectorXd& intrinsics) { - const auto status = self.SetIntrinsics(intrinsics); - if (!status.ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(status.message())); - } - }) - .def("GetIntrinsics", &Camera::GetIntrinsics) - .def("SetLatency", &Camera::SetLatency) - .def("GetLatency", &Camera::GetLatency) - .def("EnableExtrinsicsEstimation", &Camera::EnableExtrinsicsEstimation) - .def("EnableIntrinsicsEstimation", &Camera::EnableIntrinsicsEstimation) - .def("EnableLatencyEstimation", &Camera::EnableLatencyEstimation) - .def("SetModel", &Camera::SetModel) - .def("GetModel", &Camera::GetModel) - .def("SetLossFunction", &Camera::SetLossFunction) - .def("AddMeasurement", &Camera::AddMeasurement) - .def("AddMeasurements", &Camera::AddMeasurements) - .def("GetMeasurementResidualPairs", - [](const Camera& self) { - const auto pairs = self.GetMeasurementResidualPairs(); - if (!pairs.status().ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(pairs.status().message())); - } - return pairs.value(); - }) - .def("GetMeasurementIdToMeasurement", - [](Camera& self) { - std::unordered_map> - id_to_measurement; - for (const auto [id, measurement] : - self.GetMeasurementIdToMeasurement()) { - id_to_measurement[id] = measurement; - } - return id_to_measurement; - }) - .def("MarkOutlierById", - [](Camera& self, CameraObservationId id) { - const auto status = self.MarkOutlierById(id); - if (!status.ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(status.message())); - } - }) - .def("MarkOutliersById", - [](Camera& self, const std::vector& ids) { - const auto status = self.MarkOutliersById(ids); - if (!status.ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(status.message())); - } - }) - .def("SetMeasurementNoise", &Camera::SetMeasurementNoise); - - // Trajectory class. - py::class_>(m, "Trajectory") - .def(py::init<>()) - .def("FitSpline", - [](Trajectory& self, const std::unordered_map& poses, - double knot_frequency, int spline_order) { - absl::flat_hash_map poses_absl; - for (const auto& [key, value] : poses) { - poses_absl[key] = value; - } - const auto status = self.FitSpline(poses_absl, knot_frequency, - spline_order); - if (!status.ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(status.message())); - } - }, - py::arg("poses"), - py::arg("knot_frequency") = Trajectory::kDefaultKnotFrequency, - py::arg("spline_order") = Trajectory::kDefaultSplineOrder) - .def("Interpolate", - [](Trajectory& self, const std::vector& stamps) { - const auto poses = self.Interpolate(stamps); - if (!poses.status().ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(poses.status().message())); - } - return poses.value(); - }); - - // World model class. - py::class_(m, "Landmark") - .def(py::init<>()) - .def_readwrite("point", &Landmark::point) - .def_readwrite("id", &Landmark::id) - .def_readwrite("point_is_constant", &Landmark::point_is_constant); - - py::class_(m, "RigidBody") - .def(py::init<>()) - .def_readwrite("model_definition", &RigidBody::model_definition) - .def_readwrite("T_world_rigidbody", &RigidBody::T_world_rigidbody) - .def_readwrite("id", &RigidBody::id) - .def_readwrite("world_pose_is_constant", &RigidBody::world_pose_is_constant) - .def_readwrite("model_definition_is_constant", - &RigidBody::model_definition_is_constant); - - py::class_>(m, "WorldModel") - .def(py::init<>()) - .def("AddLandmark", &WorldModel::AddLandmark) - .def("AddRigidBody", - [](WorldModel& self, const RigidBody& rigidbody) { - const auto status = self.AddRigidBody(rigidbody); - if (!status.ok()) { - throw std::runtime_error( - std::string("Error: ") + std::string(status.message())); - } - }) - .def("SetGravity", &WorldModel::SetGravity) - .def("GetGravity", &WorldModel::GetGravity) - .def("EnableGravityEstimation", &WorldModel::EnableGravityEstimation); - - // ceres::Summary - py::class_(m, "Summary") - .def("BriefReport", &ceres::Solver::Summary::BriefReport) - .def("FullReport", &ceres::Solver::Summary::FullReport) - .def("IsSolutionUsable", &ceres::Solver::Summary::IsSolutionUsable) - .def_readonly("initial_cost", &ceres::Solver::Summary::initial_cost) - .def_readonly("final_cost", &ceres::Solver::Summary::final_cost) - .def_readonly("num_residual_blocks", - &ceres::Solver::Summary::num_residual_blocks) - .def_readonly("num_residuals", - &ceres::Solver::Summary::num_residuals) - .def_readonly("num_parameter_blocks", - &ceres::Solver::Summary::num_parameter_blocks) - .def_readonly("num_parameters", - &ceres::Solver::Summary::num_parameters) - .def_readonly("num_parameter_blocks_reduced", - &ceres::Solver::Summary::num_parameter_blocks_reduced) - .def_readonly("num_parameters_reduced", - &ceres::Solver::Summary::num_parameters_reduced) - .def_readonly("num_effective_parameters_reduced", - &ceres::Solver::Summary::num_effective_parameters_reduced) - .def_readonly("num_residual_blocks_reduced", - &ceres::Solver::Summary::num_residual_blocks_reduced) - .def_readonly("num_residuals_reduced", - &ceres::Solver::Summary::num_residuals_reduced); - - // ceres::Solver::Options - py::class_(m, "SolverOptions") - .def_readwrite("minimizer_type", &ceres::Solver::Options::minimizer_type) - .def_readwrite("max_num_iterations", - &ceres::Solver::Options::max_num_iterations) - .def_readwrite("num_threads", &ceres::Solver::Options::num_threads) - .def_readwrite("function_tolerance", - &ceres::Solver::Options::function_tolerance) - .def_readwrite("gradient_tolerance", - &ceres::Solver::Options::gradient_tolerance) - .def_readwrite("parameter_tolerance", - &ceres::Solver::Options::parameter_tolerance) - .def_readwrite("linear_solver_type", - &ceres::Solver::Options::linear_solver_type) - .def_readwrite("preconditioner_type", - &ceres::Solver::Options::preconditioner_type) - .def_readwrite("minimizer_progress_to_stdout", - &ceres::Solver::Options::minimizer_progress_to_stdout); - - // Getter for default solver options. - m.def("DefaultSolverOptions", &DefaultSolverOptions); - - // BatchOptimizer class. - py::class_(m, "BatchOptimizer") - .def(py::init()) - .def("AddSensor", - [](BatchOptimizer& self, std::shared_ptr sensor) { - self.AddSensor(sensor.get(), /*take_ownership=*/false); - }) - - .def("AddTrajectory", - [](BatchOptimizer& self, std::shared_ptr trajectory) { - self.AddTrajectory(trajectory.get(), /*take_ownership=*/false); - }) - .def("AddWorldModel", - [](BatchOptimizer& self, std::shared_ptr world_model) { - self.AddWorldModel(world_model.get(), /*take_ownership=*/false); - }) - .def("Optimize", - [](BatchOptimizer& self, const ceres::Solver::Options& options) { - const auto summary = self.Optimize(options); - if (!summary.ok()) { - throw std::runtime_error( - std::string("Error: ") + - std::string(summary.status().message())); - } - return summary.value(); - }, - py::arg("options") = DefaultSolverOptions()); - - // AprilGridDetector class. - py::class_(m, "AprilGridDetector") - .def(py::init()) - .def("Detect", - [](AprilGridDetector& self, const py::array_t& img) { - py::buffer_info buf = img.request(); - cv::Mat mat(buf.shape[0], buf.shape[1], CV_8UC1, - static_cast(buf.ptr)); - return self.Detect(mat); - }) - .def("GetRigidBodyDefinition", &AprilGridDetector::GetRigidBodyDefinition); -} diff --git a/calico/utils.py b/calico/utils.py deleted file mode 100644 index 610e5ad..0000000 --- a/calico/utils.py +++ /dev/null @@ -1,186 +0,0 @@ -"""@package Python utils -Utility functions for calico python bindings. -""" -import calico - -import cv2 -import numpy as np -from typing import Dict, List, Tuple, Union -import yaml - - -def ComputeRmseHeatmapAndFeatureCount( - measurement_residual_pairs: List[Tuple[calico.CameraMeasurement, np.ndarray]], - image_width: int, image_height: int, num_rows:int = 8, num_cols:int = 12, -) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: - """ Compute the RMSE heatmap with specified resolution. - - Args: - measurement_residual_pairs: - List of camera measurements paired with their residuals. - image_width: - Width of the original image. - image_height: - Height of the original image. - num_rows: - Number of rows we want to divide the image into. - num_cols: - Number of columns we want to divide the image into. - - Returns: - A tuple containing: - 1. An rmse heatmap image with dimensions image_width x image_height. - 2. A binned version of the RMSE heatmap as a num_rows x num_cols array. - 3. A num_rows x num_cols array representing the number of features detected - in a particular region of the image space. - """ - local_count = np.zeros((num_rows, num_cols)) - local_rmse = np.zeros((num_rows, num_cols)) - for measurement, residual in measurement_residual_pairs: - local_col = int(np.floor((measurement.pixel[0] / image_width) * num_cols)) - local_row = int(np.floor((measurement.pixel[1] / image_height) * num_rows)) - local_col = max(min(local_col, num_cols - 1), 0) - local_row = max(min(local_row, num_rows - 1), 0) - local_count[local_row, local_col] += 1 - local_rmse[local_row, local_col] += np.sum(residual**2) - rmse_heatmap = np.sqrt(local_rmse / local_count) - rmse_heatmap_image = cv2.resize( - rmse_heatmap, dsize=(image_width, image_height), - interpolation=cv2.INTER_NEAREST) - return rmse_heatmap_image, rmse_heatmap, local_count - -def DrawDetections( - img: np.ndarray, - detections: Dict[int, np.ndarray] -) -> np.ndarray: - """Small helper function for drawing detections onto the original image. - - Args: - img: Original grayscale image. - detections: Dictionary mapping feature id to its pixel location. - - Returns: - Color image with detections drawn. - """ - img_color = cv2.cvtColor(img.copy(), cv2.COLOR_GRAY2RGB) - for feature_id, corner in detections.items(): - corner_id = feature_id % 4 - tag_id = feature_id // 4 - color = ( - 255 * (corner_id == 2), - 255 * (corner_id == 1 or corner_id == 3), - 255 * (corner_id == 0 or corner_id == 3), - ) - cv2.putText(img_color, str(tag_id) + '.' + str(corner_id), - tuple(corner.astype(int)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, - color, 1) - cv2.circle(img_color, tuple(corner.astype(int)), 3, color, 3) - return img_color - - -def DetectionsToCameraMeasurements( - detections: Dict[int, np.ndarray], - stamp: float, - seq: int, -) -> List[calico.CameraMeasurement]: - """Convenience function for converting a calibration chart detection into - camera measurement types. - """ - measurements = [] - for feature_id, point in detections.items(): - measurement = calico.CameraMeasurement() - measurement.id.stamp = stamp - measurement.id.image_id = seq - measurement.id.model_id = 0 # always 0 for Aprilgrid since multiple - # charts are not supported. - measurement.id.feature_id = feature_id - measurement.pixel = point - measurements.append(measurement) - return measurements - - -def InitializePinholeAndPoses( - all_detections: List[Dict[int, np.ndarray]], - model_definition: Dict[int, np.ndarray] -) -> Tuple[np.ndarray, List[np.ndarray], List[np.ndarray]]: - """Implements Zhang's pinhole estimation algorithm. - https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr98-71.pdf - For convenience, we also return the pose of the camera w.r.t. the calibration - chart. - - Args: - measurements: - List of calibration chart detections where each list element represents - detections for one image frame. - model_definition: - Dictionary mapping feature ID of a calibration chart to its metric - coordinate resolved in the chart's frame. - - Returns: - intrinsics: - Pinhole parameters as a 5-vector in the order [fx, fy, s, cx, cy] such that - K = [fx s cx] - [ 0 fy cy] - [ 0 0 1] - R_chart_camera: - List of 3x3 - """ - V = np.zeros((2*len(all_detections), 6)) - H_camera_chart = [] - pixels = [] - model_points = [] - for i, detections in enumerate(all_detections): - # Estimate homography. - n_detections = len(detections) - pixels_i = np.zeros((n_detections, 2)) - model_points_i = np.zeros((n_detections, 2)) - for j, (feature_id, pixel) in enumerate(detections.items()): - pixels_i[j, :] = pixel - model_points_i[j, :] = model_definition[feature_id][:2] - H_camera_chart_i, _ = cv2.findHomography(model_points_i, pixels_i) - H_camera_chart.append(H_camera_chart_i) - pixels.append(pixels_i) - model_points.append(model_points_i) - # Populate linear problem. - h11, h12, h13, h21, h22, h23, h31, h32, h33 = H_camera_chart_i.flatten() - v11 = np.array([h11 ** 2, 2.0 * h11 * h21, h21 ** 2, 2.0 * h11 * h31, - 2.0 * h21 * h31, h31 ** 2]) - v12 = np.array([h11*h12, h11*h22 + h12*h21, h21*h22, h11*h32 + h12*h31, - h21 * h32 + h22 * h31, h31 * h32]) - v22 = np.array([h12 ** 2, 2.0 * h12 * h22, h22 ** 2, 2.0 * h12 * h32, - 2.0 * h22 * h32, h32 **2 ]) - V[2 * i, :] = v12 - V[2 * i + 1, :] = v11 - v22 - # Solve for intrinsics. - _, _, Vt = np.linalg.svd(np.dot(V.T, V)) - b = Vt[-1,:].flatten() - c1 = b[0] * b[2] * b[5] - b[1] ** 2 * b[5] - b[0] * b[4] ** 2 + \ - 2.0 * b[1] * b[3] * b[4] - b[2] * b[3] ** 2 - c2 = b[0] * b[2] - b[1]**2 - c2 *= np.sign(c2) - alpha = np.sqrt(c1 / (c2 * b[0])) - beta = np.sqrt(c1 / c2 ** 2 * b[0]) - gamma = -np.sqrt(c1 / (c2 ** 2 * b[0])) * b[1] - u0 = (b[1] * b[4] - b[2] * b[3]) / c2 - v0 = (b[1] * b[3] - b[0] * b[4]) / c2 - intrinsics = [alpha, beta, gamma, u0, v0] - # Solve for camera poses. - R_chart_camera = [] - t_chart_camera = [] - K_inv = np.array([[1.0/alpha, -gamma/(alpha*beta), (v0*gamma - u0*beta)/(alpha*beta)], - [0, 1.0/beta, -v0/beta], - [0, 0, 1]]) - for (pixels_i, model_points_i, H_camera_chart_i) in zip(pixels, model_points, H_camera_chart): - Rt = np.dot(K_inv, H_camera_chart_i) - scale = (np.linalg.norm(Rt[:, 0]) + \ - np.linalg.norm(Rt[:, 1])) * 0.5 - R_camera_chart = np.zeros((3, 3)) - R_camera_chart[:, 0] = Rt[:, 0] / scale - R_camera_chart[:, 1] = Rt[:, 1] / scale - R_camera_chart[:, 2] = np.cross(R_camera_chart[:, 0], R_camera_chart[:, 1]) - U, _, Vt = np.linalg.svd(R_camera_chart) - R_camera_chart = np.dot(U, Vt) - t_camera_chart = Rt[:, 2] / scale - R_chart_camera.append(R_camera_chart.T) - t_chart_camera.append(-np.dot(R_camera_chart.T, t_camera_chart)) - return intrinsics, R_chart_camera, t_chart_camera diff --git a/pyproject.toml b/pyproject.toml index 8b96441..fcfb9f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools", "wheel", "pybind11", "opencv-python", "scipy", "pyyaml"] +requires = ["setuptools", "wheel", "pybind11"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] @@ -24,6 +24,18 @@ classifiers = [ "Operating System :: Unix", "Programming Language :: Python", ] +dependencies = [ + 'numpy ~= 1.26.0', + "opencv-python", + "pyyaml", +] + +[project.optional-dependencies] # Optional +test = [ + 'pytest>=6.0', + "scipy" +] + [project.urls] "Homepage" = "https://github.com/yangjames/Calico.git" \ No newline at end of file diff --git a/python/pyproject.toml b/python/pyproject.toml deleted file mode 100644 index a8a995b..0000000 --- a/python/pyproject.toml +++ /dev/null @@ -1,22 +0,0 @@ -[project] -name = "calico" -version = "0.0.1" -authors= [ - {name = "James Yang", email = "james.yang92@gmail.com"} -] -requires-python = ">=3.8" -description="Calico calibration library" -dependencies = [ - 'numpy ~= 1.26.0', - 'opencv-python-headless>=4.8.0.74', -] - -[project.optional-dependencies] # Optional -test = ['pytest>=6.0'] - -[build-system] -requires = ["setuptools>=42", "wheel", "pybind11>=2.10.0"] -build-backend = "setuptools.build_meta" - -[tool.ruff] -target-version = "py39" \ No newline at end of file diff --git a/python/setup.py b/python/setup.py deleted file mode 100644 index 4fb66d5..0000000 --- a/python/setup.py +++ /dev/null @@ -1,131 +0,0 @@ -import os -import re -import subprocess -import sys -from pathlib import Path - -from setuptools import Extension, setup -from setuptools.command.build_ext import build_ext - -# Convert distutils Windows platform specifiers to CMake -A arguments -PLAT_TO_CMAKE = { - "win32": "Win32", - "win-amd64": "x64", - "win-arm32": "ARM", - "win-arm64": "ARM64", -} - - -# A CMakeExtension needs a sourcedir instead of a file list. -# The name must be the _single_ output extension from the CMake build. -# If you need multiple extensions, see scikit-build. -class CMakeExtension(Extension): - def __init__(self, name: str, sourcedir: str = "") -> None: - super().__init__(name, sources=[]) - self.sourcedir = os.fspath(Path(sourcedir).resolve()) - - -class CMakeBuild(build_ext): - def build_extension(self, ext: CMakeExtension) -> None: - # Must be in this form due to bug in .resolve() only fixed in Python 3.10+ - ext_fullpath = Path.cwd() / self.get_ext_fullpath(ext.name) - extdir = ext_fullpath.parent.resolve() - - # Using this requires trailing slash for auto-detection & inclusion of - # auxiliary "native" libs - - debug = int(os.environ.get("DEBUG", 0)) if self.debug is None else self.debug - cfg = "Debug" if debug else "Release" - - # CMake lets you override the generator - we need to check this. - # Can be set with Conda-Build, for example. - cmake_generator = os.environ.get("CMAKE_GENERATOR", "") - - # Set Python_EXECUTABLE instead if you use PYBIND11_FINDPYTHON - # EXAMPLE_VERSION_INFO shows you how to pass a value into the C++ code - # from Python. - cmake_args = [ - f"-DPYBIND_LIBRARY_OUTPUT_DIRECTORY={extdir}{os.sep}", - f"-DPYTHON_EXECUTABLE={sys.executable}", - f"-DCMAKE_BUILD_TYPE={cfg}", # not used on MSVC, but no harm - ] - build_args = [] - # Adding CMake arguments set as environment variable - # (needed e.g. to build for ARM OSx on conda-forge) - if "CMAKE_ARGS" in os.environ: - cmake_args += [item for item in os.environ["CMAKE_ARGS"].split(" ") if item] - - # In this example, we pass in the version to C++. You might not need to. - cmake_args += [f"-DCALICO_VERSION_INFO={self.distribution.get_version()}"] - - if self.compiler.compiler_type != "msvc": - # Using Ninja-build since it a) is available as a wheel and b) - # multithreads automatically. MSVC would require all variables be - # exported for Ninja to pick it up, which is a little tricky to do. - # Users can override the generator with CMAKE_GENERATOR in CMake - # 3.15+. - if not cmake_generator or cmake_generator == "Ninja": - try: - import ninja - - ninja_executable_path = Path(ninja.BIN_DIR) / "ninja" - cmake_args += [ - "-GNinja", - f"-DCMAKE_MAKE_PROGRAM:FILEPATH={ninja_executable_path}", - ] - except ImportError: - pass - - else: - # Single config generators are handled "normally" - single_config = any(x in cmake_generator for x in {"NMake", "Ninja"}) - - # CMake allows an arch-in-generator style for backward compatibility - contains_arch = any(x in cmake_generator for x in {"ARM", "Win64"}) - - # Specify the arch if using MSVC generator, but only if it doesn't - # contain a backward-compatibility arch spec already in the - # generator name. - if not single_config and not contains_arch: - cmake_args += ["-A", PLAT_TO_CMAKE[self.plat_name]] - - # Multi-config generators have a different way to specify configs - if not single_config: - cmake_args += [ - f"-DPYBIND_LIBRARY_OUTPUT_DIRECTORY_{cfg.upper()}={extdir}" - ] - build_args += ["--config", cfg] - - if sys.platform.startswith("darwin"): - # Cross-compile support for macOS - respect ARCHFLAGS if set - archs = re.findall(r"-arch (\S+)", os.environ.get("ARCHFLAGS", "")) - if archs: - cmake_args += ["-DCMAKE_OSX_ARCHITECTURES={}".format(";".join(archs))] - - # Set CMAKE_BUILD_PARALLEL_LEVEL to control the parallel build level - # across all generators. - if "CMAKE_BUILD_PARALLEL_LEVEL" not in os.environ: - # self.parallel is a Python 3 only way to set parallel jobs by hand - # using -j in the build_ext call, not supported by pip or PyPA-build. - if hasattr(self, "parallel") and self.parallel: - # CMake 3.12+ only. - build_args += [f"-j{self.parallel}"] - - build_temp = Path(self.build_temp) / ext.name - if not build_temp.exists(): - build_temp.mkdir(parents=True) - - subprocess.run( - ["cmake", ext.sourcedir, *cmake_args], cwd=build_temp, check=True - ) - subprocess.run( - ["cmake", "--build", ".", *build_args], cwd=build_temp, check=True - ) - -# The information here can also be placed in setup.cfg - better separation of -# logic and declaration, and simpler if you include description/version in a file. -setup( - ext_modules=[CMakeExtension("calico")], - cmdclass={"build_ext": CMakeBuild}, - zip_safe=False, -) diff --git a/scripts/install-ceres.sh b/scripts/install-ceres.sh index 48bd006..f4eb292 100755 --- a/scripts/install-ceres.sh +++ b/scripts/install-ceres.sh @@ -7,7 +7,7 @@ # SuiteSparse (optional) sudo apt-get install -y cmake libgoogle-glog-dev \ libgflags-dev libatlas-base-dev libeigen3-dev \ - libsuitesparse-dev nvidia-cuda-toolkit + libsuitesparse-dev cd /tmp || exit git clone https://ceres-solver.googlesource.com/ceres-solver diff --git a/setup.py b/setup.py index 0bb843d..baaf1d1 100644 --- a/setup.py +++ b/setup.py @@ -1,86 +1,131 @@ import os -import sys -import sysconfig -import platform +import re import subprocess +import sys from pathlib import Path -from distutils.version import LooseVersion -from setuptools import setup, Extension, find_packages +from setuptools import Extension, setup from setuptools.command.build_ext import build_ext -from setuptools.command.test import test as TestCommand +# Convert distutils Windows platform specifiers to CMake -A arguments +PLAT_TO_CMAKE = { + "win32": "Win32", + "win-amd64": "x64", + "win-arm32": "ARM", + "win-arm64": "ARM64", +} + +# A CMakeExtension needs a sourcedir instead of a file list. +# The name must be the _single_ output extension from the CMake build. +# If you need multiple extensions, see scikit-build. class CMakeExtension(Extension): - def __init__(self, name, sources=[]): - Extension.__init__(self, name, sources=sources) + def __init__(self, name: str, sourcedir: str = "") -> None: + super().__init__(name, sources=[]) + self.sourcedir = os.fspath(Path(sourcedir).resolve()) class CMakeBuild(build_ext): - def run(self): - try: - out = subprocess.check_output(['cmake', '--version']) - except OSError: - raise RuntimeError( - "CMake must be installed to build the following extensions: " + - ", ".join(e.name for e in self.extensions)) - - build_directory = os.path.abspath(self.build_temp) - - cmake_args = [ - '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + build_directory, - '-DPYTHON_EXECUTABLE=' + sys.executable - ] - - cfg = 'Debug' if self.debug else 'Release' - build_args = ['--config', cfg] - - cmake_args += ['-DCMAKE_BUILD_TYPE=' + cfg, '-DBUILD_TESTING=OFF'] - - # Assuming Makefiles - build_args += ['--'] - - self.build_args = build_args - - env = os.environ.copy() - env['CXXFLAGS'] = '{} -DVERSION_INFO=\\"{}\\"'.format( - env.get('CXXFLAGS', ''), - self.distribution.get_version()) - if not os.path.exists(self.build_temp): - os.makedirs(self.build_temp) - - # CMakeLists.txt is in the same directory as this setup.py file - cmake_list_dir = os.path.abspath(os.path.dirname(__file__)) - print('-'*10, 'Running CMake prepare', '-'*40) - subprocess.check_call(['cmake', cmake_list_dir] + cmake_args, - cwd=self.build_temp, env=env) - - print('-'*10, 'Building extensions', '-'*40) - cmake_cmd = ['cmake', '--build', '.'] + self.build_args - subprocess.check_call(cmake_cmd, - cwd=self.build_temp) - - # Move from build temp to final position - for ext in self.extensions: - self.move_output(ext) - - def move_output(self, ext): - build_temp = Path(self.build_temp).resolve() - dest_path = Path(self.get_ext_fullpath(ext.name)).resolve() - source_path = build_temp / self.get_ext_filename(ext.name) - dest_directory = dest_path.parents[0] - dest_directory.mkdir(parents=True, exist_ok=True) - self.copy_file(source_path, dest_path) - -ext_modules = [ - CMakeExtension('calico._calico'), -] - + def build_extension(self, ext: CMakeExtension) -> None: + # Must be in this form due to bug in .resolve() only fixed in Python 3.10+ + ext_fullpath = Path.cwd() / self.get_ext_fullpath(ext.name) + extdir = ext_fullpath.parent.resolve() + + # Using this requires trailing slash for auto-detection & inclusion of + # auxiliary "native" libs + + debug = int(os.environ.get("DEBUG", 0)) if self.debug is None else self.debug + cfg = "Debug" if debug else "Release" + + # CMake lets you override the generator - we need to check this. + # Can be set with Conda-Build, for example. + cmake_generator = os.environ.get("CMAKE_GENERATOR", "") + + # Set Python_EXECUTABLE instead if you use PYBIND11_FINDPYTHON + # EXAMPLE_VERSION_INFO shows you how to pass a value into the C++ code + # from Python. + cmake_args = [ + f"-DPYBIND_LIBRARY_OUTPUT_DIRECTORY={extdir}{os.sep}", + f"-DPYTHON_EXECUTABLE={sys.executable}", + f"-DCMAKE_BUILD_TYPE={cfg}", # not used on MSVC, but no harm + ] + build_args = [] + # Adding CMake arguments set as environment variable + # (needed e.g. to build for ARM OSx on conda-forge) + if "CMAKE_ARGS" in os.environ: + cmake_args += [item for item in os.environ["CMAKE_ARGS"].split(" ") if item] + + # In this example, we pass in the version to C++. You might not need to. + cmake_args += [f"-DCALICO_VERSION_INFO={self.distribution.get_version()}"] + + if self.compiler.compiler_type != "msvc": + # Using Ninja-build since it a) is available as a wheel and b) + # multithreads automatically. MSVC would require all variables be + # exported for Ninja to pick it up, which is a little tricky to do. + # Users can override the generator with CMAKE_GENERATOR in CMake + # 3.15+. + if not cmake_generator or cmake_generator == "Ninja": + try: + import ninja + + ninja_executable_path = Path(ninja.BIN_DIR) / "ninja" + cmake_args += [ + "-GNinja", + f"-DCMAKE_MAKE_PROGRAM:FILEPATH={ninja_executable_path}", + ] + except ImportError: + pass + + else: + # Single config generators are handled "normally" + single_config = any(x in cmake_generator for x in {"NMake", "Ninja"}) + + # CMake allows an arch-in-generator style for backward compatibility + contains_arch = any(x in cmake_generator for x in {"ARM", "Win64"}) + + # Specify the arch if using MSVC generator, but only if it doesn't + # contain a backward-compatibility arch spec already in the + # generator name. + if not single_config and not contains_arch: + cmake_args += ["-A", PLAT_TO_CMAKE[self.plat_name]] + + # Multi-config generators have a different way to specify configs + if not single_config: + cmake_args += [ + f"-DPYBIND_LIBRARY_OUTPUT_DIRECTORY_{cfg.upper()}={extdir}" + ] + build_args += ["--config", cfg] + + if sys.platform.startswith("darwin"): + # Cross-compile support for macOS - respect ARCHFLAGS if set + archs = re.findall(r"-arch (\S+)", os.environ.get("ARCHFLAGS", "")) + if archs: + cmake_args += ["-DCMAKE_OSX_ARCHITECTURES={}".format(";".join(archs))] + + # Set CMAKE_BUILD_PARALLEL_LEVEL to control the parallel build level + # across all generators. + if "CMAKE_BUILD_PARALLEL_LEVEL" not in os.environ: + # self.parallel is a Python 3 only way to set parallel jobs by hand + # using -j in the build_ext call, not supported by pip or PyPA-build. + if hasattr(self, "parallel") and self.parallel: + # CMake 3.12+ only. + build_args += [f"-j{self.parallel}"] + + build_temp = Path(self.build_temp) / ext.name + if not build_temp.exists(): + build_temp.mkdir(parents=True) + + subprocess.run( + ["cmake", ext.sourcedir, *cmake_args], cwd=build_temp, check=True + ) + subprocess.run( + ["cmake", "--build", ".", *build_args], cwd=build_temp, check=True + ) + +# The information here can also be placed in setup.cfg - better separation of +# logic and declaration, and simpler if you include description/version in a file. setup( - packages=find_packages(), - py_modules=["calico/utils", "calico/__init__"], - package_dir={"": "."}, - ext_modules=ext_modules, - cmdclass=dict(build_ext=CMakeBuild), - zip_safe=False, + ext_modules=[CMakeExtension("calico", "python")], + cmdclass={"build_ext": CMakeBuild}, + zip_safe=False, ) From e3b26bab4b971fe39c54f0d74adfb789cd4dfc27 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 17:14:14 -0500 Subject: [PATCH 13/17] made it possible to build in a docker image, which should give some consistency --- Dockerfile | 17 +++++++++++++++++ README.md | 10 +++++++++- pyproject.toml | 8 +++++++- scripts/build-docker.sh | 20 ++++++++++++++++++++ scripts/build-python.sh | 16 ++++++++++++++++ 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 Dockerfile create mode 100755 scripts/build-docker.sh create mode 100755 scripts/build-python.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..33253d9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM ubuntu:22.04 + +ARG DEBIAN_FRONTEND=noninteractive +ARG TZ=US/Eastern + +RUN apt update && \ + apt install -y \ + tzdata sudo git \ + python3.10 python3.10-venv python3.10-dev python3-pip \ + libeigen3-dev libgtest-dev libabsl-dev \ + libopencv-dev libyaml-cpp-dev libgmock-dev + +COPY scripts/install-ceres.sh /tmp/install-ceres.sh +RUN /tmp/install-ceres.sh + +WORKDIR /workdir +RUN chmod 777 /workdir \ No newline at end of file diff --git a/README.md b/README.md index 303585d..fa52396 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Check out our [wiki pages](https://github.com/yangjames/Calico/wiki) for more in You will also need the following dependencies: ``` -sudo apt install libeigen3-dev libgtest-dev libabsl-dev \ +sudo apt install -y libeigen3-dev libgtest-dev libabsl-dev \ libopencv-dev libyaml-cpp-dev libgmock-dev ``` @@ -50,6 +50,14 @@ make install pip wheel --no-deps . ``` +## Docker + +If you have docker and just want the python wheel, you can simply run: + +./scripts/build-python.sh + +and sit back and relax. Eventually you'll find the wheel in the `wheels` folder. + # License Poor sensor calibration is a problem endemic to robotics, yet it's typically not given enough attention because it tends to detract from higher level project goals. The purpose of this library is to help roboticists quickly resolve their calibration issues so that they can move on to more interesting things. This library is hereby granted the MIT license, to be used free of charge by anyone within academia or industry. diff --git a/pyproject.toml b/pyproject.toml index fcfb9f4..3da673d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,11 @@ [build-system] -requires = ["setuptools", "wheel", "pybind11"] +requires = [ + "setuptools", + "wheel", + "pybind11", + "pybind11[global]", + "cmake>=3.12" +] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] diff --git a/scripts/build-docker.sh b/scripts/build-docker.sh new file mode 100755 index 0000000..0cabbce --- /dev/null +++ b/scripts/build-docker.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +DOCKER_BASE=$(dirname "$(realpath "${BASH_SOURCE[0]}")")/.. + +if [[ $USER == "root" ]]; then + echo "Cannot be root!" + exit 1 +fi + +# build local dockerfile to run bg apps in containers +export DOCKER_BUILDKIT=1 +export UBUNTU_VERSION=22.04 + +( + cd "${DOCKER_BASE}" || exit 1 + + docker build --progress plain --pull -f Dockerfile \ + -t ghcr.io/yangjames/calico:latest \ + --build-arg UBUNTU_VERSION . +) diff --git a/scripts/build-python.sh b/scripts/build-python.sh new file mode 100755 index 0000000..5678e43 --- /dev/null +++ b/scripts/build-python.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +DOCKER_BASE=$(dirname "$(realpath "${BASH_SOURCE[0]}")")/.. + +./scripts/build-docker.sh + +# If we don't do this, we'll end up with files owned by root +# all over the place. +export USER_ID=$(id -u) +export GID=$(id -g) + +docker run --rm \ + --user $USER_ID:$GID \ + -v ./:/workdir/calico:rw \ + ghcr.io/yangjames/calico:latest \ + /bin/bash -c "python3 -m venv venv && . ./venv/bin/activate && cd calico && pip wheel --no-deps -w ./calico/wheels ." \ No newline at end of file From bab20d2ef26d19943382d98f7055a144efbbeea0 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Fri, 2 Feb 2024 17:45:27 -0500 Subject: [PATCH 14/17] fixed bug in build-python, added rudamentary Dockerfile --- .devcontainer/devcontainer.json | 28 ++++++++++++++++++++++++++++ .devcontainer/post-start-command.sh | 5 +++++ .github/dependabot.yml | 12 ++++++++++++ .gitignore | 1 + .vscode/settings.json | 1 + Dockerfile | 4 ++-- scripts/build-python.sh | 4 ++-- 7 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100755 .devcontainer/post-start-command.sh create mode 100644 .github/dependabot.yml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..369b6de --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,28 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-dockerfile +{ + "name": "Existing Dockerfile", + "build": { + // Sets the run context to one level up instead of the .devcontainer folder. + "context": "..", + // Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename. + "dockerfile": "../Dockerfile" + }, + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Uncomment the next line to run commands after the container is created. + // "postCreateCommand": "cat /etc/os-release", + + "postStartCommand": ".devcontainer/post_start_command.sh" + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "devcontainer" +} diff --git a/.devcontainer/post-start-command.sh b/.devcontainer/post-start-command.sh new file mode 100755 index 0000000..4ce93a2 --- /dev/null +++ b/.devcontainer/post-start-command.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +export DIR=$(dirname $(realpath ${BASH_SOURCE[0]})) + +python3 -m venv venv \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..f33a02c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for more information: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates +# https://containers.dev/guide/dependabot + +version: 2 +updates: + - package-ecosystem: "devcontainers" + directory: "/" + schedule: + interval: weekly diff --git a/.gitignore b/.gitignore index 9643491..e31fdf5 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ CMakeFiles *.a *.whl Makefile +venv \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 7a73a41..8bbf9fa 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,2 +1,3 @@ { + "cmake.sourceDirectory": "/wsl.localhost/Ubuntu/home/jpollak/src/jbcpollak/Calico" } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 33253d9..8107410 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,5 +13,5 @@ RUN apt update && \ COPY scripts/install-ceres.sh /tmp/install-ceres.sh RUN /tmp/install-ceres.sh -WORKDIR /workdir -RUN chmod 777 /workdir \ No newline at end of file +WORKDIR /calico +RUN chmod 777 /calico \ No newline at end of file diff --git a/scripts/build-python.sh b/scripts/build-python.sh index 5678e43..2ac2859 100755 --- a/scripts/build-python.sh +++ b/scripts/build-python.sh @@ -11,6 +11,6 @@ export GID=$(id -g) docker run --rm \ --user $USER_ID:$GID \ - -v ./:/workdir/calico:rw \ + -v ./:/calico:rw \ ghcr.io/yangjames/calico:latest \ - /bin/bash -c "python3 -m venv venv && . ./venv/bin/activate && cd calico && pip wheel --no-deps -w ./calico/wheels ." \ No newline at end of file + /bin/bash -c "python3 -m venv venv && . ./venv/bin/activate && pip wheel --no-deps -w wheels ." \ No newline at end of file From 96578c9c79b602cd05aaefc4a6b25f32e2931b0e Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Wed, 21 Feb 2024 23:56:59 -0500 Subject: [PATCH 15/17] get python code included in wheel --- .github/workflows/wheels.yml | 4 +- CMakeCache.txt | 999 ++++++++++++++++++ CTestTestfile.cmake | 40 + DartConfiguration.tcl | 105 ++ cmake_install.cmake | 161 +++ pyproject.toml | 11 +- python/CMakeLists.txt | 8 +- python/{src => }/calico.cpp | 4 +- python/calico/__init__.py | 2 + .../test/python_bindings_test.py | 0 .../{src => calico}/test/python_utils_test.py | 0 python/{src => calico}/utils.py | 4 +- setup.py | 2 +- 13 files changed, 1323 insertions(+), 17 deletions(-) create mode 100644 CMakeCache.txt create mode 100644 CTestTestfile.cmake create mode 100644 DartConfiguration.tcl create mode 100644 cmake_install.cmake rename python/{src => }/calico.cpp (99%) create mode 100644 python/calico/__init__.py rename python/{src => calico}/test/python_bindings_test.py (100%) rename python/{src => calico}/test/python_utils_test.py (100%) rename python/{src => calico}/utils.py (99%) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 7c3b5ff..71acc2a 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest defaults: run: - working-directory: ./python + working-directory: ./ steps: - uses: actions/checkout@v4 @@ -41,7 +41,7 @@ jobs: os: [ubuntu-22.04] defaults: run: - working-directory: ./python + working-directory: ./ steps: - uses: actions/checkout@v4 diff --git a/CMakeCache.txt b/CMakeCache.txt new file mode 100644 index 0000000..4316ebe --- /dev/null +++ b/CMakeCache.txt @@ -0,0 +1,999 @@ +# This is the CMakeCache file. +# For build in directory: /home/jpollak/src/jbcpollak/Calico +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a library. +BLAS_armpl_lp64_LIBRARY:FILEPATH=BLAS_armpl_lp64_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_atlas_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libatlas.so + +//Path to a library. +BLAS_blas_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libblas.so + +//Path to a library. +BLAS_blis_LIBRARY:FILEPATH=BLAS_blis_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_f77blas_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libf77blas.so + +//Path to a library. +BLAS_flexiblas_LIBRARY:FILEPATH=BLAS_flexiblas_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_goto2_LIBRARY:FILEPATH=BLAS_goto2_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_mkl_LIBRARY:FILEPATH=BLAS_mkl_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_mkl_em64t_LIBRARY:FILEPATH=BLAS_mkl_em64t_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_mkl_ia32_LIBRARY:FILEPATH=BLAS_mkl_ia32_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_mkl_intel_LIBRARY:FILEPATH=BLAS_mkl_intel_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_mkl_intel_lp64_LIBRARY:FILEPATH=BLAS_mkl_intel_lp64_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_mkl_rt_LIBRARY:FILEPATH=BLAS_mkl_rt_LIBRARY-NOTFOUND + +//Path to a library. +BLAS_openblas_LIBRARY:FILEPATH=BLAS_openblas_LIBRARY-NOTFOUND + +//Build the testing tree. +BUILD_TESTING:BOOL=ON + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11 + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=Calico + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Path to the coverage program that CTest uses for performing coverage +// inspection +COVERAGE_COMMAND:FILEPATH=/usr/bin/gcov + +//Extra command line flags to pass to the coverage tool +COVERAGE_EXTRA_FLAGS:STRING=-l + +//How many times to retry timed-out CTest submissions. +CTEST_SUBMIT_RETRY_COUNT:STRING=3 + +//How long to wait between timed-out CTest submissions. +CTEST_SUBMIT_RETRY_DELAY:STRING=5 + +CUDAToolkit_BIN_DIR:PATH=/usr/bin + +//Path to a program. +CUDAToolkit_NVCC_EXECUTABLE:FILEPATH=/usr/bin/nvcc + +//Path to a library. +CUDAToolkit_rt_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/librt.a + +//Path to a library. +CUDA_CUDART:FILEPATH=/usr/lib/x86_64-linux-gnu/libcudart.so + +//Path to a library. +CUDA_OpenCL_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libOpenCL.so + +//Path to a library. +CUDA_cublasLt_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcublasLt.so + +//Path to a library. +CUDA_cublasLt_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcublasLt_static.a + +//Path to a library. +CUDA_cublas_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcublas.so + +//Path to a library. +CUDA_cublas_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcublas_static.a + +//Path to a library. +CUDA_cuda_driver_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcuda.so + +//Path to a library. +CUDA_cudart_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcudart.so + +//Path to a library. +CUDA_cudart_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcudart_static.a + +//Path to a library. +CUDA_cufft_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcufft.so + +//Path to a library. +CUDA_cufft_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcufft_static.a + +//Path to a library. +CUDA_cufftw_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcufftw.so + +//Path to a library. +CUDA_culibos_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libculibos.a + +//Path to a library. +CUDA_cupti_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcupti.so + +//Path to a library. +CUDA_cupti_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcupti_static.a + +//Path to a library. +CUDA_curand_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcurand.so + +//Path to a library. +CUDA_curand_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcurand_static.a + +//Path to a library. +CUDA_cusolver_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcusolver.so + +//Path to a library. +CUDA_cusolver_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcusolver_static.a + +//Path to a library. +CUDA_cusparse_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcusparse.so + +//Path to a library. +CUDA_cusparse_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcusparse_static.a + +//Path to a library. +CUDA_nppc_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppc.so + +//Path to a library. +CUDA_nppc_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppc_static.a + +//Path to a library. +CUDA_nppial_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppial.so + +//Path to a library. +CUDA_nppial_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppial_static.a + +//Path to a library. +CUDA_nppicc_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppicc.so + +//Path to a library. +CUDA_nppicc_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppicc_static.a + +//Path to a library. +CUDA_nppicom_LIBRARY:FILEPATH=CUDA_nppicom_LIBRARY-NOTFOUND + +//Path to a library. +CUDA_nppicom_static_LIBRARY:FILEPATH=CUDA_nppicom_static_LIBRARY-NOTFOUND + +//Path to a library. +CUDA_nppidei_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppidei.so + +//Path to a library. +CUDA_nppidei_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppidei_static.a + +//Path to a library. +CUDA_nppif_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppif.so + +//Path to a library. +CUDA_nppif_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppif_static.a + +//Path to a library. +CUDA_nppig_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppig.so + +//Path to a library. +CUDA_nppig_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppig_static.a + +//Path to a library. +CUDA_nppim_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppim.so + +//Path to a library. +CUDA_nppim_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppim_static.a + +//Path to a library. +CUDA_nppist_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppist.so + +//Path to a library. +CUDA_nppist_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppist_static.a + +//Path to a library. +CUDA_nppisu_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppisu.so + +//Path to a library. +CUDA_nppisu_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppisu_static.a + +//Path to a library. +CUDA_nppitc_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppitc.so + +//Path to a library. +CUDA_nppitc_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppitc_static.a + +//Path to a library. +CUDA_npps_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnpps.so + +//Path to a library. +CUDA_npps_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnpps_static.a + +//Path to a library. +CUDA_nvToolsExt_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvToolsExt.so + +//Path to a library. +CUDA_nvgraph_LIBRARY:FILEPATH=CUDA_nvgraph_LIBRARY-NOTFOUND + +//Path to a library. +CUDA_nvgraph_static_LIBRARY:FILEPATH=CUDA_nvgraph_static_LIBRARY-NOTFOUND + +//Path to a library. +CUDA_nvjpeg_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvjpeg.so + +//Path to a library. +CUDA_nvjpeg_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvjpeg_static.a + +//Path to a library. +CUDA_nvml_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvidia-ml.so + +//Path to a library. +CUDA_nvrtc_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvrtc.so + +//Value Computed by CMake +Calico_BINARY_DIR:STATIC=/home/jpollak/src/jbcpollak/Calico + +//Value Computed by CMake +Calico_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +Calico_SOURCE_DIR:STATIC=/home/jpollak/src/jbcpollak/Calico + +//The directory containing a CMake configuration file for Ceres. +Ceres_DIR:PATH=/usr/local/lib/cmake/Ceres + +//Maximum time allowed before CTest will kill the test. +DART_TESTING_TIMEOUT:STRING=1500 + +//The directory containing a CMake configuration file for Eigen3. +Eigen3_DIR:PATH=/usr/share/eigen3/cmake + +//Path to a program. +GITCOMMAND:FILEPATH=/usr/bin/git + +//The directory containing a CMake configuration file for GTest. +GTest_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/GTest + +//Path to a library. +LAPACK_Accelerate_LIBRARY:FILEPATH=LAPACK_Accelerate_LIBRARY-NOTFOUND + +//Path to a library. +LAPACK_armpl_lp64_LIBRARY:FILEPATH=LAPACK_armpl_lp64_LIBRARY-NOTFOUND + +//Path to a library. +LAPACK_flame_LIBRARY:FILEPATH=LAPACK_flame_LIBRARY-NOTFOUND + +//Path to a library. +LAPACK_flexiblas_LIBRARY:FILEPATH=LAPACK_flexiblas_LIBRARY-NOTFOUND + +//Path to a library. +LAPACK_goto2_LIBRARY:FILEPATH=LAPACK_goto2_LIBRARY-NOTFOUND + +//Path to a library. +LAPACK_lapack_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/liblapack.so + +//Path to a library. +LAPACK_mkl_lapack_LIBRARY:FILEPATH=LAPACK_mkl_lapack_LIBRARY-NOTFOUND + +//Path to a library. +LAPACK_openblas_LIBRARY:FILEPATH=LAPACK_openblas_LIBRARY-NOTFOUND + +//Path to a library. +LAPACK_scs_LIBRARY:FILEPATH=LAPACK_scs_LIBRARY-NOTFOUND + +//Path to a library. +LAPACK_vecLib_LIBRARY:FILEPATH=LAPACK_vecLib_LIBRARY-NOTFOUND + +//Command to build the project +MAKECOMMAND:STRING=/usr/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" + +//Path to the memory checking command, used for memory error detection. +MEMORYCHECK_COMMAND:FILEPATH=/usr/bin/valgrind + +//File that contains suppressions for the memory checker +MEMORYCHECK_SUPPRESSIONS_FILE:FILEPATH= + +//METIS include directory +METIS_INCLUDE_DIR:PATH=METIS_INCLUDE_DIR-NOTFOUND + +//METIS debug library +METIS_LIBRARY_DEBUG:FILEPATH=METIS_LIBRARY_DEBUG-NOTFOUND + +//METIS release library +METIS_LIBRARY_RELEASE:FILEPATH=METIS_LIBRARY_RELEASE-NOTFOUND + +//The directory containing a CMake configuration file for OpenCV. +OpenCV_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/opencv4 + +//Name of the computer/site where compile is being run +SITE:STRING=Yggdrasil + +//Path to a file. +SuiteSparse_AMD_INCLUDE_DIR:PATH=/usr/include/suitesparse + +//Path to a library. +SuiteSparse_AMD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libamd.so + +//Path to a file. +SuiteSparse_CAMD_INCLUDE_DIR:PATH=/usr/include/suitesparse + +//Path to a library. +SuiteSparse_CAMD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcamd.so + +//Path to a file. +SuiteSparse_CCOLAMD_INCLUDE_DIR:PATH=/usr/include/suitesparse + +//Path to a library. +SuiteSparse_CCOLAMD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libccolamd.so + +//Path to a file. +SuiteSparse_CHOLMOD_INCLUDE_DIR:PATH=/usr/include/suitesparse + +//Path to a library. +SuiteSparse_CHOLMOD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcholmod.so + +//Path to a file. +SuiteSparse_COLAMD_INCLUDE_DIR:PATH=/usr/include/suitesparse + +//Path to a library. +SuiteSparse_COLAMD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcolamd.so + +//Path to a file. +SuiteSparse_Config_INCLUDE_DIR:PATH=/usr/include/suitesparse + +//Path to a library. +SuiteSparse_Config_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so + +//The directory containing a CMake configuration file for SuiteSparse. +SuiteSparse_DIR:PATH=SuiteSparse_DIR-NOTFOUND + +//Path to a file. +SuiteSparse_SPQR_INCLUDE_DIR:PATH=/usr/include/suitesparse + +//Path to a library. +SuiteSparse_SPQR_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libspqr.so + +//The directory containing a CMake configuration file for TBB. +TBB_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/TBB + +//The directory containing a CMake configuration file for absl. +absl_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/absl + +//Dependencies for the target +accelerometer_LIB_DEPENDS:STATIC=general;accelerometer_cost_functor;general;accelerometer_models;general;trajectory;general;world_model; + +//Dependencies for the target +accelerometer_cost_functor_LIB_DEPENDS:STATIC=general;accelerometer_models;general;trajectory; + +//Dependencies for the target +accelerometer_models_LIB_DEPENDS:STATIC=general;absl::statusor; + +//Dependencies for the target +aprilgrid_detector_LIB_DEPENDS:STATIC=general;world_model;general;apriltags;general;opencv_calib3d;general;opencv_core;general;opencv_dnn;general;opencv_features2d;general;opencv_flann;general;opencv_highgui;general;opencv_imgcodecs;general;opencv_imgproc;general;opencv_ml;general;opencv_objdetect;general;opencv_photo;general;opencv_stitching;general;opencv_video;general;opencv_videoio;general;opencv_alphamat;general;opencv_aruco;general;opencv_barcode;general;opencv_bgsegm;general;opencv_bioinspired;general;opencv_ccalib;general;opencv_datasets;general;opencv_dnn_objdetect;general;opencv_dnn_superres;general;opencv_dpm;general;opencv_face;general;opencv_freetype;general;opencv_fuzzy;general;opencv_hdf;general;opencv_hfs;general;opencv_img_hash;general;opencv_intensity_transform;general;opencv_line_descriptor;general;opencv_mcc;general;opencv_optflow;general;opencv_phase_unwrapping;general;opencv_plot;general;opencv_quality;general;opencv_rapid;general;opencv_reg;general;opencv_rgbd;general;opencv_saliency;general;opencv_shape;general;opencv_stereo;general;opencv_structured_light;general;opencv_superres;general;opencv_surface_matching;general;opencv_text;general;opencv_tracking;general;opencv_videostab;general;opencv_viz;general;opencv_wechat_qrcode;general;opencv_ximgproc;general;opencv_xobjdetect;general;opencv_xphoto;general;yaml-cpp; + +//Dependencies for the target +batch_optimizer_LIB_DEPENDS:STATIC=general;accelerometer;general;camera;general;gyroscope;general;world_model; + +//Dependencies for the target +camera_LIB_DEPENDS:STATIC=general;camera_models;general;camera_cost_functor;general;trajectory;general;world_model; + +//Dependencies for the target +camera_cost_functor_LIB_DEPENDS:STATIC=general;camera_models;general;trajectory; + +//Dependencies for the target +camera_models_LIB_DEPENDS:STATIC=general;absl::statusor; + +//The directory containing a CMake configuration file for gflags. +gflags_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/gflags + +//The directory containing a CMake configuration file for glog. +glog_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/glog + +//Dependencies for the target +gyroscope_LIB_DEPENDS:STATIC=general;gyroscope_cost_functor;general;gyroscope_models;general;trajectory;general;world_model; + +//Dependencies for the target +gyroscope_cost_functor_LIB_DEPENDS:STATIC=general;gyroscope_models;general;trajectory; + +//Dependencies for the target +gyroscope_models_LIB_DEPENDS:STATIC=general;absl::statusor; + +//Dependencies for the target +trajectory_LIB_DEPENDS:STATIC=general;absl::status;general;absl::statusor;general;Ceres::ceres; + +//Dependencies for the target +world_model_LIB_DEPENDS:STATIC=general;absl::status;general;absl::statusor;general;absl::strings;general;Ceres::ceres; + +//The directory containing a CMake configuration file for yaml-cpp. +yaml-cpp_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/yaml-cpp + + +######################## +# INTERNAL cache entries +######################## + +//Have function sgemm_ +BLAS_WORKS:INTERNAL= +//ADVANCED property for variable: BLAS_armpl_lp64_LIBRARY +BLAS_armpl_lp64_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_atlas_LIBRARY +BLAS_atlas_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_blas_LIBRARY +BLAS_blas_LIBRARY-ADVANCED:INTERNAL=1 +//Have function dgemm_ +BLAS_blas_f77blas_atlas_WORKS:INTERNAL=1 +//ADVANCED property for variable: BLAS_blis_LIBRARY +BLAS_blis_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_f77blas_LIBRARY +BLAS_f77blas_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_flexiblas_LIBRARY +BLAS_flexiblas_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_goto2_LIBRARY +BLAS_goto2_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_LIBRARY +BLAS_mkl_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_em64t_LIBRARY +BLAS_mkl_em64t_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_ia32_LIBRARY +BLAS_mkl_ia32_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_intel_LIBRARY +BLAS_mkl_intel_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_intel_lp64_LIBRARY +BLAS_mkl_intel_lp64_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_mkl_rt_LIBRARY +BLAS_mkl_rt_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: BLAS_openblas_LIBRARY +BLAS_openblas_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/jpollak/src/jbcpollak/Calico +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=22 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//ADVANCED property for variable: CMAKE_CTEST_COMMAND +CMAKE_CTEST_COMMAND-ADVANCED:INTERNAL=1 +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/jpollak/src/jbcpollak/Calico +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.22 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: COVERAGE_COMMAND +COVERAGE_COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: COVERAGE_EXTRA_FLAGS +COVERAGE_EXTRA_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CTEST_SUBMIT_RETRY_COUNT +CTEST_SUBMIT_RETRY_COUNT-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CTEST_SUBMIT_RETRY_DELAY +CTEST_SUBMIT_RETRY_DELAY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDAToolkit_BIN_DIR +CUDAToolkit_BIN_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDAToolkit_NVCC_EXECUTABLE +CUDAToolkit_NVCC_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDAToolkit_rt_LIBRARY +CUDAToolkit_rt_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_CUDART +CUDA_CUDART-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_OpenCL_LIBRARY +CUDA_OpenCL_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cublasLt_LIBRARY +CUDA_cublasLt_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cublasLt_static_LIBRARY +CUDA_cublasLt_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cublas_LIBRARY +CUDA_cublas_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cublas_static_LIBRARY +CUDA_cublas_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cuda_driver_LIBRARY +CUDA_cuda_driver_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cudart_LIBRARY +CUDA_cudart_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cudart_static_LIBRARY +CUDA_cudart_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cufft_LIBRARY +CUDA_cufft_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cufft_static_LIBRARY +CUDA_cufft_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cufftw_LIBRARY +CUDA_cufftw_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_culibos_LIBRARY +CUDA_culibos_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cupti_LIBRARY +CUDA_cupti_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cupti_static_LIBRARY +CUDA_cupti_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_curand_LIBRARY +CUDA_curand_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_curand_static_LIBRARY +CUDA_curand_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cusolver_LIBRARY +CUDA_cusolver_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cusolver_static_LIBRARY +CUDA_cusolver_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cusparse_LIBRARY +CUDA_cusparse_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_cusparse_static_LIBRARY +CUDA_cusparse_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppc_LIBRARY +CUDA_nppc_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppc_static_LIBRARY +CUDA_nppc_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppial_LIBRARY +CUDA_nppial_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppial_static_LIBRARY +CUDA_nppial_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppicc_LIBRARY +CUDA_nppicc_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppicc_static_LIBRARY +CUDA_nppicc_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppicom_LIBRARY +CUDA_nppicom_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppicom_static_LIBRARY +CUDA_nppicom_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppidei_LIBRARY +CUDA_nppidei_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppidei_static_LIBRARY +CUDA_nppidei_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppif_LIBRARY +CUDA_nppif_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppif_static_LIBRARY +CUDA_nppif_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppig_LIBRARY +CUDA_nppig_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppig_static_LIBRARY +CUDA_nppig_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppim_LIBRARY +CUDA_nppim_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppim_static_LIBRARY +CUDA_nppim_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppist_LIBRARY +CUDA_nppist_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppist_static_LIBRARY +CUDA_nppist_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppisu_LIBRARY +CUDA_nppisu_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppisu_static_LIBRARY +CUDA_nppisu_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppitc_LIBRARY +CUDA_nppitc_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nppitc_static_LIBRARY +CUDA_nppitc_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_npps_LIBRARY +CUDA_npps_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_npps_static_LIBRARY +CUDA_npps_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nvToolsExt_LIBRARY +CUDA_nvToolsExt_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nvgraph_LIBRARY +CUDA_nvgraph_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nvgraph_static_LIBRARY +CUDA_nvgraph_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nvjpeg_LIBRARY +CUDA_nvjpeg_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nvjpeg_static_LIBRARY +CUDA_nvjpeg_static_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nvml_LIBRARY +CUDA_nvml_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CUDA_nvrtc_LIBRARY +CUDA_nvrtc_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DART_TESTING_TIMEOUT +DART_TESTING_TIMEOUT-ADVANCED:INTERNAL=1 +//Details about finding CUDAToolkit +FIND_PACKAGE_MESSAGE_DETAILS_CUDAToolkit:INTERNAL=[/usr/include][/usr/lib/x86_64-linux-gnu/libcudart.so][/usr/bin][v11.5.119(11.5.119)] +//Details about finding GTest +FIND_PACKAGE_MESSAGE_DETAILS_GTest:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/GTest/GTestConfig.cmake][c ][v1.11.0()] +//Details about finding OpenCV +FIND_PACKAGE_MESSAGE_DETAILS_OpenCV:INTERNAL=[/usr][v4.5.4()] +//Details about finding SuiteSparse +FIND_PACKAGE_MESSAGE_DETAILS_SuiteSparse:INTERNAL=[/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libamd.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libcamd.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libccolamd.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libcholmod.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libcolamd.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libspqr.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so][cfound components: AMD CAMD CCOLAMD CHOLMOD COLAMD SPQR Config ][v5.10.1(5.10.1)] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//ADVANCED property for variable: GITCOMMAND +GITCOMMAND-ADVANCED:INTERNAL=1 +//Have library rt +HAVE_LIBRT:INTERNAL=1 +//ADVANCED property for variable: LAPACK_Accelerate_LIBRARY +LAPACK_Accelerate_LIBRARY-ADVANCED:INTERNAL=1 +//Have function cheev_ +LAPACK_WORKS:INTERNAL= +//ADVANCED property for variable: LAPACK_armpl_lp64_LIBRARY +LAPACK_armpl_lp64_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LAPACK_flame_LIBRARY +LAPACK_flame_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LAPACK_flexiblas_LIBRARY +LAPACK_flexiblas_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LAPACK_goto2_LIBRARY +LAPACK_goto2_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LAPACK_lapack_LIBRARY +LAPACK_lapack_LIBRARY-ADVANCED:INTERNAL=1 +//Have function cheev_ +LAPACK_lapack_WORKS:INTERNAL=1 +//Have function cheev_ +LAPACK_lapack_deps_WORKS:INTERNAL= +//ADVANCED property for variable: LAPACK_mkl_lapack_LIBRARY +LAPACK_mkl_lapack_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LAPACK_openblas_LIBRARY +LAPACK_openblas_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LAPACK_scs_LIBRARY +LAPACK_scs_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LAPACK_vecLib_LIBRARY +LAPACK_vecLib_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MAKECOMMAND +MAKECOMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MEMORYCHECK_COMMAND +MEMORYCHECK_COMMAND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: MEMORYCHECK_SUPPRESSIONS_FILE +MEMORYCHECK_SUPPRESSIONS_FILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: METIS_INCLUDE_DIR +METIS_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: METIS_LIBRARY_DEBUG +METIS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: METIS_LIBRARY_RELEASE +METIS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SITE +SITE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_AMD_INCLUDE_DIR +SuiteSparse_AMD_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_AMD_LIBRARY +SuiteSparse_AMD_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_CAMD_INCLUDE_DIR +SuiteSparse_CAMD_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_CAMD_LIBRARY +SuiteSparse_CAMD_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_CCOLAMD_INCLUDE_DIR +SuiteSparse_CCOLAMD_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_CCOLAMD_LIBRARY +SuiteSparse_CCOLAMD_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_CHOLMOD_INCLUDE_DIR +SuiteSparse_CHOLMOD_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_CHOLMOD_LIBRARY +SuiteSparse_CHOLMOD_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_COLAMD_INCLUDE_DIR +SuiteSparse_COLAMD_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_COLAMD_LIBRARY +SuiteSparse_COLAMD_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_Config_INCLUDE_DIR +SuiteSparse_Config_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_Config_LIBRARY +SuiteSparse_Config_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_SPQR_INCLUDE_DIR +SuiteSparse_SPQR_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SuiteSparse_SPQR_LIBRARY +SuiteSparse_SPQR_LIBRARY-ADVANCED:INTERNAL=1 + diff --git a/CTestTestfile.cmake b/CTestTestfile.cmake new file mode 100644 index 0000000..474ccd1 --- /dev/null +++ b/CTestTestfile.cmake @@ -0,0 +1,40 @@ +# CMake generated Testfile for +# Source directory: /home/jpollak/src/jbcpollak/Calico +# Build directory: /home/jpollak/src/jbcpollak/Calico +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(TypeDefsTest "typedefs_test") +set_tests_properties(TypeDefsTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;282;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(GeometryTest "geometry_test") +set_tests_properties(GeometryTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;295;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(BSplineTest "bspline_test") +set_tests_properties(BSplineTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;309;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(TrajectoryTest "trajectory_test") +set_tests_properties(TrajectoryTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;321;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(WorldModelTest "world_model_test") +set_tests_properties(WorldModelTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;333;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(GyroscopeModelsTest "gyroscope_models_test") +set_tests_properties(GyroscopeModelsTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;345;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(GyroscopeCostFunctorTest "gyroscope_cost_functor_test") +set_tests_properties(GyroscopeCostFunctorTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;357;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(GyroscopeLibTest "gyroscope_test") +set_tests_properties(GyroscopeLibTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;369;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(AccelerometerModelsTest "accelerometer_models_test") +set_tests_properties(AccelerometerModelsTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;381;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(AccelerometerCostFunctorTest "accelerometer_cost_functor_test") +set_tests_properties(AccelerometerCostFunctorTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;393;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(AccelerometerLibTest "accelerometer_test") +set_tests_properties(AccelerometerLibTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;405;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(CameraModelsTest "camera_models_test") +set_tests_properties(CameraModelsTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;417;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(CameraCostFunctorTest "camera_cost_functor_test") +set_tests_properties(CameraCostFunctorTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;429;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(CameraLibTest "camera_test") +set_tests_properties(CameraLibTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;441;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(BatchOptimizerTest "batch_optimizer_test") +set_tests_properties(BatchOptimizerTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;455;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(python_bindings_test "python3" "-m" "pytest" "/home/jpollak/src/jbcpollak/Calico/calico/test/python_bindings_test.py") +set_tests_properties(python_bindings_test PROPERTIES ENVIRONMENT "PYTHONPATH=/home/jpollak/src/jbcpollak/Calico:" WORKING_DIRECTORY "/home/jpollak/src/jbcpollak/Calico/calico/test" _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;457;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") +add_test(python_utils_test "python3" "-m" "pytest" "/home/jpollak/src/jbcpollak/Calico/calico/test/python_utils_test.py") +set_tests_properties(python_utils_test PROPERTIES ENVIRONMENT "PYTHONPATH=/home/jpollak/src/jbcpollak/Calico:" WORKING_DIRECTORY "/home/jpollak/src/jbcpollak/Calico/calico/test" _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;463;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") diff --git a/DartConfiguration.tcl b/DartConfiguration.tcl new file mode 100644 index 0000000..eeeb453 --- /dev/null +++ b/DartConfiguration.tcl @@ -0,0 +1,105 @@ +# This file is configured by CMake automatically as DartConfiguration.tcl +# If you choose not to use CMake, this file may be hand configured, by +# filling in the required variables. + + +# Configuration directories and files +SourceDirectory: /home/jpollak/src/jbcpollak/Calico +BuildDirectory: /home/jpollak/src/jbcpollak/Calico + +# Where to place the cost data store +CostDataFile: + +# Site is something like machine.domain, i.e. pragmatic.crd +Site: Yggdrasil + +# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ +BuildName: Linux-c++ + +# Subprojects +LabelsForSubprojects: + +# Submission information +SubmitURL: http:// + +# Dashboard start time +NightlyStartTime: 00:00:00 EDT + +# Commands for the build/test/submit cycle +ConfigureCommand: "/usr/bin/cmake" "/home/jpollak/src/jbcpollak/Calico" +MakeCommand: /usr/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" +DefaultCTestConfigurationType: Release + +# version control +UpdateVersionOnly: + +# CVS options +# Default is "-d -P -A" +CVSCommand: +CVSUpdateOptions: + +# Subversion options +SVNCommand: +SVNOptions: +SVNUpdateOptions: + +# Git options +GITCommand: /usr/bin/git +GITInitSubmodules: +GITUpdateOptions: +GITUpdateCustom: + +# Perforce options +P4Command: +P4Client: +P4Options: +P4UpdateOptions: +P4UpdateCustom: + +# Generic update command +UpdateCommand: /usr/bin/git +UpdateOptions: +UpdateType: git + +# Compiler info +Compiler: /usr/bin/c++ +CompilerVersion: 11.4.0 + +# Dynamic analysis (MemCheck) +PurifyCommand: +ValgrindCommand: +ValgrindCommandOptions: +DrMemoryCommand: +DrMemoryCommandOptions: +CudaSanitizerCommand: +CudaSanitizerCommandOptions: +MemoryCheckType: +MemoryCheckSanitizerOptions: +MemoryCheckCommand: /usr/bin/valgrind +MemoryCheckCommandOptions: +MemoryCheckSuppressionFile: + +# Coverage +CoverageCommand: /usr/bin/gcov +CoverageExtraFlags: -l + +# Testing options +# TimeOut is the amount of time in seconds to wait for processes +# to complete during testing. After TimeOut seconds, the +# process will be summarily terminated. +# Currently set to 25 minutes +TimeOut: 1500 + +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: + +UseLaunchers: +CurlOptions: +# warning, if you add new options here that have to do with submit, +# you have to update cmCTestSubmitCommand.cxx + +# For CTest submissions that timeout, these options +# specify behavior for retrying the submission +CTestSubmitRetryDelay: 5 +CTestSubmitRetryCount: 3 diff --git a/cmake_install.cmake b/cmake_install.cmake new file mode 100644 index 0000000..3142bfa --- /dev/null +++ b/cmake_install.cmake @@ -0,0 +1,161 @@ +# Install script for directory: /home/jpollak/src/jbcpollak/Calico + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libaccelerometer.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libaccelerometer_cost_functor.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libaccelerometer_models.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libapriltags.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libbatch_optimizer.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libcamera.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libcamera_cost_functor.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libcamera_models.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libgyroscope.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libgyroscope_cost_functor.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libgyroscope_models.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libtrajectory.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libworld_model.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libaprilgrid_detector.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/calico/CalicoConfig.cmake") + file(DIFFERENT EXPORT_FILE_CHANGED FILES + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/calico/CalicoConfig.cmake" + "/home/jpollak/src/jbcpollak/Calico/CMakeFiles/Export/lib/cmake/calico/CalicoConfig.cmake") + if(EXPORT_FILE_CHANGED) + file(GLOB OLD_CONFIG_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/calico/CalicoConfig-*.cmake") + if(OLD_CONFIG_FILES) + message(STATUS "Old export file \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/calico/CalicoConfig.cmake\" will be replaced. Removing files [${OLD_CONFIG_FILES}].") + file(REMOVE ${OLD_CONFIG_FILES}) + endif() + endif() + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/calico" TYPE FILE FILES "/home/jpollak/src/jbcpollak/Calico/CMakeFiles/Export/lib/cmake/calico/CalicoConfig.cmake") + if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^()$") + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/calico" TYPE FILE FILES "/home/jpollak/src/jbcpollak/Calico/CMakeFiles/Export/lib/cmake/calico/CalicoConfig-noconfig.cmake") + endif() +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/calico" TYPE FILE FILES + "/home/jpollak/src/jbcpollak/Calico/calico/profiler.h" + "/home/jpollak/src/jbcpollak/Calico/calico/trajectory.h" + "/home/jpollak/src/jbcpollak/Calico/calico/bspline.h" + "/home/jpollak/src/jbcpollak/Calico/calico/test_utils.h" + "/home/jpollak/src/jbcpollak/Calico/calico/optimization_utils.h" + "/home/jpollak/src/jbcpollak/Calico/calico/batch_optimizer.h" + "/home/jpollak/src/jbcpollak/Calico/calico/typedefs.h" + "/home/jpollak/src/jbcpollak/Calico/calico/matchers.h" + "/home/jpollak/src/jbcpollak/Calico/calico/status_builder.h" + "/home/jpollak/src/jbcpollak/Calico/calico/geometry.h" + "/home/jpollak/src/jbcpollak/Calico/calico/world_model.h" + "/home/jpollak/src/jbcpollak/Calico/calico/statusor_macros.h" + ) +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/calico/sensors" TYPE FILE FILES + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/gyroscope_models.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/camera.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/accelerometer_cost_functor.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/sensor_base.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/gyroscope_cost_functor.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/camera_cost_functor.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/camera_models.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/accelerometer_models.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/gyroscope.h" + "/home/jpollak/src/jbcpollak/Calico/calico/sensors/accelerometer.h" + ) +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/jpollak/src/jbcpollak/Calico/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/pyproject.toml b/pyproject.toml index 3da673d..410282d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,13 +8,12 @@ requires = [ ] build-backend = "setuptools.build_meta" -[tool.setuptools.packages.find] -where = ["."] -include = ["."] -exclude = ["demos"] +[tool.setuptools] +packages= ["calico"] +package-dir = {"" = "python"} [project] -name = "calico-python" +name = "calico" version = "0.1.0" description="A visual-inertial calibration library designed for rapid problem construction and debugging." readme = "README.md" @@ -44,4 +43,4 @@ test = [ [project.urls] -"Homepage" = "https://github.com/yangjames/Calico.git" \ No newline at end of file +"Homepage" = "https://github.com/yangjames/Calico.git" diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 108fa3f..4c8deb6 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -13,9 +13,9 @@ include_directories( ${CMAKE_CURRENT_LIST_DIR} ) -pybind11_add_module(calico src/calico.cpp) +pybind11_add_module(native calico.cpp) target_link_libraries( - calico PUBLIC + native PUBLIC Eigen3::Eigen accelerometer aprilgrid_detector @@ -29,5 +29,5 @@ target_link_libraries( # CALICO_VERSION_INFO is defined by setup.py and passed into the C++ code as a # define (VERSION_INFO) here. -target_compile_definitions(calico - PRIVATE VERSION_INFO=${CALICO_VERSION_INFO}) \ No newline at end of file +target_compile_definitions(native + PRIVATE VERSION_INFO=${CALICO_VERSION_INFO}) diff --git a/python/src/calico.cpp b/python/calico.cpp similarity index 99% rename from python/src/calico.cpp rename to python/calico.cpp index 8b2d59e..a4c1ddd 100644 --- a/python/src/calico.cpp +++ b/python/calico.cpp @@ -15,8 +15,8 @@ #include "pybind11/stl.h" -PYBIND11_MODULE(calico, m) { - m.doc() = "calico"; +PYBIND11_MODULE(native, m) { + m.doc() = "Native code for calico"; namespace py = pybind11; using namespace calico; using namespace calico::chart_detectors; diff --git a/python/calico/__init__.py b/python/calico/__init__.py new file mode 100644 index 0000000..71c3e32 --- /dev/null +++ b/python/calico/__init__.py @@ -0,0 +1,2 @@ +from .native import * +from .utils import * \ No newline at end of file diff --git a/python/src/test/python_bindings_test.py b/python/calico/test/python_bindings_test.py similarity index 100% rename from python/src/test/python_bindings_test.py rename to python/calico/test/python_bindings_test.py diff --git a/python/src/test/python_utils_test.py b/python/calico/test/python_utils_test.py similarity index 100% rename from python/src/test/python_utils_test.py rename to python/calico/test/python_utils_test.py diff --git a/python/src/utils.py b/python/calico/utils.py similarity index 99% rename from python/src/utils.py rename to python/calico/utils.py index 610e5ad..d964394 100644 --- a/python/src/utils.py +++ b/python/calico/utils.py @@ -1,7 +1,7 @@ """@package Python utils Utility functions for calico python bindings. """ -import calico +import calico.native as calico import cv2 import numpy as np @@ -123,7 +123,7 @@ def InitializePinholeAndPoses( [ 0 fy cy] [ 0 0 1] R_chart_camera: - List of 3x3 + List of 3x3 """ V = np.zeros((2*len(all_detections), 6)) H_camera_chart = [] diff --git a/setup.py b/setup.py index baaf1d1..5a96583 100644 --- a/setup.py +++ b/setup.py @@ -125,7 +125,7 @@ def build_extension(self, ext: CMakeExtension) -> None: # The information here can also be placed in setup.cfg - better separation of # logic and declaration, and simpler if you include description/version in a file. setup( - ext_modules=[CMakeExtension("calico", "python")], + ext_modules=[CMakeExtension("calico.native", "python")], cmdclass={"build_ext": CMakeBuild}, zip_safe=False, ) From 5a3d8eb53b04e24f5de6c802e6831a6ee82847cd Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Wed, 21 Feb 2024 23:58:36 -0500 Subject: [PATCH 16/17] don't track temp files --- .gitignore | 6 +- CMakeCache.txt | 999 ------------------------------------------ CTestTestfile.cmake | 40 -- DartConfiguration.tcl | 105 ----- cmake_install.cmake | 161 ------- 5 files changed, 5 insertions(+), 1306 deletions(-) delete mode 100644 CMakeCache.txt delete mode 100644 CTestTestfile.cmake delete mode 100644 DartConfiguration.tcl delete mode 100644 cmake_install.cmake diff --git a/.gitignore b/.gitignore index e31fdf5..78d96b7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,8 @@ CMakeFiles *.a *.whl Makefile -venv \ No newline at end of file +venv +cmake_install.cmake +CMakeCache.txt +CTestTestfile.cmake +DartConfiguration.tcl diff --git a/CMakeCache.txt b/CMakeCache.txt deleted file mode 100644 index 4316ebe..0000000 --- a/CMakeCache.txt +++ /dev/null @@ -1,999 +0,0 @@ -# This is the CMakeCache file. -# For build in directory: /home/jpollak/src/jbcpollak/Calico -# It was generated by CMake: /usr/bin/cmake -# You can edit this file to change values found and used by cmake. -# If you do not want to change any of the values, simply exit the editor. -# If you do want to change a value, simply edit, save, and exit the editor. -# The syntax for the file is as follows: -# KEY:TYPE=VALUE -# KEY is the name of a variable in the cache. -# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. -# VALUE is the current value for the KEY. - -######################## -# EXTERNAL cache entries -######################## - -//Path to a library. -BLAS_armpl_lp64_LIBRARY:FILEPATH=BLAS_armpl_lp64_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_atlas_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libatlas.so - -//Path to a library. -BLAS_blas_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libblas.so - -//Path to a library. -BLAS_blis_LIBRARY:FILEPATH=BLAS_blis_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_f77blas_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libf77blas.so - -//Path to a library. -BLAS_flexiblas_LIBRARY:FILEPATH=BLAS_flexiblas_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_goto2_LIBRARY:FILEPATH=BLAS_goto2_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_mkl_LIBRARY:FILEPATH=BLAS_mkl_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_mkl_em64t_LIBRARY:FILEPATH=BLAS_mkl_em64t_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_mkl_ia32_LIBRARY:FILEPATH=BLAS_mkl_ia32_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_mkl_intel_LIBRARY:FILEPATH=BLAS_mkl_intel_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_mkl_intel_lp64_LIBRARY:FILEPATH=BLAS_mkl_intel_lp64_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_mkl_rt_LIBRARY:FILEPATH=BLAS_mkl_rt_LIBRARY-NOTFOUND - -//Path to a library. -BLAS_openblas_LIBRARY:FILEPATH=BLAS_openblas_LIBRARY-NOTFOUND - -//Build the testing tree. -BUILD_TESTING:BOOL=ON - -//Path to a program. -CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line - -//Path to a program. -CMAKE_AR:FILEPATH=/usr/bin/ar - -//Choose the type of build, options are: None Debug Release RelWithDebInfo -// MinSizeRel ... -CMAKE_BUILD_TYPE:STRING= - -//Enable/Disable color output during build. -CMAKE_COLOR_MAKEFILE:BOOL=ON - -//CXX compiler -CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ - -//A wrapper around 'ar' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11 - -//A wrapper around 'ranlib' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11 - -//Flags used by the CXX compiler during all build types. -CMAKE_CXX_FLAGS:STRING= - -//Flags used by the CXX compiler during DEBUG builds. -CMAKE_CXX_FLAGS_DEBUG:STRING=-g - -//Flags used by the CXX compiler during MINSIZEREL builds. -CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the CXX compiler during RELEASE builds. -CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the CXX compiler during RELWITHDEBINFO builds. -CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//C compiler -CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc - -//A wrapper around 'ar' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11 - -//A wrapper around 'ranlib' adding the appropriate '--plugin' option -// for the GCC compiler -CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11 - -//Flags used by the C compiler during all build types. -CMAKE_C_FLAGS:STRING= - -//Flags used by the C compiler during DEBUG builds. -CMAKE_C_FLAGS_DEBUG:STRING=-g - -//Flags used by the C compiler during MINSIZEREL builds. -CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the C compiler during RELEASE builds. -CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the C compiler during RELWITHDEBINFO builds. -CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//Path to a program. -CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND - -//Flags used by the linker during all build types. -CMAKE_EXE_LINKER_FLAGS:STRING= - -//Flags used by the linker during DEBUG builds. -CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during MINSIZEREL builds. -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during RELEASE builds. -CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during RELWITHDEBINFO builds. -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Enable/Disable output of compile commands during generation. -CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= - -//Install path prefix, prepended onto install directories. -CMAKE_INSTALL_PREFIX:PATH=/usr/local - -//Path to a program. -CMAKE_LINKER:FILEPATH=/usr/bin/ld - -//Path to a program. -CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake - -//Flags used by the linker during the creation of modules during -// all build types. -CMAKE_MODULE_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of modules during -// DEBUG builds. -CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of modules during -// MINSIZEREL builds. -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of modules during -// RELEASE builds. -CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of modules during -// RELWITHDEBINFO builds. -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_NM:FILEPATH=/usr/bin/nm - -//Path to a program. -CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy - -//Path to a program. -CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump - -//Value Computed by CMake -CMAKE_PROJECT_DESCRIPTION:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_HOMEPAGE_URL:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_NAME:STATIC=Calico - -//Path to a program. -CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib - -//Path to a program. -CMAKE_READELF:FILEPATH=/usr/bin/readelf - -//Flags used by the linker during the creation of shared libraries -// during all build types. -CMAKE_SHARED_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of shared libraries -// during DEBUG builds. -CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of shared libraries -// during MINSIZEREL builds. -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELEASE builds. -CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELWITHDEBINFO builds. -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//If set, runtime paths are not added when installing shared libraries, -// but are added when building. -CMAKE_SKIP_INSTALL_RPATH:BOOL=NO - -//If set, runtime paths are not added when using shared libraries. -CMAKE_SKIP_RPATH:BOOL=NO - -//Flags used by the linker during the creation of static libraries -// during all build types. -CMAKE_STATIC_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of static libraries -// during DEBUG builds. -CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of static libraries -// during MINSIZEREL builds. -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELEASE builds. -CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELWITHDEBINFO builds. -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_STRIP:FILEPATH=/usr/bin/strip - -//If this value is on, makefiles will be generated without the -// .SILENT directive, and all commands will be echoed to the console -// during the make. This is useful for debugging only. With Visual -// Studio IDE projects all commands are done without /nologo. -CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE - -//Path to the coverage program that CTest uses for performing coverage -// inspection -COVERAGE_COMMAND:FILEPATH=/usr/bin/gcov - -//Extra command line flags to pass to the coverage tool -COVERAGE_EXTRA_FLAGS:STRING=-l - -//How many times to retry timed-out CTest submissions. -CTEST_SUBMIT_RETRY_COUNT:STRING=3 - -//How long to wait between timed-out CTest submissions. -CTEST_SUBMIT_RETRY_DELAY:STRING=5 - -CUDAToolkit_BIN_DIR:PATH=/usr/bin - -//Path to a program. -CUDAToolkit_NVCC_EXECUTABLE:FILEPATH=/usr/bin/nvcc - -//Path to a library. -CUDAToolkit_rt_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/librt.a - -//Path to a library. -CUDA_CUDART:FILEPATH=/usr/lib/x86_64-linux-gnu/libcudart.so - -//Path to a library. -CUDA_OpenCL_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libOpenCL.so - -//Path to a library. -CUDA_cublasLt_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcublasLt.so - -//Path to a library. -CUDA_cublasLt_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcublasLt_static.a - -//Path to a library. -CUDA_cublas_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcublas.so - -//Path to a library. -CUDA_cublas_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcublas_static.a - -//Path to a library. -CUDA_cuda_driver_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcuda.so - -//Path to a library. -CUDA_cudart_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcudart.so - -//Path to a library. -CUDA_cudart_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcudart_static.a - -//Path to a library. -CUDA_cufft_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcufft.so - -//Path to a library. -CUDA_cufft_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcufft_static.a - -//Path to a library. -CUDA_cufftw_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcufftw.so - -//Path to a library. -CUDA_culibos_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libculibos.a - -//Path to a library. -CUDA_cupti_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcupti.so - -//Path to a library. -CUDA_cupti_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcupti_static.a - -//Path to a library. -CUDA_curand_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcurand.so - -//Path to a library. -CUDA_curand_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcurand_static.a - -//Path to a library. -CUDA_cusolver_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcusolver.so - -//Path to a library. -CUDA_cusolver_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcusolver_static.a - -//Path to a library. -CUDA_cusparse_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcusparse.so - -//Path to a library. -CUDA_cusparse_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcusparse_static.a - -//Path to a library. -CUDA_nppc_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppc.so - -//Path to a library. -CUDA_nppc_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppc_static.a - -//Path to a library. -CUDA_nppial_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppial.so - -//Path to a library. -CUDA_nppial_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppial_static.a - -//Path to a library. -CUDA_nppicc_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppicc.so - -//Path to a library. -CUDA_nppicc_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppicc_static.a - -//Path to a library. -CUDA_nppicom_LIBRARY:FILEPATH=CUDA_nppicom_LIBRARY-NOTFOUND - -//Path to a library. -CUDA_nppicom_static_LIBRARY:FILEPATH=CUDA_nppicom_static_LIBRARY-NOTFOUND - -//Path to a library. -CUDA_nppidei_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppidei.so - -//Path to a library. -CUDA_nppidei_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppidei_static.a - -//Path to a library. -CUDA_nppif_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppif.so - -//Path to a library. -CUDA_nppif_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppif_static.a - -//Path to a library. -CUDA_nppig_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppig.so - -//Path to a library. -CUDA_nppig_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppig_static.a - -//Path to a library. -CUDA_nppim_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppim.so - -//Path to a library. -CUDA_nppim_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppim_static.a - -//Path to a library. -CUDA_nppist_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppist.so - -//Path to a library. -CUDA_nppist_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppist_static.a - -//Path to a library. -CUDA_nppisu_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppisu.so - -//Path to a library. -CUDA_nppisu_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppisu_static.a - -//Path to a library. -CUDA_nppitc_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppitc.so - -//Path to a library. -CUDA_nppitc_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnppitc_static.a - -//Path to a library. -CUDA_npps_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnpps.so - -//Path to a library. -CUDA_npps_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnpps_static.a - -//Path to a library. -CUDA_nvToolsExt_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvToolsExt.so - -//Path to a library. -CUDA_nvgraph_LIBRARY:FILEPATH=CUDA_nvgraph_LIBRARY-NOTFOUND - -//Path to a library. -CUDA_nvgraph_static_LIBRARY:FILEPATH=CUDA_nvgraph_static_LIBRARY-NOTFOUND - -//Path to a library. -CUDA_nvjpeg_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvjpeg.so - -//Path to a library. -CUDA_nvjpeg_static_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvjpeg_static.a - -//Path to a library. -CUDA_nvml_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvidia-ml.so - -//Path to a library. -CUDA_nvrtc_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libnvrtc.so - -//Value Computed by CMake -Calico_BINARY_DIR:STATIC=/home/jpollak/src/jbcpollak/Calico - -//Value Computed by CMake -Calico_IS_TOP_LEVEL:STATIC=ON - -//Value Computed by CMake -Calico_SOURCE_DIR:STATIC=/home/jpollak/src/jbcpollak/Calico - -//The directory containing a CMake configuration file for Ceres. -Ceres_DIR:PATH=/usr/local/lib/cmake/Ceres - -//Maximum time allowed before CTest will kill the test. -DART_TESTING_TIMEOUT:STRING=1500 - -//The directory containing a CMake configuration file for Eigen3. -Eigen3_DIR:PATH=/usr/share/eigen3/cmake - -//Path to a program. -GITCOMMAND:FILEPATH=/usr/bin/git - -//The directory containing a CMake configuration file for GTest. -GTest_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/GTest - -//Path to a library. -LAPACK_Accelerate_LIBRARY:FILEPATH=LAPACK_Accelerate_LIBRARY-NOTFOUND - -//Path to a library. -LAPACK_armpl_lp64_LIBRARY:FILEPATH=LAPACK_armpl_lp64_LIBRARY-NOTFOUND - -//Path to a library. -LAPACK_flame_LIBRARY:FILEPATH=LAPACK_flame_LIBRARY-NOTFOUND - -//Path to a library. -LAPACK_flexiblas_LIBRARY:FILEPATH=LAPACK_flexiblas_LIBRARY-NOTFOUND - -//Path to a library. -LAPACK_goto2_LIBRARY:FILEPATH=LAPACK_goto2_LIBRARY-NOTFOUND - -//Path to a library. -LAPACK_lapack_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/liblapack.so - -//Path to a library. -LAPACK_mkl_lapack_LIBRARY:FILEPATH=LAPACK_mkl_lapack_LIBRARY-NOTFOUND - -//Path to a library. -LAPACK_openblas_LIBRARY:FILEPATH=LAPACK_openblas_LIBRARY-NOTFOUND - -//Path to a library. -LAPACK_scs_LIBRARY:FILEPATH=LAPACK_scs_LIBRARY-NOTFOUND - -//Path to a library. -LAPACK_vecLib_LIBRARY:FILEPATH=LAPACK_vecLib_LIBRARY-NOTFOUND - -//Command to build the project -MAKECOMMAND:STRING=/usr/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" - -//Path to the memory checking command, used for memory error detection. -MEMORYCHECK_COMMAND:FILEPATH=/usr/bin/valgrind - -//File that contains suppressions for the memory checker -MEMORYCHECK_SUPPRESSIONS_FILE:FILEPATH= - -//METIS include directory -METIS_INCLUDE_DIR:PATH=METIS_INCLUDE_DIR-NOTFOUND - -//METIS debug library -METIS_LIBRARY_DEBUG:FILEPATH=METIS_LIBRARY_DEBUG-NOTFOUND - -//METIS release library -METIS_LIBRARY_RELEASE:FILEPATH=METIS_LIBRARY_RELEASE-NOTFOUND - -//The directory containing a CMake configuration file for OpenCV. -OpenCV_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/opencv4 - -//Name of the computer/site where compile is being run -SITE:STRING=Yggdrasil - -//Path to a file. -SuiteSparse_AMD_INCLUDE_DIR:PATH=/usr/include/suitesparse - -//Path to a library. -SuiteSparse_AMD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libamd.so - -//Path to a file. -SuiteSparse_CAMD_INCLUDE_DIR:PATH=/usr/include/suitesparse - -//Path to a library. -SuiteSparse_CAMD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcamd.so - -//Path to a file. -SuiteSparse_CCOLAMD_INCLUDE_DIR:PATH=/usr/include/suitesparse - -//Path to a library. -SuiteSparse_CCOLAMD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libccolamd.so - -//Path to a file. -SuiteSparse_CHOLMOD_INCLUDE_DIR:PATH=/usr/include/suitesparse - -//Path to a library. -SuiteSparse_CHOLMOD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcholmod.so - -//Path to a file. -SuiteSparse_COLAMD_INCLUDE_DIR:PATH=/usr/include/suitesparse - -//Path to a library. -SuiteSparse_COLAMD_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcolamd.so - -//Path to a file. -SuiteSparse_Config_INCLUDE_DIR:PATH=/usr/include/suitesparse - -//Path to a library. -SuiteSparse_Config_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so - -//The directory containing a CMake configuration file for SuiteSparse. -SuiteSparse_DIR:PATH=SuiteSparse_DIR-NOTFOUND - -//Path to a file. -SuiteSparse_SPQR_INCLUDE_DIR:PATH=/usr/include/suitesparse - -//Path to a library. -SuiteSparse_SPQR_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libspqr.so - -//The directory containing a CMake configuration file for TBB. -TBB_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/TBB - -//The directory containing a CMake configuration file for absl. -absl_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/absl - -//Dependencies for the target -accelerometer_LIB_DEPENDS:STATIC=general;accelerometer_cost_functor;general;accelerometer_models;general;trajectory;general;world_model; - -//Dependencies for the target -accelerometer_cost_functor_LIB_DEPENDS:STATIC=general;accelerometer_models;general;trajectory; - -//Dependencies for the target -accelerometer_models_LIB_DEPENDS:STATIC=general;absl::statusor; - -//Dependencies for the target -aprilgrid_detector_LIB_DEPENDS:STATIC=general;world_model;general;apriltags;general;opencv_calib3d;general;opencv_core;general;opencv_dnn;general;opencv_features2d;general;opencv_flann;general;opencv_highgui;general;opencv_imgcodecs;general;opencv_imgproc;general;opencv_ml;general;opencv_objdetect;general;opencv_photo;general;opencv_stitching;general;opencv_video;general;opencv_videoio;general;opencv_alphamat;general;opencv_aruco;general;opencv_barcode;general;opencv_bgsegm;general;opencv_bioinspired;general;opencv_ccalib;general;opencv_datasets;general;opencv_dnn_objdetect;general;opencv_dnn_superres;general;opencv_dpm;general;opencv_face;general;opencv_freetype;general;opencv_fuzzy;general;opencv_hdf;general;opencv_hfs;general;opencv_img_hash;general;opencv_intensity_transform;general;opencv_line_descriptor;general;opencv_mcc;general;opencv_optflow;general;opencv_phase_unwrapping;general;opencv_plot;general;opencv_quality;general;opencv_rapid;general;opencv_reg;general;opencv_rgbd;general;opencv_saliency;general;opencv_shape;general;opencv_stereo;general;opencv_structured_light;general;opencv_superres;general;opencv_surface_matching;general;opencv_text;general;opencv_tracking;general;opencv_videostab;general;opencv_viz;general;opencv_wechat_qrcode;general;opencv_ximgproc;general;opencv_xobjdetect;general;opencv_xphoto;general;yaml-cpp; - -//Dependencies for the target -batch_optimizer_LIB_DEPENDS:STATIC=general;accelerometer;general;camera;general;gyroscope;general;world_model; - -//Dependencies for the target -camera_LIB_DEPENDS:STATIC=general;camera_models;general;camera_cost_functor;general;trajectory;general;world_model; - -//Dependencies for the target -camera_cost_functor_LIB_DEPENDS:STATIC=general;camera_models;general;trajectory; - -//Dependencies for the target -camera_models_LIB_DEPENDS:STATIC=general;absl::statusor; - -//The directory containing a CMake configuration file for gflags. -gflags_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/gflags - -//The directory containing a CMake configuration file for glog. -glog_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/glog - -//Dependencies for the target -gyroscope_LIB_DEPENDS:STATIC=general;gyroscope_cost_functor;general;gyroscope_models;general;trajectory;general;world_model; - -//Dependencies for the target -gyroscope_cost_functor_LIB_DEPENDS:STATIC=general;gyroscope_models;general;trajectory; - -//Dependencies for the target -gyroscope_models_LIB_DEPENDS:STATIC=general;absl::statusor; - -//Dependencies for the target -trajectory_LIB_DEPENDS:STATIC=general;absl::status;general;absl::statusor;general;Ceres::ceres; - -//Dependencies for the target -world_model_LIB_DEPENDS:STATIC=general;absl::status;general;absl::statusor;general;absl::strings;general;Ceres::ceres; - -//The directory containing a CMake configuration file for yaml-cpp. -yaml-cpp_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/yaml-cpp - - -######################## -# INTERNAL cache entries -######################## - -//Have function sgemm_ -BLAS_WORKS:INTERNAL= -//ADVANCED property for variable: BLAS_armpl_lp64_LIBRARY -BLAS_armpl_lp64_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_atlas_LIBRARY -BLAS_atlas_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_blas_LIBRARY -BLAS_blas_LIBRARY-ADVANCED:INTERNAL=1 -//Have function dgemm_ -BLAS_blas_f77blas_atlas_WORKS:INTERNAL=1 -//ADVANCED property for variable: BLAS_blis_LIBRARY -BLAS_blis_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_f77blas_LIBRARY -BLAS_f77blas_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_flexiblas_LIBRARY -BLAS_flexiblas_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_goto2_LIBRARY -BLAS_goto2_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_mkl_LIBRARY -BLAS_mkl_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_mkl_em64t_LIBRARY -BLAS_mkl_em64t_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_mkl_ia32_LIBRARY -BLAS_mkl_ia32_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_mkl_intel_LIBRARY -BLAS_mkl_intel_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_mkl_intel_lp64_LIBRARY -BLAS_mkl_intel_lp64_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_mkl_rt_LIBRARY -BLAS_mkl_rt_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BLAS_openblas_LIBRARY -BLAS_openblas_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_ADDR2LINE -CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_AR -CMAKE_AR-ADVANCED:INTERNAL=1 -//This is the directory where this CMakeCache.txt was created -CMAKE_CACHEFILE_DIR:INTERNAL=/home/jpollak/src/jbcpollak/Calico -//Major version of cmake used to create the current loaded cache -CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 -//Minor version of cmake used to create the current loaded cache -CMAKE_CACHE_MINOR_VERSION:INTERNAL=22 -//Patch version of cmake used to create the current loaded cache -CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 -//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE -CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 -//Path to CMake executable. -CMAKE_COMMAND:INTERNAL=/usr/bin/cmake -//Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack -//ADVANCED property for variable: CMAKE_CTEST_COMMAND -CMAKE_CTEST_COMMAND-ADVANCED:INTERNAL=1 -//Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest -//ADVANCED property for variable: CMAKE_CXX_COMPILER -CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR -CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB -CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS -CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG -CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL -CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE -CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO -CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER -CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER_AR -CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB -CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS -CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG -CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL -CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE -CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO -CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_DLLTOOL -CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 -//Executable file format -CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS -CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG -CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE -CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS -CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 -//Name of external makefile project generator. -CMAKE_EXTRA_GENERATOR:INTERNAL= -//Name of generator. -CMAKE_GENERATOR:INTERNAL=Unix Makefiles -//Generator instance identifier. -CMAKE_GENERATOR_INSTANCE:INTERNAL= -//Name of generator platform. -CMAKE_GENERATOR_PLATFORM:INTERNAL= -//Name of generator toolset. -CMAKE_GENERATOR_TOOLSET:INTERNAL= -//Test CMAKE_HAVE_LIBC_PTHREAD -CMAKE_HAVE_LIBC_PTHREAD:INTERNAL=1 -//Have include pthread.h -CMAKE_HAVE_PTHREAD_H:INTERNAL=1 -//Source directory with the top level CMakeLists.txt file for this -// project -CMAKE_HOME_DIRECTORY:INTERNAL=/home/jpollak/src/jbcpollak/Calico -//Install .so files without execute permission. -CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 -//ADVANCED property for variable: CMAKE_LINKER -CMAKE_LINKER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MAKE_PROGRAM -CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS -CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG -CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE -CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_NM -CMAKE_NM-ADVANCED:INTERNAL=1 -//number of local generators -CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJCOPY -CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJDUMP -CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 -//Platform information initialized -CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RANLIB -CMAKE_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_READELF -CMAKE_READELF-ADVANCED:INTERNAL=1 -//Path to CMake installation. -CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.22 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS -CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG -CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE -CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH -CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_RPATH -CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS -CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG -CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE -CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STRIP -CMAKE_STRIP-ADVANCED:INTERNAL=1 -//uname command -CMAKE_UNAME:INTERNAL=/usr/bin/uname -//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: COVERAGE_COMMAND -COVERAGE_COMMAND-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: COVERAGE_EXTRA_FLAGS -COVERAGE_EXTRA_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CTEST_SUBMIT_RETRY_COUNT -CTEST_SUBMIT_RETRY_COUNT-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CTEST_SUBMIT_RETRY_DELAY -CTEST_SUBMIT_RETRY_DELAY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDAToolkit_BIN_DIR -CUDAToolkit_BIN_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDAToolkit_NVCC_EXECUTABLE -CUDAToolkit_NVCC_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDAToolkit_rt_LIBRARY -CUDAToolkit_rt_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_CUDART -CUDA_CUDART-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_OpenCL_LIBRARY -CUDA_OpenCL_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cublasLt_LIBRARY -CUDA_cublasLt_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cublasLt_static_LIBRARY -CUDA_cublasLt_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cublas_LIBRARY -CUDA_cublas_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cublas_static_LIBRARY -CUDA_cublas_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cuda_driver_LIBRARY -CUDA_cuda_driver_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cudart_LIBRARY -CUDA_cudart_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cudart_static_LIBRARY -CUDA_cudart_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cufft_LIBRARY -CUDA_cufft_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cufft_static_LIBRARY -CUDA_cufft_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cufftw_LIBRARY -CUDA_cufftw_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_culibos_LIBRARY -CUDA_culibos_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cupti_LIBRARY -CUDA_cupti_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cupti_static_LIBRARY -CUDA_cupti_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_curand_LIBRARY -CUDA_curand_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_curand_static_LIBRARY -CUDA_curand_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cusolver_LIBRARY -CUDA_cusolver_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cusolver_static_LIBRARY -CUDA_cusolver_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cusparse_LIBRARY -CUDA_cusparse_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_cusparse_static_LIBRARY -CUDA_cusparse_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppc_LIBRARY -CUDA_nppc_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppc_static_LIBRARY -CUDA_nppc_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppial_LIBRARY -CUDA_nppial_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppial_static_LIBRARY -CUDA_nppial_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppicc_LIBRARY -CUDA_nppicc_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppicc_static_LIBRARY -CUDA_nppicc_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppicom_LIBRARY -CUDA_nppicom_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppicom_static_LIBRARY -CUDA_nppicom_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppidei_LIBRARY -CUDA_nppidei_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppidei_static_LIBRARY -CUDA_nppidei_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppif_LIBRARY -CUDA_nppif_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppif_static_LIBRARY -CUDA_nppif_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppig_LIBRARY -CUDA_nppig_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppig_static_LIBRARY -CUDA_nppig_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppim_LIBRARY -CUDA_nppim_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppim_static_LIBRARY -CUDA_nppim_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppist_LIBRARY -CUDA_nppist_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppist_static_LIBRARY -CUDA_nppist_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppisu_LIBRARY -CUDA_nppisu_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppisu_static_LIBRARY -CUDA_nppisu_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppitc_LIBRARY -CUDA_nppitc_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nppitc_static_LIBRARY -CUDA_nppitc_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_npps_LIBRARY -CUDA_npps_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_npps_static_LIBRARY -CUDA_npps_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nvToolsExt_LIBRARY -CUDA_nvToolsExt_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nvgraph_LIBRARY -CUDA_nvgraph_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nvgraph_static_LIBRARY -CUDA_nvgraph_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nvjpeg_LIBRARY -CUDA_nvjpeg_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nvjpeg_static_LIBRARY -CUDA_nvjpeg_static_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nvml_LIBRARY -CUDA_nvml_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CUDA_nvrtc_LIBRARY -CUDA_nvrtc_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: DART_TESTING_TIMEOUT -DART_TESTING_TIMEOUT-ADVANCED:INTERNAL=1 -//Details about finding CUDAToolkit -FIND_PACKAGE_MESSAGE_DETAILS_CUDAToolkit:INTERNAL=[/usr/include][/usr/lib/x86_64-linux-gnu/libcudart.so][/usr/bin][v11.5.119(11.5.119)] -//Details about finding GTest -FIND_PACKAGE_MESSAGE_DETAILS_GTest:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/GTest/GTestConfig.cmake][c ][v1.11.0()] -//Details about finding OpenCV -FIND_PACKAGE_MESSAGE_DETAILS_OpenCV:INTERNAL=[/usr][v4.5.4()] -//Details about finding SuiteSparse -FIND_PACKAGE_MESSAGE_DETAILS_SuiteSparse:INTERNAL=[/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libamd.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libcamd.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libccolamd.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libcholmod.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libcolamd.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libspqr.so][/usr/include/suitesparse][/usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so][cfound components: AMD CAMD CCOLAMD CHOLMOD COLAMD SPQR Config ][v5.10.1(5.10.1)] -//Details about finding Threads -FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] -//ADVANCED property for variable: GITCOMMAND -GITCOMMAND-ADVANCED:INTERNAL=1 -//Have library rt -HAVE_LIBRT:INTERNAL=1 -//ADVANCED property for variable: LAPACK_Accelerate_LIBRARY -LAPACK_Accelerate_LIBRARY-ADVANCED:INTERNAL=1 -//Have function cheev_ -LAPACK_WORKS:INTERNAL= -//ADVANCED property for variable: LAPACK_armpl_lp64_LIBRARY -LAPACK_armpl_lp64_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LAPACK_flame_LIBRARY -LAPACK_flame_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LAPACK_flexiblas_LIBRARY -LAPACK_flexiblas_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LAPACK_goto2_LIBRARY -LAPACK_goto2_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LAPACK_lapack_LIBRARY -LAPACK_lapack_LIBRARY-ADVANCED:INTERNAL=1 -//Have function cheev_ -LAPACK_lapack_WORKS:INTERNAL=1 -//Have function cheev_ -LAPACK_lapack_deps_WORKS:INTERNAL= -//ADVANCED property for variable: LAPACK_mkl_lapack_LIBRARY -LAPACK_mkl_lapack_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LAPACK_openblas_LIBRARY -LAPACK_openblas_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LAPACK_scs_LIBRARY -LAPACK_scs_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: LAPACK_vecLib_LIBRARY -LAPACK_vecLib_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: MAKECOMMAND -MAKECOMMAND-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: MEMORYCHECK_COMMAND -MEMORYCHECK_COMMAND-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: MEMORYCHECK_SUPPRESSIONS_FILE -MEMORYCHECK_SUPPRESSIONS_FILE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: METIS_INCLUDE_DIR -METIS_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: METIS_LIBRARY_DEBUG -METIS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: METIS_LIBRARY_RELEASE -METIS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SITE -SITE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_AMD_INCLUDE_DIR -SuiteSparse_AMD_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_AMD_LIBRARY -SuiteSparse_AMD_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_CAMD_INCLUDE_DIR -SuiteSparse_CAMD_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_CAMD_LIBRARY -SuiteSparse_CAMD_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_CCOLAMD_INCLUDE_DIR -SuiteSparse_CCOLAMD_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_CCOLAMD_LIBRARY -SuiteSparse_CCOLAMD_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_CHOLMOD_INCLUDE_DIR -SuiteSparse_CHOLMOD_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_CHOLMOD_LIBRARY -SuiteSparse_CHOLMOD_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_COLAMD_INCLUDE_DIR -SuiteSparse_COLAMD_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_COLAMD_LIBRARY -SuiteSparse_COLAMD_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_Config_INCLUDE_DIR -SuiteSparse_Config_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_Config_LIBRARY -SuiteSparse_Config_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_SPQR_INCLUDE_DIR -SuiteSparse_SPQR_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: SuiteSparse_SPQR_LIBRARY -SuiteSparse_SPQR_LIBRARY-ADVANCED:INTERNAL=1 - diff --git a/CTestTestfile.cmake b/CTestTestfile.cmake deleted file mode 100644 index 474ccd1..0000000 --- a/CTestTestfile.cmake +++ /dev/null @@ -1,40 +0,0 @@ -# CMake generated Testfile for -# Source directory: /home/jpollak/src/jbcpollak/Calico -# Build directory: /home/jpollak/src/jbcpollak/Calico -# -# This file includes the relevant testing commands required for -# testing this directory and lists subdirectories to be tested as well. -add_test(TypeDefsTest "typedefs_test") -set_tests_properties(TypeDefsTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;282;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(GeometryTest "geometry_test") -set_tests_properties(GeometryTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;295;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(BSplineTest "bspline_test") -set_tests_properties(BSplineTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;309;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(TrajectoryTest "trajectory_test") -set_tests_properties(TrajectoryTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;321;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(WorldModelTest "world_model_test") -set_tests_properties(WorldModelTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;333;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(GyroscopeModelsTest "gyroscope_models_test") -set_tests_properties(GyroscopeModelsTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;345;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(GyroscopeCostFunctorTest "gyroscope_cost_functor_test") -set_tests_properties(GyroscopeCostFunctorTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;357;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(GyroscopeLibTest "gyroscope_test") -set_tests_properties(GyroscopeLibTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;369;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(AccelerometerModelsTest "accelerometer_models_test") -set_tests_properties(AccelerometerModelsTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;381;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(AccelerometerCostFunctorTest "accelerometer_cost_functor_test") -set_tests_properties(AccelerometerCostFunctorTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;393;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(AccelerometerLibTest "accelerometer_test") -set_tests_properties(AccelerometerLibTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;405;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(CameraModelsTest "camera_models_test") -set_tests_properties(CameraModelsTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;417;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(CameraCostFunctorTest "camera_cost_functor_test") -set_tests_properties(CameraCostFunctorTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;429;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(CameraLibTest "camera_test") -set_tests_properties(CameraLibTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;441;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(BatchOptimizerTest "batch_optimizer_test") -set_tests_properties(BatchOptimizerTest PROPERTIES _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;455;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(python_bindings_test "python3" "-m" "pytest" "/home/jpollak/src/jbcpollak/Calico/calico/test/python_bindings_test.py") -set_tests_properties(python_bindings_test PROPERTIES ENVIRONMENT "PYTHONPATH=/home/jpollak/src/jbcpollak/Calico:" WORKING_DIRECTORY "/home/jpollak/src/jbcpollak/Calico/calico/test" _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;457;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") -add_test(python_utils_test "python3" "-m" "pytest" "/home/jpollak/src/jbcpollak/Calico/calico/test/python_utils_test.py") -set_tests_properties(python_utils_test PROPERTIES ENVIRONMENT "PYTHONPATH=/home/jpollak/src/jbcpollak/Calico:" WORKING_DIRECTORY "/home/jpollak/src/jbcpollak/Calico/calico/test" _BACKTRACE_TRIPLES "/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;463;add_test;/home/jpollak/src/jbcpollak/Calico/CMakeLists.txt;0;") diff --git a/DartConfiguration.tcl b/DartConfiguration.tcl deleted file mode 100644 index eeeb453..0000000 --- a/DartConfiguration.tcl +++ /dev/null @@ -1,105 +0,0 @@ -# This file is configured by CMake automatically as DartConfiguration.tcl -# If you choose not to use CMake, this file may be hand configured, by -# filling in the required variables. - - -# Configuration directories and files -SourceDirectory: /home/jpollak/src/jbcpollak/Calico -BuildDirectory: /home/jpollak/src/jbcpollak/Calico - -# Where to place the cost data store -CostDataFile: - -# Site is something like machine.domain, i.e. pragmatic.crd -Site: Yggdrasil - -# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ -BuildName: Linux-c++ - -# Subprojects -LabelsForSubprojects: - -# Submission information -SubmitURL: http:// - -# Dashboard start time -NightlyStartTime: 00:00:00 EDT - -# Commands for the build/test/submit cycle -ConfigureCommand: "/usr/bin/cmake" "/home/jpollak/src/jbcpollak/Calico" -MakeCommand: /usr/bin/cmake --build . --config "${CTEST_CONFIGURATION_TYPE}" -DefaultCTestConfigurationType: Release - -# version control -UpdateVersionOnly: - -# CVS options -# Default is "-d -P -A" -CVSCommand: -CVSUpdateOptions: - -# Subversion options -SVNCommand: -SVNOptions: -SVNUpdateOptions: - -# Git options -GITCommand: /usr/bin/git -GITInitSubmodules: -GITUpdateOptions: -GITUpdateCustom: - -# Perforce options -P4Command: -P4Client: -P4Options: -P4UpdateOptions: -P4UpdateCustom: - -# Generic update command -UpdateCommand: /usr/bin/git -UpdateOptions: -UpdateType: git - -# Compiler info -Compiler: /usr/bin/c++ -CompilerVersion: 11.4.0 - -# Dynamic analysis (MemCheck) -PurifyCommand: -ValgrindCommand: -ValgrindCommandOptions: -DrMemoryCommand: -DrMemoryCommandOptions: -CudaSanitizerCommand: -CudaSanitizerCommandOptions: -MemoryCheckType: -MemoryCheckSanitizerOptions: -MemoryCheckCommand: /usr/bin/valgrind -MemoryCheckCommandOptions: -MemoryCheckSuppressionFile: - -# Coverage -CoverageCommand: /usr/bin/gcov -CoverageExtraFlags: -l - -# Testing options -# TimeOut is the amount of time in seconds to wait for processes -# to complete during testing. After TimeOut seconds, the -# process will be summarily terminated. -# Currently set to 25 minutes -TimeOut: 1500 - -# During parallel testing CTest will not start a new test if doing -# so would cause the system load to exceed this value. -TestLoad: - -UseLaunchers: -CurlOptions: -# warning, if you add new options here that have to do with submit, -# you have to update cmCTestSubmitCommand.cxx - -# For CTest submissions that timeout, these options -# specify behavior for retrying the submission -CTestSubmitRetryDelay: 5 -CTestSubmitRetryCount: 3 diff --git a/cmake_install.cmake b/cmake_install.cmake deleted file mode 100644 index 3142bfa..0000000 --- a/cmake_install.cmake +++ /dev/null @@ -1,161 +0,0 @@ -# Install script for directory: /home/jpollak/src/jbcpollak/Calico - -# Set the install prefix -if(NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "/usr/local") -endif() -string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - -# Set the install configuration name. -if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - if(BUILD_TYPE) - string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" - CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") - else() - set(CMAKE_INSTALL_CONFIG_NAME "") - endif() - message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") -endif() - -# Set the component getting installed. -if(NOT CMAKE_INSTALL_COMPONENT) - if(COMPONENT) - message(STATUS "Install component: \"${COMPONENT}\"") - set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") - else() - set(CMAKE_INSTALL_COMPONENT) - endif() -endif() - -# Install shared libraries without execute permission? -if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) - set(CMAKE_INSTALL_SO_NO_EXE "1") -endif() - -# Is this installation the result of a crosscompile? -if(NOT DEFINED CMAKE_CROSSCOMPILING) - set(CMAKE_CROSSCOMPILING "FALSE") -endif() - -# Set default install directory permissions. -if(NOT DEFINED CMAKE_OBJDUMP) - set(CMAKE_OBJDUMP "/usr/bin/objdump") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libaccelerometer.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libaccelerometer_cost_functor.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libaccelerometer_models.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libapriltags.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libbatch_optimizer.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libcamera.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libcamera_cost_functor.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libcamera_models.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libgyroscope.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libgyroscope_cost_functor.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libgyroscope_models.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libtrajectory.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libworld_model.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/calico" TYPE STATIC_LIBRARY FILES "/home/jpollak/src/jbcpollak/Calico/build/lib/libaprilgrid_detector.a") -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/calico/CalicoConfig.cmake") - file(DIFFERENT EXPORT_FILE_CHANGED FILES - "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/calico/CalicoConfig.cmake" - "/home/jpollak/src/jbcpollak/Calico/CMakeFiles/Export/lib/cmake/calico/CalicoConfig.cmake") - if(EXPORT_FILE_CHANGED) - file(GLOB OLD_CONFIG_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/calico/CalicoConfig-*.cmake") - if(OLD_CONFIG_FILES) - message(STATUS "Old export file \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/calico/CalicoConfig.cmake\" will be replaced. Removing files [${OLD_CONFIG_FILES}].") - file(REMOVE ${OLD_CONFIG_FILES}) - endif() - endif() - endif() - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/calico" TYPE FILE FILES "/home/jpollak/src/jbcpollak/Calico/CMakeFiles/Export/lib/cmake/calico/CalicoConfig.cmake") - if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^()$") - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/calico" TYPE FILE FILES "/home/jpollak/src/jbcpollak/Calico/CMakeFiles/Export/lib/cmake/calico/CalicoConfig-noconfig.cmake") - endif() -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/calico" TYPE FILE FILES - "/home/jpollak/src/jbcpollak/Calico/calico/profiler.h" - "/home/jpollak/src/jbcpollak/Calico/calico/trajectory.h" - "/home/jpollak/src/jbcpollak/Calico/calico/bspline.h" - "/home/jpollak/src/jbcpollak/Calico/calico/test_utils.h" - "/home/jpollak/src/jbcpollak/Calico/calico/optimization_utils.h" - "/home/jpollak/src/jbcpollak/Calico/calico/batch_optimizer.h" - "/home/jpollak/src/jbcpollak/Calico/calico/typedefs.h" - "/home/jpollak/src/jbcpollak/Calico/calico/matchers.h" - "/home/jpollak/src/jbcpollak/Calico/calico/status_builder.h" - "/home/jpollak/src/jbcpollak/Calico/calico/geometry.h" - "/home/jpollak/src/jbcpollak/Calico/calico/world_model.h" - "/home/jpollak/src/jbcpollak/Calico/calico/statusor_macros.h" - ) -endif() - -if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) - file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/calico/sensors" TYPE FILE FILES - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/gyroscope_models.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/camera.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/accelerometer_cost_functor.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/sensor_base.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/gyroscope_cost_functor.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/camera_cost_functor.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/camera_models.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/accelerometer_models.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/gyroscope.h" - "/home/jpollak/src/jbcpollak/Calico/calico/sensors/accelerometer.h" - ) -endif() - -if(CMAKE_INSTALL_COMPONENT) - set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") -else() - set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") -endif() - -string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT - "${CMAKE_INSTALL_MANIFEST_FILES}") -file(WRITE "/home/jpollak/src/jbcpollak/Calico/${CMAKE_INSTALL_MANIFEST}" - "${CMAKE_INSTALL_MANIFEST_CONTENT}") From c9cc26f56dfe551d0c24ebaf2bbbf58835e68d99 Mon Sep 17 00:00:00 2001 From: Joshua Chaitin-Pollak Date: Thu, 22 Feb 2024 00:07:25 -0500 Subject: [PATCH 17/17] cleaned up readme --- README.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fa52396..0b99963 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ Check out our [wiki pages](https://github.com/yangjames/Calico/wiki) for more in # Dependencies -* Calico is not compatible with Ubuntu 20.04 the minimum supported version is 22.04. +* The minimum supported version of Ubuntu is 22.04. +* * This is because Ubuntu 20.04 and older do not ship with libabsl-dev. * The version of Ceres that ships with 22.04 is too old for Calico, run `./scripts/install-ceres.sh` to install the latest version. * * Optional: Install the latest version of the CUDA sdk before you install Ceres @@ -39,20 +40,26 @@ sudo apt install -y libeigen3-dev libgtest-dev libabsl-dev \ ## Native ```bash -cmake . +mkdir build +cd build +cmake .. make -j3 make install ``` ## Python +Note: For the Python wheel you do _not_ need to compile the native code first. The wheel is self-contained. + +From main directory: + ```bash -pip wheel --no-deps . +pip wheel --no-deps -w wheels . ``` -## Docker +### Docker -If you have docker and just want the python wheel, you can simply run: +If you have docker and just want the python wheel, you don't need to install any dependencies and can simply run: ./scripts/build-python.sh