-
Notifications
You must be signed in to change notification settings - Fork 1
Dependencies
This wiki page describes the dependencies of the MHP project, including their license type and what they are used for.
Each element of the following list is a link to the corresponding section of this page. Required third-party dependencies you have to install yourself (instructions are provided in the installation guide)
- Ipopt (https://coin-or.github.io/Ipopt/, EclipsePublic License)
- HSL (https://licences.stfc.ac.uk/product/coin-hsl, various license types available)
- MUMPS (https://mumps-solver.org/index.php, CeCILL-C license)
Included third-party dependencies
- Eigen3 (https://eigen.tuxfamily.org, MPL2 License)
- universal_robot (https://github.com/ros-industrial/universal_robot, Apache 2.0)
- ur_modern_driver (https://github.com/ros-industrial/ur_modern_driver, Apache 2.0)
Optional third-party dependencies (Choose while compiling)
- (optional) dkm (https://github.com/genbattle/dkm/tree/master, MIT License)
- (optional) gram_savitzky_golay (https://github.com/arntanguy/gram_savitzky_golay, BSD 2-Clause "Simplified" License)
- (optional) Armadillo (https://arma.sourceforge.net/, Apache 2.0 License)
- (optional) spl (https://github.com/eth-ait/spl, GNU General Public License v3.0)
Optional third-party dependencies you have to install on your own (hardware-related)
- (optional) NatNet SDK (https://optitrack.com/software/natnet-sdk/, Download by yourself)
- (optional) Intel MKL (https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html#base-kit)
Ipopt is an open-source software package for large-scale nonlinear optimization (source: https://coin-or.github.io/Ipopt/).
This project uses Ipopt to solve the optimization problem of trajectory optimization. The optimization problem is formulated as a Nonlinear Program (NLP) and solved by Ipopt.
Ipopt itself requires further dependencies, which are listed on the Ipopt website and are also part of the installation guide and this dependencies page. For basic usage of Ipopt, some linear algebra libraries are required. We recommend the use of Intel MKL (see Intel MKL). Furthermore, Ipopt requires a linear solver like HSL or MUMPS. We recommend the usage of HSL, which is free for academic use since a better performance is reached.
Ipopt is licensed under the Eclipse Public License (EPL) v2.0 (see https://coin-or.github.io/Ipopt/LICENSE.html).
HSL is a collection of linear solvers that can be used for optimization problems (https://licences.stfc.ac.uk/product/coin-hsl).
This project uses HSL as a linear solver for Ipopt. If a license is requested, HSL is free for academic use (see https://licences.stfc.ac.uk/product/coin-hsl). The solver MA27 is free to all users but must also be requested.
MUMPS is a parallel sparse direct solver (source: https://mumps-solver.org/index.php).
This project uses MUMPS as a linear solver for Ipopt.
MUMPS is licensed under the CeCILL-C license (see https://cecill.info/licences/Licence_CeCILL-C_V1-en.html).
Furthermore, we want to acknowledge the authors of MUMPS by referencing the following papers:
P. R. Amestoy, I. S. Duff, J. Koster and J.-Y. L'Excellent, A fully asynchronous multifrontal solver using distributed dynamic scheduling, SIAM Journal on Matrix Analysis and Applications, Vol 23, No 1, pp 15-41 (2001).
P. R. Amestoy, A. Buttari, J.-Y. L'Excellent and T. Mary, Performance and scalability of the block low-rank multifrontal factorization on multicore architectures, ACM Transactions on Mathematical Software, Vol 45, Issue 1, pp 2:1-2:26 (2019)
Eigen is a library that supports linear algebra operations (source: https://eigen.tuxfamily.org).
This project uses Eigen for various operations related to matrix and vector operations.
Eigen is licensed under the Mozilla Public License 2.0 (MPL2) (see https://eigen.tuxfamily.org/index.php?title=Main_Page#License).
dkm provides a generic k-means clustering algorithm (source: https://github.com/genbattle/dkm/tree/master).
This project uses dkm to initialize a Gaussian Mixture Model (GMM) for uncertainty estimation of human motion extrapolations.
dkm is licensed under the MIT License (see: License.md inside the mhp_robot/extern/dkm folder or https://github.com/genbattle/dkm/blob/master/LICENSE.md).
The gram_savitzky_golay library provides a Savitzky-Golay filter based on Gram Polynomials (source:https://github.com/arntanguy/gram_savitzky_golay). The theoretical description of this approach is described in General Least-Squares Smoothing and Differentiation by the Convolution (Savitzky-Golay) Method.
This project uses the gram_savitzky_golay library to estimate the velocity and accelerations of human motions for extrapolations of human motions.
gram_savitzky_golay is licensed under the BSD 2-Clause "Simplified" License (see: License inside the mhp_robot/extern/SavitzkyGolayFilter folder or https://github.com/arntanguy/gram_savitzky_golay/blob/master/LICENSE)
Armadillo is a C++ linear algebra library (source: https://arma.sourceforge.net/).
This project uses Armadillo for GMMs related to uncertainty estimation of human motion extrapolations.
Armadillo is licensed under the Apache 2.0 License (see: https://arma.sourceforge.net/)
Structured Prediction Helps 3D Human Motion Modelling is a repository that provides a neural network based approach to predict human motions. The approach is described in the paper: Aksan, E., Kaufmann, M., & Hilliges, O. (2019). Structured Prediction Helps 3D Human Motion Modelling. In The IEEE International Conference on Computer Vision (ICCV). (https://ait.ethz.ch/spl).
This project uses the approach to predict human motions. To use this approach, it is required to install the correct Tensorflow version and suitable drivers and additions for your GPU in case you want to use a GPU. Please check out the requirements for your environment in the spl repository (https://github.com/eth-ait/spl). We recommend the usage of virtual environments.
The approach is licensed under the GNU General Public License v3.0 (see: License inside the mhp_robot/extern/spl folder or https://github.com/eth-ait/spl/blob/master/LICENSE)
Intel Math Kernel Library provides optimized linear algebra routines (source: https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html).
This project uses Intel MKL to improve the solving time of Ipopt.
Intel MKL can be downloaded at https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html#base-kit. For installation instructions, please refer to the installation guide. Intel MKL is licensed under the Intel Simplified Software License (see https://software.intel.com/content/www/us/en/develop/articles/end-user-license-agreement.html).
NatNet SDK integrates motion-tracking data from OptiTrack systems into various applications (https://optitrack.com/software/natnet-sdk/).
This project uses the NatNet SDK to receive motion-tracking data from our OptiTrack Motion Capture System (for detailed information on our system, refer to our website (added for final version)).
Since this software is directly related to our hardware, we cannot provide a license or code for this software. Suppose you also use an Optitrack Motion Capture System. In that case, you can download the SDK yourself and integrate it into this framework with the following steps (just a recommendation; you can also set it up differently):
- Include the NatNet files in the extern folder
- Use the -DUSE_NATNET flag while compiling the project
- Add your NatNet configuration in the mhp_robot/config/mocap folder
If you use a different Motion Capture System, you can still use it for our framework. The planner itself only relies on obstacle poses inside the /tf topic. Therefore, you can add your node to publish your measured Mocap poses into the /tf topic. For example, you can adapt/reuse the robot_mocap.h and _robot_mocap._cpp* files in the mhp_robot/src/robot_mocap folder, the robot_mocap_client.cpp in mhp_robot/src/robot_tools as well as the bringup_mocap.launch file in mhp_robot/src.
The univeral_robot and ur_modern_driver packages provide a ROS interface for the Universal Robot arms.
This project uses the universal_robot and ur_modern_driver packages to control the universal robot arm as well as for simulations of the robots.
Note that we currently rely on older versions of the packages since a few adaptations have been added.