File: Quick-start.md

package info (click to toggle)
manif 0.0.5-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,576 kB
  • sloc: cpp: 11,789; ansic: 8,774; python: 2,158; sh: 24; makefile: 23; xml: 21
file content (127 lines) | stat: -rw-r--r-- 3,803 bytes parent folder | download
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