Skip to content

robot-locomotion/dwl

Repository files navigation

The Dynamic Whole-body Locomotion library (DWL)

Introduction

The Dynamic Whole-body Locomotion library (DWL) implements a set of functionalities to develop, design, and deploy motion planning, control and perception algorithms for legged locomotion. DWL has different modules such as: kinematics, dynamics, solvers (tree-search, optimization, etc), and environment descriptions. All these tools are designed for both fast prototyping and deployment thanks to its c++ implementation and Python bindings. The DWL toolbox can be used in various software frameworks such as ROS and LCM, and for real-time control and planning.

DWL was developed by Carlos Mastalli at Dynamic Legged Systems lab (DLS), Istituto Italiano di Tecnologia, Italy. The DWL is core toolbox used along of various software of the DLS lab at IIT.

The source code is released under a BSD 3-Clause license.

Author: Carlos Mastalli, [email protected]
With support from the Dynamic Legged Systems lab at Istituto Italiano di Tecnologia

License BSD-3-Clause Build Status

Dependencies

The algorithms are built primarily in C++. The library uses a number of the local dependencies, which some of them are optionals. The Python bindings are generated using SWIG, you can generate them by setting DWL_WITH_PYTHON=True.

DWL has the following required dependencies:

The following dependencies are optional:

Building

To build DWL from source code, you first need to install its dependencies. We recommend you to install them using the install_deps.sh script. The INSTALL_DEPS_PREFIX defines the folder where is installed its dependencies (usually /usr/local for linux machines). However you can install them in your local folder.

Once dependencies are installed, you can build DWL on Linux. Go to the top-level directory of DWL and type the following commands:

mkdir -p build/Release
cd build/Release
cmake -DCMAKE_INSTALL_PREFIX=${/your/dependencies/path} -DINSTALL_DEPS_PREFIX=${/dwl/installation/path}  ../../

Note that /usr/local is the default path of ${/your/dependencies/path} and ${/dwl/installation/path}.

Additionally you could installed as catkin project as follows:

cd your_ros_workspace/
catkin_make -DCMAKE_INSTALL_PREFIX=${/dwl/installation/path} -DINSTALL_DEPS_PREFIX=${/your/dependencies/path}

Finally you can generate the Python bindings and Doxygen documentation by doing:

cmake -DDWL_WITH_PYTHON=True -DDWL_WITH_DOC=True ../

Installation

If you compilate DWL as CMake project, you can install it using "make install". Additionally DWL has a optional command for installing only the Python modules, i.e. "make install_python". Note that all the DWL header files, libraries, executatables and CMake module file will be installed in CMAKE_INSTALL_PREFIX

HowTo

Using DWL, and its dependencies, is simple for both c++ and Python code. For c++ code, you just have to add in your CMakeLists file the follows:

// Find DWL, this operation will defined the following variables:
//  - dwl_LIBRARIES: the list of libraries to link against
//  - dwl_LIBRARY_DIRS: The directory where the lib files are
//  - dwl_INCLUDE_DIRS: The list of include directories
find(dwl REQUIRED) //for CMake project
find_package(catkin REQUIRED dwl) //for Catkin project
include_directories(${dwl_INCLUDE_DIRS}
target_link_libraries(your_library  S{dwl_LIBRARIES})

If you want to use the dwl Python module, you have to install it (see installation instructions) and adding your installation path in PYTHONPATH (e.g. "export PYTHONPATH=${PYTHONPATH}:${/dwl/installation/path}:")

For more information you could check our sample code list (c++ and Python) inside "sample" folder.

Publications