EigenPy is an open-source framework that allows the binding of the famous Eigen C++ library in Python via Boost.Python.
EigenPy provides:
- full memory sharing between Numpy and Eigen, avoiding memory allocation
- full support Eigen::Ref avoiding memory allocation
- full support of the Eigen::Tensor module
- exposition of the Geometry module of Eigen for easy code prototyping
- standard matrix decomposion routines of Eigen such as the Cholesky decomposition (SVD and QR decompositions can be added)
- full support of SWIG objects
- full support of runtime declaration of Numpy scalar types
- extended API to expose several STL types and some of their Boost equivalents:
optional
types,std::pair
, maps, variants... - full support of vectorization between C++ and Python (all the hold objects are properly aligned in memory)
The installation of EigenPy on your computer is made easy for Linux/BSD, Mac OS X, and Windows environments.
You simply need this simple line:
conda install eigenpy -c conda-forge
You can easily install EigenPy from binaries.
- Add robotpkg as source repository to apt:
sudo sh -c "echo 'deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg' >> /etc/apt/sources.list.d/robotpkg.list"
- Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
- You need to run at least one apt update to fetch the package descriptions:
sudo apt-get update
- The installation of EigenPy and its dependencies is made through the line:
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).
The installation of EigenPy on Mac OS X is made via HomeBrew. You just need to register the tap of the software repository.
brew tap gepetto/homebrew-gepetto
and then install EigenPy for Python 3.x with:
brew install eigenpy
Standard matrix decomposion routines of Eigen such as the SVD and QR decompositions can be readily added to EigenPy following the example of the Cholesky decomposition that is already implemented. Feel free to open a PR if you wrap them for your use case.
The following people have been involved in the development of EigenPy:
- Justin Carpentier (Inria): main developer and manager of the project
- Nicolas Mansard (LAAS-CNRS): initial project instructor
- Wolfgang Merkt (University of Edinburgh): ROS integration and support
- Sean Yen (Microsoft): Windows integration
- Loïc Estève (Inria): Conda integration
- Wilson Jallet (Inria/LAAS-CNRS): core developer
- Joris Vaillant (Inria): core developer and manager of the project
If you have taken part in the development of EigenPy, feel free to add your name and contribution here.
The development of EigenPy is supported by the Gepetto team @LAAS-CNRS and the Willow team @INRIA.