-
Notifications
You must be signed in to change notification settings - Fork 40
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
59 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,56 +1,77 @@ | ||
eigenpy | ||
=========== | ||
EigenPy | ||
====== | ||
|
||
Setup | ||
----- | ||
**EigenPy** is an open source framework which allows to bind the famous [Eigen](http://eigen.tuxfamily.org) in Python as NumPy object (as matrix or array). | ||
**EigenPy** also exposes the Geometry module of Eigen for easy code prototyping. | ||
**EigenPy** also supports the basic matrix decomposion routines of Eigen such as the Cholesky decomposition, SVD decomposition, QR decomposition, and etc. | ||
|
||
Before compiling this package, make sure to have initialized all git | ||
submodules of this repo. To initialize the submodules when cloning the | ||
repo, use: | ||
## Setup | ||
|
||
```bash | ||
git clone --recursive <git_url> | ||
``` | ||
|
||
To compile this package, it is recommended to create a separate build | ||
directory: | ||
|
||
mkdir _build | ||
cd _build | ||
cmake [OPTIONS] .. | ||
make install | ||
The installation of **EigenPy** on your computer is made easy for Linux/BSD and Mac OS X environments. | ||
|
||
Please note that CMake produces a `CMakeCache.txt` file which should | ||
be deleted to reconfigure a package from scratch. | ||
### Ubuntu | ||
|
||
#### Compiling for python3 on macOS | ||
You can easily install **EigenPy** from binairies. | ||
|
||
Make sure you have boost for python3 installed. If you use homebrew, you can install it via `brew install boost-python3`. | ||
#### Add robotpkg apt repository | ||
|
||
Assuming you have python2 and python3 installed on your system, you can compile for python3 using | ||
1. Check your distribution codename in a terminal with the following command: | ||
``` | ||
$ lsb_release -c | ||
Codename: xenial | ||
``` | ||
2. Add robotpkg as source repository to apt: | ||
``` | ||
sudo sh -c "echo 'deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub xenial robotpkg' >> /etc/apt/sources.list.d/robotpkg.list" | ||
``` | ||
3. Register the authentication certificate of robotpkg: | ||
``` | ||
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add - | ||
``` | ||
4. You need to run at least once apt update to fetch the package descriptions: | ||
``` | ||
sudo apt-get update | ||
``` | ||
#### Install EigenPy | ||
5. The installation of **EigenPy** and its dependencies is made through the line: | ||
|
||
For Python 2.7 | ||
``` | ||
sudo apt install robotpkg-py27-eigenpy | ||
``` | ||
or for Python 3.{5,6,7} | ||
``` | ||
cmake -DPYTHON_EXECUTABLE=`which python3` .. | ||
sudo apt install robotpkg-py35-eigenpy | ||
``` | ||
where 35 should be replaced by the python 3 you want to work this (e.g. `robotpkg-py36-eigenpy` to work with Python 3.6). | ||
|
||
In case you get an error as only the libraries for python2 are found, make sure macOS can find the python3 libraries. One way to ensure this is by adding a symbolic link to the python3 libraries like | ||
### Mac OS X | ||
|
||
The installation of **EigenPy** on Mac OS X is made via [HomeBrew](https://brew.sh/). | ||
You just need to register the tap of the sofware repository. | ||
|
||
``` | ||
brew tap gepetto/homebrew-gepetto | ||
``` | ||
ln -s /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7.dylib /usr/loca/lib/libpython3.7.dylib | ||
and then install **EigenPy** with: | ||
``` | ||
brew install eigenpy | ||
``` | ||
for Python 2.7 or: | ||
``` | ||
brew install eigenpy-python3 | ||
``` | ||
for Python 3 support. | ||
|
||
## Credits | ||
|
||
The following people have been involved in the development of **EigenPy**: | ||
|
||
where the abolve file source path was determined by looking at the output of `brew ls --verbose python3 | grep libpython3`. | ||
- [Justin Carpentier](https://jcarpent.github.io) (INRIA): main developer and manager of the project | ||
- [Nicolas Mansard](http://projects.laas.fr/gepetto/index.php/Members/NicolasMansard) (LAAS-CNRS): initial project instructor | ||
|
||
### Dependencies | ||
If you have taken part to the development of **EigenPy**, feel free to add your name and contribution here. | ||
|
||
The matrix abstract layer depends on several packages which | ||
have to be available on your machine. | ||
## Acknowledgments | ||
|
||
- Libraries: | ||
- eigen3 | ||
- System tools: | ||
- CMake (>=2.6) | ||
- pkg-config | ||
- usual compilation tools (GCC/G++, make, etc.) | ||
- Python 2.7 | ||
- Boost python | ||
The development of **EigenPy** is supported by the [Gepetto team](http://projects.laas.fr/gepetto/) [@LAAS-CNRS](http://www.laas.fr) and the [Willow team](https://www.di.ens.fr/willow/) [@INRIA](http://www.inria.fr). |