A sparse MPC solver for walking motion generation (old version).
A sparse MPC solver for walking motion generation (old version).
Attention:
The development of this version of the solver is frozen, documentation for the current version is available here.
Contents & links


Introduction

## Overview

This package includes two small libraries. The main library is 
located in 'solver' subfolder, it implements a solver of quadratic 
optimization problems defined using sparse model predictive control 
formulation for walking motion generation. The second library ('WMG' 
subfolder) is necessary to perform walking simulation, it produces 
input for the solver on each simulation step.

Tests and demos are placed in 'test' subfolder.


## Requirements:

* GNU make
* Eigen (for WMG)


## The libraries can be compiled in two ways:
1. (Recommended) Using cmake:
    * Compilation:
    `make cmake`

    * Toolchain can be specified in the folowing way:
    `make cmake TOOLCHAIN=< path to a toolchain >`

2. (Does not work on MAC) Using only GNU make:
    * compilation of the libraries: `make`
    * compilation of the libraries and tests: `make test`


## Further information
        
The newest sources are available on GitHub:
<https://github.com/asherikov/smpc_solver/tree/Version_1.x>

The documentation generated by doxygen can be found here:
<http://asherikov.github.com/smpc_solver/v1/>


License

Copyright (c) 2011-2012 Alexander Sherikov, Dimitar Dimitrov. All 
rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.


References

Dimitar Nikolaev Dimitrov, Alexander Sherikov, and Pierre-Brice Wieber
A sparse model predictive control formulation for walking motion generation
IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS),
September 25-30, 2011, San Francisco, California

Purpose of the library

Walk of a robot can be controlled using the following scheme:

The smpc_solver library addresses the first step. The position of the CoM is determined using MPC scheme, where it is modeled using inverted pendulum in 3 dimensions. MPC implies, that we have to solve an optimization problem. The objective function is quadratic, additional constraints are imposed by position of the support foot/feet: we need to satisfy certain requrements to prevent robot from falling.

The WMG library contains functions, which are necessary to define footsteps, prepare parameters for the solver library, determine positions of the feet.

Terms and abbreviations:

For more information refer to the papers listed in 'References'. Also, the 'Problem definition' section contains more detailed explanations.

API & examples


Derivations and algorithms

Conventions & definitions
  • All letters referencing matrices or vectors in formulas are typed in bold.
  • Matrices and vectors are usually denoted by the upper case and lower case letters respectively.
  • 'N' denotes the size of the preview window.
Further information can be found on the following pages


Internal implementation of the libraries


Important notes

Todo:
The library is not thoroughly tested with variable height of CoM.