1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
# Quick start
- [Quick start](#quick-start)
- [Installing manifpy](#installing-manifpy)
- [From conda](#from-conda)
- [From source](#from-source)
- [Getting Pybind11](#getting-pybind11)
- [Getting the dependencies](#getting-the-dependencies)
- [Building](#building)
- [Testing](#testing)
- [Use manifpy in your project](#use-manifpy-in-your-project)
- [Tutorials and application demos](#tutorials-and-application-demos)
## Installing manifpy
### From conda
`manifpy` can be installed from the [conda-forge][conda-manifpy],
```bash
conda install -c conda-forge manifpy
```
### From source
#### Getting Pybind11
The Python wrappers are generated using [pybind11][pybind11-rtd]. So first we need to install it,
but we want it available directly in our environment root so that `CMake` can find it.
To do so we can use,
```bash
python3 -m pip install "pybind11[global]"
```
Note that this is not recommended when using one's system Python,
as it will add files to `/usr/local/include/pybind11` and `/usr/local/share/cmake/pybind11`.
Another way is to use `CMake` to install it,
```bash
git clone https://github.com/pybind/pybind11.git
cd pybind11 && mkdir build && cd build
cmake ..
make install
```
<!-- ## Installation -->
#### Getting the dependencies
- Eigen 3 :
- Linux ( Ubuntu and similar )
```bash
apt-get install libeigen3-dev
```
- OS X
```bash
brew install eigen
```
- [lt::optional][optional-repo] : included in the `external` folder
#### Building
To generate `manif` Python bindings run,
```bash
git clone https://github.com/artivis/manif.git
cd manif
python3 -m pip install .
```
#### Testing
To run the tests you will also need `numpy`,
```bash
python3 -m pip install numpy
```
To run the tests, simply hits:
```bash
python3 -m pytest
```
## Use manifpy in your project
```python
from manifpy import SE3
...
state = SE3.Identity()
...
```
## Tutorials and application demos
We provide some self-contained and self-explained executables implementing some real problems.
Their source code is located in `manif/examples/`.
These demos are:
- [`se2_localization.py`](examples/se2_localization.py): 2D robot localization based on fixed landmarks using SE2 as robot poses. This implements the example V.A in the paper.
- [`se3_localization.py`](examples/se3_localization.py): 3D robot localization based on fixed landmarks using SE3 as robot poses. This re-implements the example above but in 3D.
- [`se2_sam.py`](examples/se2_sam.py): 2D smoothing and mapping (SAM) with simultaneous estimation of robot poses and landmark locations, based on SE2 robot poses. This implements a the example V.B in the paper.
- [`se3_sam.py`](examples/se3_sam.py): 3D smoothing and mapping (SAM) with simultaneous estimation of robot poses and landmark locations, based on SE3 robot poses. This implements a 3D version of the example V.B in the paper.
- [`se3_sam_selfcalib.py`](examples/se3_sam_selfcalib.py): 3D smoothing and mapping (SAM) with self-calibration, with simultaneous estimation of robot poses, landmark locations and sensor parameters, based on SE3 robot poses. This implements a 3D version of the example V.C in the paper.
- [`se_2_3_localization.py`](examples/se_2_3_localization.py): A strap down IMU model based 3D robot localization, with measurements of fixed landmarks, using SE_2_3 as extended robot poses (translation, rotation and linear velocity).
To run a demo, simply go to the `manif/examples/` folder and run,
```bash
cd manif/examples
python3 se2_localization.py
```
[//]: # (URLs)
[pybind11-rtd]: https://pybind11.readthedocs.io/en/stable/index.html
[optional-repo]: https://github.com/TartanLlama/optional
[conda-manifpy]: https://anaconda.org/conda-forge/manifpy
|