LiuZe 3b51f35e80 base commit | 1 year ago | |
---|---|---|
.. | ||
gtsam | 1 year ago | |
gtsam_unstable | 1 year ago | |
CMakeLists.txt | 1 year ago | |
CustomFactors.md | 1 year ago | |
MANIFEST.in | 1 year ago | |
README.md | 1 year ago | |
requirements.txt | 1 year ago | |
setup.py.in | 1 year ago |
This is the Python wrapper around the GTSAM C++ library. We use our custom wrap library to generate the bindings to the underlying C++ code.
For instructions on updating the version of the wrap library included in GTSAM to the latest version, please refer to the wrap README
-DGTSAM_PYTHON_VERSION=3.6
option when running cmake
otherwise the default interpreter will be used.pyparsing(>=2.4.2)
, and numpy(>=1.11.0)
. These can be installed as follows: pip install -r <gtsam_folder>/python/requirements.txt
GTSAM_BUILD_PYTHON
cmake flag enabled to configure building the wrapper. The wrapped module will be built and copied to the directory <PROJECT_BINARY_DIR>/python
. For example, if your local Python version is 3.6.10, then you should run:
bash
cmake .. -DGTSAM_BUILD_PYTHON=1 -DGTSAM_PYTHON_VERSION=3.6.10
If you do not have TBB installed, you should also provide the argument -DGTSAM_WITH_TBB=OFF
.
- Build GTSAM and the wrapper with make
(or ninja
if you use -GNinja
).
- To install, simply run make python-install
(ninja python-install
).
- The same command can be used to install into a virtual environment if it is active.
- NOTE: if you don't want GTSAM to install to a system directory such as /usr/local
, pass -DCMAKE_INSTALL_PREFIX="./install"
to cmake to install GTSAM to a subdirectory of the build directory.
- You can also directly run make python-install
without running make
, and it will compile all the dependencies accordingly.
## Unit Tests
The Python toolbox also has a small set of unit tests located in the
test directory.
To run them, use make python-test
.
## Utils
TODO
## Examples
TODO
## Writing Your Own Scripts
See the tests for examples.
### Some Important Notes:
- Vector/Matrix:
- GTSAM expects double-precision floating point vectors and matrices.
Hence, you should pass numpy matrices with dtype=float
, or float64
, to avoid any conversion needed.
- Also, GTSAM expects column-major matrices, unlike the default storage
scheme in numpy. But this is only performance-related as pybind11
should translate them when needed. However, this will result a copy if your matrix is not in the expected type
and storage order.
## Wrapping Custom GTSAM-based Project
Please refer to the template project and the corresponding tutorial available here.