Giter Club home page Giter Club logo

bipedal-locomotion-framework's Introduction

bipedal-locomotion-framework

C++ Standard Size doxygen CI


⚠️ REPOSITORY UNDER DEVELOPMENT ⚠️
The libraries implemented in this repository are still experimental and we cannot guarantee stable API


The bipedal-locomotion-framework project is a suite of libraries for achieving bipedal locomotion on humanoid robots.

Table of content

📄 Mandatory dependencies

The bipedal-locomotion-framework project is versatile and can be used to compile only some components.

The minimum required dependencies are Eigen3, iDynTree and spdlog. If you want to build the tests please remember to install Catch2. If you are interested in the python bindings generation please install python3 and pybind11 in your system.

📙 Exported components

The bipedal-locomotion-framework project consists of several components. The components are stored in the src folder and their compilation depends on the installed dependencies.

Component Description Additional Dependencies
AutoDiff Bridge between CppAD and Eigen CppAD
ContactModels Models to describe the contact between robot and enviroment -
Contacts Syntactic description of a contact manif
CommonConversions Common conversion utilities used in the framework -
ManifConversions manif library related conversion utilities used in the framework manif
Estimators Library containing observers -
FloatingBaseEstimator Library containing floating base estimators manif
GenericContainer Data structure similar to span but resizable. -
IK Inverse kinematics manif osqp-eigen
Math Library containing mathematical algorithms -
ParametersHandler Library for retrieving parameters from configuration files YARP (only if you want the YARP implementation)
Planners Library containing planner useful for locomotion manif CasADi qhull
RobotInterface Generic interface classes to adapt to various IO data formats YARP (only if you want the YARP implementation)
System Description of discrete and continuous dynamical systems -
TSID Task space inverse dynamics manif lie-group-controllers
YarpUtilities Utilities library for retrieving data and from YARP structures YARP
PerceptionInterface Generic interface classes to adapt to perception data formats like images and point clouds OpenCV PCL
PerceptionCapture Library containing driver classes for perception devices OpenCV PCL realsense2
PerceptionFeatures Library containing perception algorithms useful for locomotion OpenCV

🔨 Build the suite

The bipedal-locomotion-framework can be built on Windows, macOS, and Linux. The easiest way to compile the library is to use the robotology-superbuild. If you enable the profiles ROBOTOLOGY_ENABLE_DYNAMICS and ROBOTOLOGY_ENABLE_DYNAMICS_FULL_DEPS in the robotology-superbuild you will automatically clone and build bipedal-locomotion-framework and all the dependencies.

If you do not want to use the robotology-superbuild you can manually compile the code in the repository running the following command in the terminal

git clone https://github.com/dic-iit/bipedal-locomotion-framework.git
cd bipedal-locomotion-framework
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=<path/where/you/want/to/install> \
      -DCMAKE_BUILD_TYPE=Release \
cmake --build . --config Release --target install

Remark: If you manually compile the framework remember to install the dependencies required by the component you are interested in.

💻 Some utilities

The bipedal-locomotion-framework ships also some utilities that can help you in the everyday tests on a real robot. You can find them in the utilities folder. Each utility contains a well-documented README where you can find further details.

🐍 Python

bipedal-locomotion-framework provides also python bindings. Only a small set of the components implemented in the library have the corresponding python bindings.

If you want to compile the bindings please install python3 and pybind11 in your system then you can run the following CMake command in your build folder

cmake -DCMAKE_INSTALL_PREFIX=<path/where/you/want/to/install> \
      -DCMAKE_BUILD_TYPE=Release \
      -DFRAMEWORK_COMPILE_PYTHON_BINDINGS:BOOL=ON \
      -DPython3_ROOT_DIR=$(python3 -c "import sys; print(sys.prefix)") \
      -DFRAMEWORK_USE_Python3:BOOL=ON \
      -DFRAMEWORK_USE_pybind11:BOOL=ON .
cmake --build . --config Release --target install

Disclaimer: The python bindings are currently supported on Linux.

🏃 How to use the libraries

The bipedal-locomotion-framework provides native CMake support which allows the library to be easily used in CMake projects.

bipedal-locomotion-framework exports the CMake targets presented in Exported components section. The targets can be imported using the find_package command and used by calling target_link_libraries.

For instance, Math component can be used as follows:

cmake_minimum_required(VERSION 3.0)
project(myproject)
find_package(BipedalLocomotionFramework COMPONENTS Math REQUIRED)
add_executable(example example.cpp)
target_link_libraries(example PRIVATE BipedalLocomotion::Math)

⚙️ Contributing

bipedal-locomotion-framework is an open-source project, and is thus built with your contributions. We strongly encourage you to open an issue with your feature request. Once the issue has been opened, you can also proceed with a pull-request 🚀

bipedal-locomotion-framework's People

Contributors

giulioromualdi avatar s-dafarra avatar prashanthr05 avatar diegoferigo avatar isorrentino avatar traversaro avatar danielepucci avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.