diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b9bbd35a..a5384a67 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,8 +24,7 @@ jobs: compiler: gcc - os: ubuntu-20.04 compiler: clang - # - os: macos-11 - # compiler: clang + fail-fast: false steps: - uses: actions/checkout@v3 @@ -39,18 +38,11 @@ jobs: ./install_deps_ubuntu.sh if: matrix.os == 'ubuntu-20.04' - - name: Install dependencies (Mac) - working-directory: ./infra/scripts - run: | - ./install_deps_mac.sh - if: matrix.os == 'macos-11' - - name: Download dependencies (proto) - working-directory: ./infra/ + working-directory: ./infra run: | + ls -l source ./bootstrap_venv.sh - cd scripts - ./install_farm_ng_cmake.sh - name: Compile (gcc) working-directory: ./infra/scripts @@ -67,11 +59,3 @@ jobs: source ../venv/bin/activate ./compile_clang.sh if: matrix.compiler == 'clang' - - - name: clang-tidy - working-directory: ./infra/ - run: | - source ./bootstrap_venv.sh - cd .. - ./run_clang_tidy.sh - if: matrix.os == 'ubuntu-20.04' && matrix.compiler == 'clang' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 019dc34a..3e90b085 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,7 +2,7 @@ name: Release on: push: - branches: [release-build-branch, merge] + branches: [release-build-branch] workflow_dispatch: concurrency: diff --git a/cmake/scripts/download_release.sh b/cmake/scripts/download_release.sh index 53752ea7..d98fbc75 100755 --- a/cmake/scripts/download_release.sh +++ b/cmake/scripts/download_release.sh @@ -1,14 +1,11 @@ #!/bin/bash -ex -# This script downloads the matching farm_ng_cmake Github release based on the -# current git SHA and inferred platform version. The release and platform can be -# overridden through the RELEASE_SHA and RELEASE_PLATFORM env variables. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" cd $DIR # Choose release SHA based on git repo SHA -RELEASE_SHA="${RELEASE_SHA:-$(git rev-parse --short HEAD)}" +RELEASE_SHA= b6feaaf2ab71bf8b695d0e405d39a8a6dde2f883 # Guess platform based on current platform if [[ -z "${RELEASE_PLATFORM}" ]]; then diff --git a/cpp/sophus2/.github/ISSUE_TEMPLATE/bug_report.md b/cpp/sophus2/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 867a07e6..00000000 --- a/cpp/sophus2/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Bug report -about: 'Report a specific bug. For more general help and questions use discussions: - https://github.com/strasdat/Sophus/discussions/categories/q-a' -title: '' -labels: bug -assignees: '' - ---- - -**Describe the bug** -[A clear and concise description of what the bug is.] - -**To Reproduce** -[Steps to reproduce the behavior:] -1. -2. -3. - -**Expected behavior** -[A clear and concise description of what you expected to happen.] - -**Sophus version: commit hash** - -[Commit hash on main branch which has the bug. Please test on HEAD of main first before submitting a bug.] - -**Additional context** diff --git a/cpp/sophus2/.github/ISSUE_TEMPLATE/feature_request.md b/cpp/sophus2/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 1fedc76e..00000000 --- a/cpp/sophus2/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Feature request -about: 'Suggest a specific feature for Sophus. For more general ideas, please use - discussions: https://github.com/strasdat/Sophus/discussions/categories/ideas' -title: '' -labels: feature request -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -[A clear and concise description of what the problem is.] - -**Describe the solution you'd like** -[A clear and concise description of what you want to happen.] - -**Describe alternatives you've considered** -[A clear and concise description of any alternative solutions or features you've considered.] - -**Additional context**[ -Add any other context or screenshots about the feature request here.] diff --git a/cpp/sophus2/.github/workflows/build.yml b/cpp/sophus2/.github/workflows/build.yml deleted file mode 100644 index b6035967..00000000 --- a/cpp/sophus2/.github/workflows/build.yml +++ /dev/null @@ -1,181 +0,0 @@ -on: - push: - branches: [main, sophus2] - pull_request: - - workflow_dispatch: - -jobs: - build: - runs-on: ${{ matrix.os }} - strategy: - matrix: - include: - - os: ubuntu-20.04 - compiler: gcc - optional_features: minimal - tests: unit_test - access: col_major - build_type: Release - - os: ubuntu-20.04 - compiler: gcc - optional_features: ceres_proto - tests: unit_test - access: col_major - build_type: Release - - os: ubuntu-20.04 - compiler: gcc - optional_features: minimal - tests: unit_test - access: row_major - build_type: Release - - os: ubuntu-20.04 - compiler: clang - optional_features: minimal - tests: clang_tidy - access: col_major - build_type: Release - - os: ubuntu-20.04 - compiler: gcc - optional_features: minimal - tests: coverage - access: col_major - build_type: Debug - - os: macos-11 - compiler: clang - optional_features: minimal - tests: unit_test - access: col_major - build_type: Release - - os: macos-12 - compiler: clang - optional_features: minimal # todo: ceres_proto here - tests: unit_test - access: col_major - build_type: Release - - fail-fast: false - env: - BUILD_TYPE: ${{ matrix.build_type }} - - steps: - - uses: actions/checkout@v3 - with: - submodules: "recursive" - - - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.optional_features }}-${{ matrix.tests }}-${{ matrix.access }}-${{ matrix.build_type }} - - - name: Install dependencies (Ubuntu) - working-directory: ./infra/scripts - run: | - ./install_deps_ubuntu.sh - if: matrix.os == 'ubuntu-20.04' - - - name: Install dependencies (Mac) - working-directory: ./infra/scripts - run: | - ./install_deps_mac.sh - if: matrix.os == 'macos-11' || matrix.os == 'macos-12' - - - name: Install dependencies from source - working-directory: ./infra/scripts - run: | - ./install_deps_without_ceres_proto.sh - if: matrix.optional_features == 'minimal' - - - name: Download dependencies (gcc, ceres+proto) - working-directory: ./infra/ - run: | - source ./bootstrap_venv.sh - cd scripts - ./install_cmake_farm_ng_core.sh - env: - ROW_ACCESS: matrix.access - if: matrix.optional_features == 'ceres_proto' - - - name: Compile (gcc) - working-directory: ./infra/scripts - run: - ./compile_gcc.sh - env: - ROW_ACCESS: matrix.access - if: matrix.tests == 'unit_test' && matrix.compiler == 'gcc' && matrix.optional_features == 'minimal' - - - name: Compile (gcc, ceres_proto) - working-directory: ./infra/scripts - run: | - ls - source ../venv/bin/activate - ./compile_gcc.sh - env: - ROW_ACCESS: matrix.access - SOPHUS_CERES: On - if: matrix.tests == 'unit_test' && matrix.compiler == 'gcc' && matrix.optional_features == 'ceres_proto' - - - name: Compile (clang) - working-directory: ./infra/scripts - run: - ./compile_clang.sh - env: - ROW_ACCESS: matrix.access - if: matrix.tests == 'unit_test' && matrix.compiler == 'clang' - - - name: Compile (clang, ceres_proto) - working-directory: ./infra/scripts - run: | - ls - source ../venv/bin/activate - ./compile_clang.sh - env: - ROW_ACCESS: matrix.access - SOPHUS_CERES: On - BUILD_FARM_NG_PROTOS: On - if: matrix.tests == 'unit_test' && matrix.compiler == 'clang' && matrix.optional_features == 'ceres_proto' - - - name: Run unit tests - working-directory: ./infra/scripts/build - run: | - ctest --output-on-failure - env: - ROW_ACCESS: matrix.access - if: matrix.tests == 'unit_test' && matrix.optional_features == 'minimal' - - - name: Run unit tests (ceres_proto) - working-directory: ./infra/scripts - run: | - source ../venv/bin/activate - cd build - ctest --output-on-failure - env: - ROW_ACCESS: matrix.access - if: matrix.tests == 'unit_test' && matrix.optional_features == 'ceres_proto' - - - # todo: re-enable this - - - name: Run install tests - working-directory: ./infra/scripts/build - run: | - sudo cmake --install . - # cd .. - # mkdir example_build - # cmake -G ../../../cpp/examples/test_install_targets - # ninja - # env: - # ROW_ACCESS: matrix.access - if: matrix.tests == 'unit_test' && matrix.optional_features == 'minimal' - - - name: Compile (clang) & tests coverage - working-directory: ./infra/scripts - run: - ./compile_gcc_coverage.sh - env: - ROW_ACCESS: matrix.access - if: matrix.tests == 'coverage' - - - name: clang-tidy - run: | - ./run_clang_tidy.sh - if: matrix.tests == 'clang_tidy' diff --git a/cpp/sophus2/.github/workflows/docs.yml b/cpp/sophus2/.github/workflows/docs.yml deleted file mode 100644 index 6b191263..00000000 --- a/cpp/sophus2/.github/workflows/docs.yml +++ /dev/null @@ -1,34 +0,0 @@ -on: - push: - branches: [ main, sophus2-docs, sophus2 ] - - workflow_dispatch: - -jobs: - build: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-20.04] - fail-fast: false - - - steps: - - uses: actions/checkout@v3 - with: - submodules: "recursive" - - - name: Install docusaurus dependencies - working-directory: docs - run: yarn install --frozen-lockfile - - name: Test build website - working-directory: docs - run: yarn build - - - name: Deploy - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: docs/build - publish_branch: docs - destination_dir: latest diff --git a/cpp/sophus2/.github/workflows/format.yml b/cpp/sophus2/.github/workflows/format.yml deleted file mode 100644 index 95cb0783..00000000 --- a/cpp/sophus2/.github/workflows/format.yml +++ /dev/null @@ -1,16 +0,0 @@ -on: - push: - branches: [ main, sophus2 ] - pull_request: - - workflow_dispatch: - -jobs: - pre-commit-check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 - - uses: pre-commit/action@v3.0.0 - - uses: pre-commit-ci/lite-action@v1.0.0 - if: always() diff --git a/cpp/sophus2/.github/workflows/pypi-release.yml b/cpp/sophus2/.github/workflows/pypi-release.yml deleted file mode 100644 index dbab1bc4..00000000 --- a/cpp/sophus2/.github/workflows/pypi-release.yml +++ /dev/null @@ -1,21 +0,0 @@ -on: - release: - types: [published] - -jobs: - pypi: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v2 - - name: Install dependencies - run: python3 -m pip install --upgrade setuptools wheel - - name: Compile project - run: python3 -m pip install -e . - - name: Build distribution package - run: python3 setup.py sdist bdist_wheel - - name: Publish distribution 📦 to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: __token__ - password: ${{ secrets.pypi_password_sophus }} diff --git a/cpp/sophus2/.github/workflows/sympy.yml b/cpp/sophus2/.github/workflows/sympy.yml deleted file mode 100644 index 0964db85..00000000 --- a/cpp/sophus2/.github/workflows/sympy.yml +++ /dev/null @@ -1,24 +0,0 @@ -on: - push: - branches: [ main, sophus2 ] - pull_request: - - workflow_dispatch: - -jobs: - build: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-20.04] - fail-fast: false - - - steps: - - uses: actions/checkout@v2 - - - name: Run sympy tests - run: | - pip3 install sympy==1.8 - cd py/sympy - ./run_tests.sh diff --git a/cpp/sophus2/README.md b/cpp/sophus2/README.md index df7d0841..5cd3609f 100644 --- a/cpp/sophus2/README.md +++ b/cpp/sophus2/README.md @@ -1,198 +1,2 @@ -

Sophus

- -

- A collection of c++ types for 2d and 3d geometric problems. -

- -
- - - Build CI Badge - - - Format CI Badge - - - Docs CI Badge - - -Sympy CI Badge - - - License Badge - - -
- -
-

Manifolds, Image classes, Camera models and more. -

-
- -Sophus started as a c++ implementaion of Lie Groups / Manifolds. It evolved to a -collection of types and functions commonly used or 2d and 3d geometric problems -especially in the domain of `robotics`, `computer vision` annd `graphics`. - -- [Lie groups / Manifold](#lie-groups) such as `SO(2)` and - `SO(3)` to present rotations in 2d and 3, -- [Other geometric conecpts](#other-geometric-concepts) such as unit vector, plane - fitting and inverse depth points, -- [Image classes](#image-classes) -- [Sensor models](#sensor-models) such `camera models` (as pinhole, orthographic - and lens distortion model) and `IMU models`. -- [Sympy](#sympy) representations of selected types - for - instance o symbolically derive Jacobians and autogenerate c++ code. -- [Serialization](#serialization) using proto (and soon json). - -## 👟Getting Started - -[Working in progress.] - -Check out the docs for now: - -(Which are also work in progress...) - -## 🌐Lie groups - -### tldr: rotations, translations and scaling in 2d and 3d - -`Lie groups` are generalizations of the Euclidean vector spaces R^N. A little -more formally, a Manifold which is also an [abstract group](https://en.wikipedia.org/wiki/Group_theory#Abstract_groups). - -*Okay, and what is a Manifold?* - -`Manifold` are generalizations of the Euclidean vector spaces R^N. In -particular, they behave locally like a Euclidean vector space, but globally -can have a very different structures. In particular there can be wrap-around. -The circle group SO(2) is the simplest example for such wrap around. Assume, -we have a dial pointing North. If you turn the dial 90 degree to the left, it -points West. If you turn it another 90 degrees it turns South. Now, if you turn -it again 90 degrees is points East. And you turn it left again for 90 degrees it -points North again. It wrapped around: `90 "+" 90 "+" 90 "+" 90 = 0`. - -*Do I need to understand the concept of Manifold, Group Theory and Lie Groups -in order to use Sophus?* - -Not at all! If you aim to solve geometric problems in 2d and 3d, it is best to -directly into concrete examples. By far the most commonly used Lie groups of -Sophus are the group of 3D rotations, also called Special Orthogonal Group, -short SO(3), as well as the group of rotation and translation in 3D, short -SE(3). - -### 3d rotation example using the SO(3) type - -```c++ - // The following demonstrates the group multiplication of rotation matrices - - // Create rotation matrices from rotations around the x and y and z axes: - double const kPi = sophus::kPi; - sophus::Rotation3F64 R1 = sophus::Rotation3F64::fromRx(kPi / 4); - sophus::Rotation3F64 R2 = sophus::Rotation3F64::fromRy(kPi / 6); - sophus::Rotation3F64 R3 = sophus::Rotation3F64::fromRz(-kPi / 3); - - std::cout << "The rotation matrices are" << std::endl; - std::cout << "R1:\n" << R1.matrix() << std::endl; - std::cout << "R2:\n" << R2.matrix() << std::endl; - std::cout << "R3:\n" << R3.matrix() << std::endl; - std::cout << "Their product R1*R2*R3:\n" - << (R1 * R2 * R3).matrix() << std::endl; - std::cout << std::endl; - - // Rotation matrices can act on vectors - Eigen::Vector3d x; - x << 0.0, 0.0, 1.0; - std::cout << "Rotation matrices can act on 3-vectors" << std::endl; - std::cout << "x\n" << x << std::endl; - std::cout << "R2*x\n" << R2 * x << std::endl; - std::cout << "R1*(R2*x)\n" << R1 * (R2 * x) << std::endl; - std::cout << "(R1*R2)*x\n" << (R1 * R2) * x << std::endl; - std::cout << std::endl; - - // SO(3) are internally represented as unit quaternions. - std::cout << "R1 in matrix form:\n" << R1.matrix() << std::endl; - std::cout << "R1 in unit quaternion form:\n" - << R1.unitQuaternion().coeffs() << std::endl; - // Note that the order of coefficients of Eigen's quaternion class is - // (imag0, imag1, imag2, real) - std::cout << std::endl; -``` - -[hello_so3.cpp](cpp/examples/test_install_targets/hello_so3.cpp) - -### 3d rotation + translation example using the SE(3) type - -```c++ - // Example of create a rigid transformation from an SO(3) = 3D rotation and a - // translation 3-vector: - - // Let use assume there is a camera in the world. First we describe its - // orientation in the world reference frame. - sophus::Rotation3F64 world_from_camera_rotation = - sophus::Rotation3F64::fromRx(sophus::kPi / 4); - // Then the position of the camera in the world. - Eigen::Vector3d camera_in_world(0.0, 0.0, 1.0); - - // The pose (position and orientation) of the camera in the world is - // constructed by its orientation ``world_from_camera_rotation`` as well as - // its position ``camera_in_world``. - sophus::Isometry3F64 world_anchored_camera_pose( - world_from_camera_rotation, camera_in_world); - - // SE(3) naturally representation is a 4x4 matrix which can be accessed using - // the .matrix() method: - std::cout << "world_anchored_camera_pose:\n" - << world_anchored_camera_pose.matrix() << std::endl; -``` - -[hello_se3](cpp/examples/test_install_targets/hello_se3.cpp) - -### Tabel of Lie Groups - -The following table gives an overview of all Lie Groups in Sophus. - -| c++ type | Lie group name | Description | -| ----------------------------------------------|------------------------------------------------------| ---------------------------------------------------------------------------------------------------------- | -| [`Rotation2`](cpp/sophus/lie/so2.h) | Special Orthogonal Group in 2D, SO(2) | rotations in 2d, also called Circle Group, or just "angle" | -| [`Rotation3`](cpp/sophus/lie/so3.h) | Special Orthogonal Group in 3D, SO(3) | rotations in 3d, 3D orientations | -| [`Isometry2`](cpp/sophus/lie/se2.h) | Special Euclidean Group in 2D, SE(3) | rotations and translations in 2D, also called 2D rigid body transformations, 2d poses, plane isometries | -| [`Isometry3`](cpp/sophus/lie/se3.h) | Special Euclidean Group in 3D, SE(3) | rotations and translations in 3D, also called rigid body transformations,6 DoF poses, Euclidean isometries | -| [`RxSo2`](cpp/sophus/lie/rxso2.h) | Direct product of SO(3) and scalar matrix, R x SO(2) | scaling and rotations in 2D | -| [`RxSo3`](cpp/sophus/lie/rxso3.h) | Direct product of SO(3) and scalar matrix R x SO(3) | scaling and rotations in 3D | -| [`Similarity2`](cpp/sophus/lie/sim2.h) | Similarity Group in 2D, Sim(2) | scaling, rotations and translation in 2D | -| [`Similarity3`](cpp/sophus/lie/sim3.h) | Similarity Group in 3D, Sim(3) | scaling, rotations and translation in 3D | -| [`Cartesian2`](cpp/sophus/lie/cartesian.h) | 2D Euclidean Vector Space, R^2 | all vector spaces are trivial Lie groups, also called 2d translation group, the translation part of SE(2) | -| [`Cartesian3`](cpp/sophus/lie/cartesian.h) | 3D Euclidean Vector Space, R^3 | all vector spaces are trivial Lie groups, also called 3d translation group, the translation part of SE(2) | -| ----------------------------------------------|------------------------------------------------------| ---------------------------------------------------------------------------------------------------------- | - -Supported advanced features on Lie groups: - -- ✅ (linear) interpolation -- ✅ Spline interpolation -- ✅ Averaging (of more than two elements) - -## 📐More Geometry - -## 🌁Image classes - -## 📷Sensor Models - -## 📜Sympy - -## 🫙Serialization - -## 🧑🏽‍🏭Contribute - -Contributions are welcome! - -## 📝License - -This project is licensed under the [MIT](https://opensource.org/licenses/MIT) license. - -## 👩‍🚀Show your support - -Give a ⭐️ if this project helped you! +sophus2 forked form https://github.com/strasdat/Sophus/commits/sophus2 +27056f4e8aca3d36ffe6796149df5388c28767fc \ No newline at end of file diff --git a/cpp/sophus2/infra/bootstrap_venv.sh b/cpp/sophus2/infra/bootstrap_venv.sh deleted file mode 100755 index c4a237ad..00000000 --- a/cpp/sophus2/infra/bootstrap_venv.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -ex - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -source $DIR/scripts/venv_activate.sh -$DIR/scripts/venv_update_prefix_deps.sh diff --git a/cpp/sophus2/infra/scripts/compile_clang.sh b/cpp/sophus2/infra/scripts/compile_clang.sh deleted file mode 100755 index 40fb8984..00000000 --- a/cpp/sophus2/infra/scripts/compile_clang.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -mkdir -p build -cd build -CC=clang CXX=clang++ cmake -G Ninja -DSOPHUS_CERES=$SOPHUS_CERES -DROW_ACCESS=$ROW_ACCESS -DBUILD_FARM_NG_PROTOS=$BUILD_PROTOS -DBUILD_SOPHUS_TESTS=On --debug-find ../../.. -ninja diff --git a/cpp/sophus2/infra/scripts/compile_gcc.sh b/cpp/sophus2/infra/scripts/compile_gcc.sh deleted file mode 100755 index 5ed08d3c..00000000 --- a/cpp/sophus2/infra/scripts/compile_gcc.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -mkdir -p build -cd build -cmake -DSOPHUS_CERES=$SOPHUS_CERES -DROW_ACCESS=$ROW_ACCESS -DBUILD_FARM_NG_PROTOS=$BUILD_PROTOS -DBUILD_SOPHUS_TESTS=On --debug-find ../../.. -make -j1 diff --git a/cpp/sophus2/infra/scripts/compile_gcc_coverage.sh b/cpp/sophus2/infra/scripts/compile_gcc_coverage.sh deleted file mode 100755 index 57ba978b..00000000 --- a/cpp/sophus2/infra/scripts/compile_gcc_coverage.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -mkdir -p build -cd build -CC=clang CXX=clang++ cmake -G Ninja -DSOPHUS_CERES=$SOPHUS_CERES -DROW_ACCESS=$ROW_ACCESS -DBUILD_FARM_NG_PROTOS=$BUILD_PROTOS -DCOVERAGE=On --debug-find ../../.. -ninja - -ninja test - -#gcovr diff --git a/cpp/sophus2/infra/scripts/install_cmake_farm_ng_core.sh b/cpp/sophus2/infra/scripts/install_cmake_farm_ng_core.sh deleted file mode 100755 index f82f84aa..00000000 --- a/cpp/sophus2/infra/scripts/install_cmake_farm_ng_core.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -cmake --version - -rm -rf cmake-build -rm -rf farm-ng-core-build - -cd ../ci-submodules - -mkdir cmake-build -cd cmake-build -cmake -G Ninja ../cmake -ninja -sudo ninja install -cd .. - -mkdir farm-ng-core-build -cd farm-ng-core-build -cmake -G Ninja -DBUILD_FARM_NG_PROTOS=On ../farm-ng-core -ninja -sudo ninja install -cd .. - -cd ../scripts diff --git a/cpp/sophus2/infra/scripts/install_deps_ceres.sh b/cpp/sophus2/infra/scripts/install_deps_ceres.sh deleted file mode 100755 index 5b374c82..00000000 --- a/cpp/sophus2/infra/scripts/install_deps_ceres.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -cmake --version - -rm -rf ceres-solver-build - -cd ../ci-submodules - -mkdir ceres-solver-build -cd ceres-solver-build -cmake -G Ninja ../ceres-solver -ninja -sudo ninja install -cd .. - -cd ../scripts diff --git a/cpp/sophus2/infra/scripts/install_deps_mac.sh b/cpp/sophus2/infra/scripts/install_deps_mac.sh deleted file mode 100755 index 2501bdb7..00000000 --- a/cpp/sophus2/infra/scripts/install_deps_mac.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -brew install --verbose \ - ccache \ - glog \ - ninja diff --git a/cpp/sophus2/infra/scripts/install_deps_ubuntu.sh b/cpp/sophus2/infra/scripts/install_deps_ubuntu.sh deleted file mode 100755 index e02e4d94..00000000 --- a/cpp/sophus2/infra/scripts/install_deps_ubuntu.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -cmake --version - -sudo apt-get -qq update -sudo apt-get install \ - ccache \ - gfortran \ - libc++-dev \ - libatlas-base-dev \ - libgtest-dev \ - libgoogle-glog-dev \ - libprotobuf-dev \ - protobuf-compiler \ - libsuitesparse-dev \ - ninja-build - -pip install git+https://github.com/gcovr/gcovr.git diff --git a/cpp/sophus2/infra/scripts/install_deps_without_ceres_proto.sh b/cpp/sophus2/infra/scripts/install_deps_without_ceres_proto.sh deleted file mode 100755 index 51f0699d..00000000 --- a/cpp/sophus2/infra/scripts/install_deps_without_ceres_proto.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -cmake --version - -rm -rf cmake-build -rm -rf fmt-build -rm -rf expected-build -rm -rf farm-ng-core-build -rm -rf eigen-build -rm -rf Sophus-build - -cd ../ci-submodules - -mkdir cmake-build -cd cmake-build -cmake -G Ninja ../cmake -ninja -sudo ninja install -cd .. - -mkdir fmt-build -cd fmt-build -cmake -G Ninja -DBUILD_SHARED_LIBS=On -DFMT_TEST=Off ../fmt -ninja -sudo ninja install -cd .. - -mkdir expected-build -cd expected-build -cmake -G Ninja -DEXPECTED_BUILD_TESTS=Off ../expected -ninja -sudo ninja install -cd .. - -mkdir farm-ng-core-build -cd farm-ng-core-build -cmake -G Ninja -DBUILD_FARM_NG_PROTOS=Off ../farm-ng-core -ninja -sudo ninja install -cd .. - -mkdir eigen-build -cd eigen-build -cmake -G Ninja ../eigen -ninja -sudo ninja install -cd .. - -cd ../scripts diff --git a/cpp/sophus2/infra/scripts/venv_activate.sh b/cpp/sophus2/infra/scripts/venv_activate.sh deleted file mode 100644 index c5bf829c..00000000 --- a/cpp/sophus2/infra/scripts/venv_activate.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -set -ex - -# Active or create if it doesn't exist, a base VENV to install some core -# dependencies through PIP. This lets us pull in modern cmake etc. Keeping the -# venv active allows these tools to be available on the path. - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null 2>&1 && pwd)" - -# Create VENV if it doesn't exist -if ! test -f "$ROOT_DIR/venv/bin/activate"; then - echo "[Creating new VENV in $ROOT_DIR/venv]" - python3 -m venv "$ROOT_DIR/venv" - source "$ROOT_DIR/venv/bin/activate" - pip install -U pip - pip install -U wheel - pip install -U cmake ninja - - # Add hook in activate script to also set some env variables - echo "source $ROOT_DIR/scripts/venv_export_env_vars.sh" >> "$ROOT_DIR/venv/bin/activate" -fi - -echo "[Activating VENV in $ROOT_DIR/venv]" -source "$ROOT_DIR/venv/bin/activate" diff --git a/cpp/sophus2/infra/scripts/venv_export_env_vars.sh b/cpp/sophus2/infra/scripts/venv_export_env_vars.sh deleted file mode 100644 index 6dc93a82..00000000 --- a/cpp/sophus2/infra/scripts/venv_export_env_vars.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -# Source this file (executing it wont set variables). -# Setup env vars for using libs and binaries in venv/prefix inside. -# Required for CMake and dynamic library loading on Linux. - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null 2>&1 && pwd)" -PREFIX_PATH="$ROOT_DIR/venv/prefix" - -export PATH=$PREFIX_PATH/bin:$PATH -export CMAKE_PREFIX_PATH=$PREFIX_PATH -export LD_LIBRARY_PATH=$PREFIX_PATH/lib:${LD_LIBRARY_PATH} diff --git a/cpp/sophus2/infra/scripts/venv_update_prefix_deps.sh b/cpp/sophus2/infra/scripts/venv_update_prefix_deps.sh deleted file mode 100755 index db9d4e5b..00000000 --- a/cpp/sophus2/infra/scripts/venv_update_prefix_deps.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -set -ex - - -# This will download the prebuilt dependencies for Sophus. It will first -# check if the binaries are already up-to-date based on the cmake git -# SHA. The binaries are placed in ../venv/prefix for the Sophus build, -# though you must set CMAKE_PREFIX_PATH to that directory for cmake to find them - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null 2>&1 && pwd)" - -# Choose release SHA based on cmake git repo SHA -# Override by setting RELEASE_SHA env var -RELEASE_SHA="${RELEASE_SHA:-$(git submodule status ../cmake | cut -c2-8)}" - -# If the needed RELEASE_SHA doesn't match what we have, download -if ! grep -q $RELEASE_SHA "$ROOT_DIR/venv/prefix/release_version.txt"; then - mkdir -p "$ROOT_DIR/venv" - $ROOT_DIR/../cmake/scripts/download_release.sh - rm -rf $ROOT_DIR/venv/prefix - tar -xzf $ROOT_DIR/../cmake/scripts/venv.tar.gz --strip-components=1 -C $ROOT_DIR/venv - - if [[ "$OSTYPE" == "darwin"* ]]; then - # MacOS RPath works a bit differently. We need to define the RPaths that - # will be searched at runtime. We'll add a relative one to each executable - for exe in "$ROOT_DIR/venv/prefix/bin"/*; do - install_name_tool -add_rpath @executable_path/../lib $exe || true - done - fi - - echo "$RELEASE_SHA" > $ROOT_DIR/venv/prefix/release_version.txt - echo "[Updated binary dependencies. Done!]" -else - echo "[Updated binary dependencies. Already up to date!]" -fi diff --git a/cpp/sophus2/run_clang_tidy.sh b/cpp/sophus2/run_clang_tidy.sh deleted file mode 100755 index 4c37ec3a..00000000 --- a/cpp/sophus2/run_clang_tidy.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -e - -rm -rf clang-tidy-build -mkdir clang-tidy-build -cd clang-tidy-build -CC=clang CXX=clang++ cmake -GNinja -DSOPHUS_CERES=Off -DBUILD_FARM_NG_PROTOS=Off .. -ninja -cd .. - -# run clang tidy -run-clang-tidy-12 -quiet -p clang-tidy-build/ cpp/sophus/.*\.cpp -fix -style none diff --git a/cpp/sophus2/setup.cfg b/cpp/sophus2/setup.cfg deleted file mode 100644 index e7499a71..00000000 --- a/cpp/sophus2/setup.cfg +++ /dev/null @@ -1,58 +0,0 @@ -[metadata] -name = sophus -version = 2.0.0 -description = - c++ 2d/3d manifold library - only python support for Sophus ProtoBuf - messages are included in this package so far. -long_description = file: README.md -author = Farm-ng Inc. -author_email = info@farm-ng.com -keywords = robotics, open-source -license_files = LICENSE -classifiers = - Development Status :: 4 - Beta - Intended Audience :: Developers - License :: OSI Approved :: MIT License - Operating System :: OS Independent - Programming Language :: Python :: 3 - Topic :: Software Development - Framework :: Robot Framework - -[options] -python_requires = >=3.6 -setup_requires = - wheel - farm-ng-package -install_requires = - protobuf - grpcio -tests_require = - pytest - pytest-runner - pytest-mypy -test_suite = tests - -package_dir = - = py -packages = - sophus - -[options.extras_require] -dev = - pytest==7.1.2 - pytest-mypy==0.9.1 - pre-commit==2.20.0 - mypy==0.971 - types-protobuf - pylint - grpcio-tools - mypy-protobuf - pylint-protobuf==0.20.2 - -[mypy] -files = py/sophus, py/tests, py/examples -ignore_missing_imports = True - -[options.package_data] -sophus = - *.proto diff --git a/cpp/sophus2/setup.py b/cpp/sophus2/setup.py deleted file mode 100644 index 981e8ad9..00000000 --- a/cpp/sophus2/setup.py +++ /dev/null @@ -1,31 +0,0 @@ -from setuptools import setup - -from farm_ng.package.commands import ( - CleanFilesCommand, - BuildProtosInstall, - BuildProtosDevelop, - BuildProtosEggInfo, -) - -PROTO_ROOT: str = "protos" -PACKAGE_ROOT: str = "py" - -BuildProtosDevelop.user_options.append(("proto-root=", None, PROTO_ROOT)) -BuildProtosDevelop.user_options.append(("package-root=", None, PACKAGE_ROOT)) - -BuildProtosInstall.user_options.append(("proto-root=", None, PROTO_ROOT)) -BuildProtosInstall.user_options.append(("package-root=", None, PACKAGE_ROOT)) - -BuildProtosEggInfo.user_options.append(("proto-root=", None, PROTO_ROOT)) -BuildProtosEggInfo.user_options.append(("package-root=", None, PACKAGE_ROOT)) - -CleanFilesCommand.user_options.append(("package-root=", None, PACKAGE_ROOT)) - -setup( - cmdclass={ - "install": BuildProtosInstall, - "develop": BuildProtosDevelop, - "egg_info": BuildProtosEggInfo, - "clean": CleanFilesCommand, - } -) diff --git a/infra/bootstrap_env.sh b/infra/bootstrap_env.sh new file mode 100755 index 00000000..2b7923be --- /dev/null +++ b/infra/bootstrap_env.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -ex + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +source $DIR/../cmake/scripts/venv_activate.sh +$DIR/../cmake/scripts/venv_update_prefix_deps.sh diff --git a/infra/bootstrap_venv.sh b/infra/bootstrap_venv.sh deleted file mode 100755 index c4a237ad..00000000 --- a/infra/bootstrap_venv.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -ex - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -source $DIR/scripts/venv_activate.sh -$DIR/scripts/venv_update_prefix_deps.sh diff --git a/infra/scripts/install_farm_ng_cmake.sh b/infra/scripts/install_farm_ng_cmake.sh deleted file mode 100755 index e539027b..00000000 --- a/infra/scripts/install_farm_ng_cmake.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x # echo on -set -e # exit on error - -cmake --version -source ../venv/bin/activate -cd ../ci-submodules -rm -rf cmake-build -mkdir cmake-build -cd cmake-build -cmake -G Ninja ../cmake -DCMAKE_INSTALL_PREFIX=${CMAKE_PREFIX_PATH} -ninja -ninja install -cd .. - -cd ../scripts diff --git a/infra/scripts/venv_activate.sh b/infra/scripts/venv_activate.sh old mode 100644 new mode 100755 diff --git a/infra/scripts/venv_export_env_vars.sh b/infra/scripts/venv_export_env_vars.sh old mode 100644 new mode 100755 diff --git a/infra/scripts/venv_update_prefix_deps.sh b/infra/scripts/venv_update_prefix_deps.sh index 3ea50b84..971433d1 100755 --- a/infra/scripts/venv_update_prefix_deps.sh +++ b/infra/scripts/venv_update_prefix_deps.sh @@ -3,24 +3,22 @@ set -ex # This will download the prebuilt dependencies for farm-ng-core. It will first -# check if the binaries are already up-to-date based on the cmake git +# check if the binaries are already up-to-date based on the farm-ng-cmake git # SHA. The binaries are placed in ../venv/prefix for the farm-ng-core build, # though you must set CMAKE_PREFIX_PATH to that directory for cmake to find them ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null 2>&1 && pwd)" -# Choose release SHA based on cmake git repo SHA +# Choose release SHA based on farm-ng-cmake git repo SHA # Override by setting RELEASE_SHA env var -RELEASE_SHA="${RELEASE_SHA:-$(git submodule status ../cmake | cut -c2-8)}" +RELEASE_SHA="${RELEASE_SHA:-$(git submodule status ci-submodules/farm-ng-cmake | cut -c2-8)}" # If the needed RELEASE_SHA doesn't match what we have, download if ! grep -q $RELEASE_SHA "$ROOT_DIR/venv/prefix/release_version.txt"; then mkdir -p "$ROOT_DIR/venv" - $ROOT_DIR/../cmake/scripts/download_release.sh + $ROOT_DIR/ci-submodules/farm-ng-cmake/scripts/download_release.sh rm -rf $ROOT_DIR/venv/prefix - - ls $ROOT_DIR/../cmake/scripts/venv.tar.gz - tar -xzf $ROOT_DIR/../cmake/scripts/venv.tar.gz --strip-components=1 -C $ROOT_DIR/venv + tar -xzf $ROOT_DIR/ci-submodules/farm-ng-cmake/scripts/venv.tar.gz --strip-components=1 -C $ROOT_DIR/venv if [[ "$OSTYPE" == "darwin"* ]]; then # MacOS RPath works a bit differently. We need to define the RPaths that