Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • imaroger/jrl-walkgen
  • lscherrer/jrl-walkgen
2 results
Show changes
Commits on Source (169)
Showing
with 408 additions and 403 deletions
include: http://rainboard.laas.fr/project/jrl-walkgen/.gitlab-ci.yml
[submodule "cmake"]
path = cmake
url = https://github.com/jrl-umi3218/jrl-cmakemodules.git
[submodule ".travis"]
path = .travis
url = https://github.com/MaximilienNaveau/jrl-travis.git
ci:
autoupdate_branch: devel
repos:
- repo: https://github.com/PyCQA/isort
rev: 5.12.0
hooks:
- id: isort
args:
- --profile
- black
- --filter-files
- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format
exclude: '^tests/Test*'
- repo: https://github.com/pappasam/toml-sort
rev: v0.23.1
hooks:
- id: toml-sort-fix
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v16.0.4
hooks:
- id: clang-format
args:
- --style=Google
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-added-large-files
- id: check-ast
- id: check-executables-have-shebangs
- id: check-json
- id: check-merge-conflict
- id: check-symlinks
- id: check-toml
- id: check-yaml
- id: debug-statements
- id: destroyed-symlinks
- id: detect-private-key
- id: end-of-file-fixer
- id: fix-byte-order-marker
- id: mixed-line-ending
- id: trailing-whitespace
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
rev: 6.0.0
hooks:
- id: flake8
args:
- --max-line-length
- '88'
Subproject commit 41f6882329e97397e9c92ac55218a447461e03d0
language: cpp
sudo: required
compiler:
- gcc
- clang
env:
global:
- secure: ViEXlUgT66UGxlMPd2ZmZdB9rhFS3rsl6ktJFdyRukdXwZl3/5boy95RJJawFSQ4PmcKX35oZ5Afl7CSuT5r7uiEoFCeZu38b80E3BsuUr4zPgdZS4hI818L/MPhahmN5ravefVbDl+Yf95bWQ79EYj45yvh1dJH+YRBD+ucPDk=
- "APT_DEPENDENCIES=doxygen doxygen-latex libboost-all-dev libeigen3-dev liblapack-dev libblas-dev gfortran"
- DEBSIGN_KEYID=5AE5CD75
- LCOV_IGNORE_RULES="*unittest* /opt/openrobots/*"
notifications:
email:
- hpp-source@laas.fr
branches:
only:
- master
matrix:
allow_failures:
- compiler: clang
before_install: ./travis_custom/custom_before_install
install:
- pip install --user coveralls
script:
- sudo free -m -t
- travis_wait ./.travis/run ../travis_custom/custom_build
script: ./.travis/run ../travis_custom/custom_build
after_failure: ./.travis/run ../travis_custom/custom_after_failure
after_success:
- ./.travis/run after_success
- export PYTHONPATH=/tmp/_ci/install/lib/python2.7/site-packages
- coveralls-lcov -v -n /tmp/_ci/build/coverage.info > coverage.json
- coverage run ./python/tests.py
- coveralls --merge=coverage.json
4.0.1
\ No newline at end of file
# Copyright 2010, Olivier Stasse, JRL, CNRS/AIST
#
# This file is part of jrl-walkgen.
# jrl-walkgen is free software: you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation, either version 3 of
# the License, or (at your option) any later version.
#
# jrl-walkgen is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Lesser Public License for more details. You should have
# received a copy of the GNU Lesser General Public License along with
# jrl-walkgen. If not, see <http://www.gnu.org/licenses/>.
# Requires at least CMake 2.6 to configure the package.
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# Includes from jrl-cmaketools
INCLUDE(cmake/base.cmake)
INCLUDE(cmake/lapack.cmake)
INCLUDE(cmake/cpack.cmake)
INCLUDE(cmake/boost.cmake)
INCLUDE(CMakeDependentOption)
# Define properties of the project
SET(PROJECT_NAME jrl-walkgen)
SET(PROJECT_DESCRIPTION "Walking pattern generator for Humanoids")
SET(PROJECT_URL "")
SET(CXX_DISABLE_WERROR True)
# Initialize generic properties of the project
SETUP_PROJECT()
# Copyright 2010, 2020, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST,
# LAAS-CNRS See LICENSE file.
cmake_minimum_required(VERSION 3.1)
# Project properties
set(PROJECT_ORG stack-of-tasks)
set(PROJECT_NAME jrl-walkgen)
set(PROJECT_DESCRIPTION "Walking pattern generator for Humanoids")
set(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
# Project options
option(USE_LSSOL "Do you want to use the solver lssol?" OFF)
option(USE_QUADPROG "Do you want to use the solver eigen-quadprog?" ON)
option(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
option(FULL_BUILD_TESTING "Complete and long testing" OFF)
# Project configuration
set(PROJECT_USE_CMAKE_EXPORT TRUE)
set(CXX_DISABLE_WERROR TRUE)
set(DOXYGEN_USE_MATHJAX YES)
# JRL-cmakemodule setup
include(cmake/base.cmake)
# Project definition
compute_project_args(PROJECT_ARGS LANGUAGES CXX C)
project(${PROJECT_NAME} ${PROJECT_ARGS})
# Project dependencies
add_project_dependency(LAPACK REQUIRED)
add_project_dependency(pinocchio REQUIRED)
# Handle OS specificities
INCLUDE(CheckIncludeFiles)
CHECK_INCLUDE_FILES("sys/time.h" SYS_TIME_H)
IF(SYS_TIME_H)
ADD_DEFINITIONS("-DHAVE_SYS_TIME_H")
ENDIF(SYS_TIME_H)
# Required dependencies
ADD_REQUIRED_DEPENDENCY("jrl-mal >= 1.9.0")
ADD_REQUIRED_DEPENDENCY("pinocchio >= 1.1.0")
# Search for Boost.
# Boost.Test is used by the test suite.
# Boost program_options is used by the embedfile utility, which is used
# by metapod_robotbuilder
# Boost filesystem and regex are used by metapod_robotbuilder.
# Boost filesystem depends on Boost system.
SET(BOOST_COMPONENTS
filesystem system unit_test_framework program_options regex)
SEARCH_FOR_BOOST()
# If Boost is recent enough, we look for Boost timer which can be used by
# by metapod_timer, which is in turn used by the benchmark.
# Boost timer depends on Boost chrono and system.
IF((BUILD_MULTI_MODEL_BENCHMARK OR BUILD_SINGLE_MODEL_BENCHMARKS)
AND NOT Boost_VERSION LESS 104800)
SET(BOOST_COMPONENTS ${BOOST_COMPONENTS} timer chrono system)
SEARCH_FOR_BOOST()
ENDIF()
# Search for Eigen.
ADD_REQUIRED_DEPENDENCY("eigen3 >= 3.0.5")
# Eigen (at least version 3.0.5) makes gcc report conversion warnings
# when one assigns to a block. This floods the compilation results.
# So we include Eigen headers as if they were system headers: the compiler
# won't report warning coming from them.
INCLUDE_DIRECTORIES(SYSTEM ${EIGEN3_INCLUDE_DIRS})
# TODO kinda dirty patch to find lssol for now
# using ADD_OPTIONAL_DEPENDENCY prevents the creation
# of classic variables such as ${PKG}_FOUND
# hence we use ADD_REQUIRED_DEPENDENCY to get the data
OPTION(USE_LSSOL "Do you want to use the solver lssol?" OFF)
IF(USE_LSSOL)
ADD_REQUIRED_DEPENDENCY("lssol >= 0.1.0")
ENDIF(USE_LSSOL)
OPTION(USE_QUADPROG "Do you want to use the solver eigen-quadprog?" ON)
IF(USE_QUADPROG)
ADD_REQUIRED_DEPENDENCY("eigen-quadprog >= 1.0.0")
ENDIF(USE_QUADPROG)
include(CheckIncludeFile)
check_include_file("sys/time.h" SYS_TIME_H)
if(SYS_TIME_H)
add_definitions("-DHAVE_SYS_TIME_H")
endif(SYS_TIME_H)
# TODO kinda dirty patch to find lssol for now using ADD_OPTIONAL_DEPENDENCY
# prevents the creation of classic variables such as ${PKG}_FOUND hence we use
# ADD_REQUIRED_DEPENDENCY to get the data
if(USE_LSSOL)
add_required_dependency("lssol >= 0.1.0")
endif(USE_LSSOL)
if(USE_QUADPROG)
add_project_dependency(eigen-quadprog REQUIRED)
endif(USE_QUADPROG)
# Add aggressive optimization flags in release mode.
IF(CMAKE_COMPILER_IS_GNUCXX)
SET (CMAKE_CXX_FLAGS_RELEASE
"-O3 -DNDEBUG ")
# SET (CMAKE_CXX_FLAGS
# "-std=c++0x")
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
#IF(CMAKE_COMPILER_IS_GNUCXX)
# SET (CMAKE_CXX_FLAGS_RELEASE
# "-O3 -funroll-loops -frerun-loop-opt -fschedule-insns2")
# SET (CMAKE_CXX_FLAGS_RELEASE
# "${CMAKE_CXX_FLAGS_RELEASE} -frerun-cse-after-loop -falign-functions")
# SET (CMAKE_CXX_FLAGS_RELEASE
# "${CMAKE_CXX_FLAGS_RELEASE} -falign-labels -falign-loops -falign-jumps")
# SET (CMAKE_CXX_FLAGS_RELEASE
# "${CMAKE_CXX_FLAGS_RELEASE} -fexpensive-optimizations")
#ENDIF(CMAKE_COMPILER_IS_GNUCXX)
# Define the set of headers to be exported
SET(${PROJECT_NAME}_HEADERS
include/jrl/walkgen/patterngeneratorinterface.hh
include/jrl/walkgen/pgtypes.hh
include/jrl/walkgen/pinocchiorobot.hh
)
# Define subdirectories to explore for cmake
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(tests)
# Generate dependency to jrl-walkgen in pc file
PKG_CONFIG_APPEND_LIBS("jrl-walkgen")
# Ask to generate the final steps.
SETUP_PROJECT_FINALIZE()
SETUP_PROJECT_CPACK()
if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG ")
endif(CMAKE_COMPILER_IS_GNUCXX)
# Main Library
set(${PROJECT_NAME}_HEADERS
include/jrl/walkgen/patterngeneratorinterface.hh
include/jrl/walkgen/pgtypes.hh include/jrl/walkgen/pinocchiorobot.hh)
set(${PROJECT_NAME}_SOURCES
src/RobotDynamics/pinocchiorobot.cpp
src/FootTrajectoryGeneration/FootTrajectoryGenerationAbstract.cpp
src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.cpp
src/FootTrajectoryGeneration/FootTrajectoryGenerationMultiple.cpp
src/FootTrajectoryGeneration/LeftAndRightFootTrajectoryGenerationMultiple.cpp
src/FootTrajectoryGeneration/OnLineFootTrajectoryGeneration.cpp
src/GlobalStrategyManagers/CoMAndFootOnlyStrategy.cpp
src/GlobalStrategyManagers/GlobalStrategyManager.cpp
src/GlobalStrategyManagers/DoubleStagePreviewControlStrategy.cpp
src/Mathematics/AnalyticalZMPCOGTrajectory.cpp
src/Mathematics/ConvexHull.cpp
src/Mathematics/FootConstraintsAsLinearSystem.cpp
# src/Mathematics/FootConstraintsAsLinearSystemForVelRef.cpp
src/Mathematics/FootHalfSize.cpp
src/Mathematics/OptCholesky.cpp
src/Mathematics/Bsplines.cpp
src/Mathematics/Polynome.cpp
src/Mathematics/PolynomeFoot.cpp
src/Mathematics/PLDPSolver.cpp
src/Mathematics/qld.cpp
src/Mathematics/StepOverPolynome.cpp
src/Mathematics/relative-feet-inequalities.cpp
src/Mathematics/intermediate-qp-matrices.cpp
src/PreviewControl/PreviewControl.cpp
src/PreviewControl/OptimalControllerSolver.cpp
src/PreviewControl/ZMPPreviewControlWithMultiBodyZMP.cpp
src/PreviewControl/LinearizedInvertedPendulum2D.cpp
src/PreviewControl/rigid-body.cpp
src/PreviewControl/rigid-body-system.cpp
src/PreviewControl/SupportFSM.cpp
src/ZMPRefTrajectoryGeneration/ZMPRefTrajectoryGeneration.cpp
src/ZMPRefTrajectoryGeneration/ZMPDiscretization.cpp
src/ZMPRefTrajectoryGeneration/ZMPQPWithConstraint.cpp
src/ZMPRefTrajectoryGeneration/ZMPConstrainedQPFastFormulation.cpp
src/ZMPRefTrajectoryGeneration/ZMPVelocityReferencedQP.cpp
src/ZMPRefTrajectoryGeneration/OrientationsPreview.cpp
src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaAbstract.cpp
src/ZMPRefTrajectoryGeneration/AnalyticalMorisawaCompact.cpp
src/ZMPRefTrajectoryGeneration/FilteringAnalyticalTrajectoryByPreviewControl.cpp
src/ZMPRefTrajectoryGeneration/problem-vel-ref.cpp
src/ZMPRefTrajectoryGeneration/qp-problem.cpp
src/ZMPRefTrajectoryGeneration/generator-vel-ref.cpp
src/ZMPRefTrajectoryGeneration/mpc-trajectory-generation.cpp
src/ZMPRefTrajectoryGeneration/DynamicFilter.cpp
# src/MultiContactRefTrajectoryGeneration/MultiContactHirukawa.cc
src/MotionGeneration/StepOverPlanner.cpp
src/MotionGeneration/CollisionDetector.cpp
src/MotionGeneration/WaistHeightVariation.cpp
src/MotionGeneration/UpperBodyMotion.cpp
src/MotionGeneration/GenerateMotionFromKineoWorks.cpp
src/MotionGeneration/ComAndFootRealizationByGeometry.cpp
src/StepStackHandler.cpp
src/PatternGeneratorInterfacePrivate.cpp
src/SimplePlugin.cpp
src/SimplePluginManager.cpp
src/pgtypes.cpp
src/Clock.cpp
src/portability/gettimeofday.cc
src/privatepgtypes.cpp)
if(USE_QUADPROG)
set(${PROJECT_NAME}_SOURCES
${${PROJECT_NAME}_SOURCES}
src/ZMPRefTrajectoryGeneration/ZMPVelocityReferencedSQP.cpp
src/ZMPRefTrajectoryGeneration/nmpc_generator.cpp)
endif(USE_QUADPROG)
add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES}
${${PROJECT_NAME}_HEADERS})
target_include_directories(
${PROJECT_NAME}
PRIVATE $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/FootTrajectoryGeneration>
PUBLIC $<INSTALL_INTERFACE:include>)
target_link_libraries(${PROJECT_NAME} ${LAPACK_LIBRARIES} pinocchio::pinocchio)
if(USE_QUADPROG)
target_compile_definitions(${PROJECT_NAME} PUBLIC USE_QUADPROG=1)
endif(USE_QUADPROG)
if(SUFFIX_SO_VERSION)
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
endif(SUFFIX_SO_VERSION)
if(UNIX AND NOT APPLE)
set_target_properties(
${PROJECT_NAME}
PROPERTIES
COMPILE_FLAGS
"-msse -msse2 -msse3 -march=core2 -mfpmath=sse -fivopts -ftree-loop-im -fipa-pta "
)
endif(UNIX AND NOT APPLE)
if(USE_QUADPROG)
target_link_libraries(${PROJECT_NAME} eigen-quadprog::eigen-quadprog)
endif(USE_QUADPROG)
install(
TARGETS ${PROJECT_NAME}
EXPORT ${TARGETS_EXPORT_NAME}
DESTINATION lib)
add_subdirectory(tests)
install(FILES package.xml DESTINATION share/${PROJECT_NAME})
install(DIRECTORY urdf DESTINATION share/${PROJECT_NAME})
install(DIRECTORY srdf DESTINATION share/${PROJECT_NAME})
jrl-walkgen
===========
jrl-umi travis results :
[![Build Status](https://travis-ci.org/jrl-umi3218/jrl-walkgen.png)](https://travis-ci.org/jrl-umi3218/jrl-walkgen)
[![Coverage Status](https://coveralls.io/repos/jrl-umi3218/jrl-walkgen/badge.png?branch=master)](https://coveralls.io/r/jrl-umi3218/jrl-walkgen?branch=master)
# jrl-walkgen
[![Building Status](https://travis-ci.org/stack-of-tasks/jrl-walkgen.svg?branch=master)](https://travis-ci.org/stack-of-tasks/jrl-walkgen)
[![Pipeline status](https://gitlab.laas.fr/stack-of-tasks/jrl-walkgen/badges/master/pipeline.svg)](https://gitlab.laas.fr/stack-of-tasks/jrl-walkgen/commits/master)
[![Coverage report](https://gitlab.laas.fr/stack-of-tasks/jrl-walkgen/badges/master/coverage.svg?job=doc-coverage)](http://projects.laas.fr/gepetto/doc/stack-of-tasks/jrl-walkgen/master/coverage/)
This software provides a pattern generator for biped robots.
......@@ -10,8 +10,7 @@ It relies on the [StackOfTasks/Pinocchio][StackOfTasks/Pinocchio]
specification to realize dynamics computation.
Setup
-----
## Setup
To compile this package, it is recommended to create a separate build
directory:
......@@ -34,26 +33,18 @@ have to be available on your machine.
- [pinocchio][https://github.com/stack-of-tasks/pinocchio] (>= 1.1.0)
The pattern generator uses dynamics provided by the pinocchio template
programming interface.
- [jrl-mal][https://github.com/jrl-umi3218/jrl-mal] (>= 1.9.0)
- [qpOASES][https://projects.coin-or.org/qpOASES] (normally compatible with
the last version)
- [simple-humanoid-description][https://github.com/MaximilienNaveau/simple_humanoid_description.git] ( >= 1.0.1)
- Boost
- Eigen
- [eigen-quadprog][https://github.com/jrl-umi3218/eigen-quadprog]
- System tools:
- CMake (>=2.6)
- pkg-config
- CMake (>=3.1)
- usual compilation tools (GCC/G++, make, etc.)
Additional notes regarding compilation on Microsoft Windows
-----------------------------------------------------------
## Additional notes regarding compilation on Microsoft Windows
This package has been tested using Microsoft Visual Studio 8.
- Install MinGW
- Make sure all environment variables are set up properly.
- Generate the Makefile using the NMake Makefile generator.
Subproject commit 5663a002a905b5c8d84a69d8e74044a8e34a48ed
Subproject commit f4997a81cebfa2dfb69733bc088c55688965dfe8
......@@ -4,7 +4,4 @@ INPUT = @CMAKE_SOURCE_DIR@/include \
@CMAKE_SOURCE_DIR@/doc/additionalHeader
IMAGE_PATH = @CMAKE_SOURCE_DIR@/doc/pictures
TAGFILES = \
"@ABSTRACT_ROBOT_DYNAMICS_DOXYGENDOCDIR@/abstract-robot-dynamics.doxytag = @ABSTRACT_ROBOT_DYNAMICS_DOXYGENDOCDIR@" \
"@JRL_MAL_DOXYGENDOCDIR@/jrl-mal.doxytag = @JRL_MAL_DOXYGENDOCDIR@" \
"@JRL_DYNAMICS_DOXYGENDOCDIR@/jrl-dynamics.doxytag = @JRL_DYNAMICS_DOXYGENDOCDIR@"
TAGFILES =
......@@ -48,7 +48,7 @@ FUNCTION {output.nonnull}
{ output.state after.block =
% next line commented out by rhr and changed to write comma
% { add.period$ write$
{ ", " * write$
{ ", " * write$
newline$
"\newblock " write$
}
......@@ -96,7 +96,7 @@ FUNCTION {fin.entry}
}
% 5/24/89 rhr
% modified fin.entry function - prints note field after body of entry
% modified fin.entry function - prints note field after body of entry
%FUNCTION {fin.entry}
%{ add.period$
% note empty$
......@@ -117,7 +117,7 @@ FUNCTION {new.block}
% new block without terminating last block with a comma
FUNCTION {new.ncblock}
{
write$
write$
newline$
"\newblock "
before.all 'output.state :=
......@@ -125,7 +125,7 @@ FUNCTION {new.ncblock}
FUNCTION {new.nccont}
{
write$
write$
" "
before.all 'output.state :=
}
......@@ -321,7 +321,7 @@ FUNCTION {format.date}
% FUNCTION {format.date}
% { year empty$
% 'year
% 'year
% { " " year * }
% if$
% }
......@@ -423,7 +423,7 @@ FUNCTION {format.pages}
}
FUNCTION {format.vol.num.pages}
{
{
volume empty$
{"" }
{"vol. " volume *}
......
This diff is collapsed.
\BOOKMARK [0][-]{chapter.1}{User manual}{}
\BOOKMARK [1][-]{section.1.1}{Introduction}{chapter.1}
\BOOKMARK [1][-]{section.1.2}{Installation and quick start for the pattern generator}{chapter.1}
\BOOKMARK [2][-]{subsection.1.2.1}{Download}{section.1.2}
\BOOKMARK [2][-]{subsection.1.2.2}{Compiling and installation}{section.1.2}
\BOOKMARK [2][-]{subsection.1.2.3}{Example}{section.1.2}
\BOOKMARK [2][-]{subsection.1.2.4}{Needed libraries}{section.1.2}
\BOOKMARK [1][-]{section.1.3}{Plugin : WalkGenJRL}{chapter.1}
\BOOKMARK [2][-]{subsection.1.3.1}{Introduction}{section.1.3}
\BOOKMARK [2][-]{subsection.1.3.2}{Functionnalities}{section.1.3}
\BOOKMARK [3][-]{section*.2}{Foot positionning}{subsection.1.3.2}
\BOOKMARK [3][-]{section*.3}{Walking parameters}{subsection.1.3.2}
\BOOKMARK [0][-]{chapter.2}{The theory behind}{}
\BOOKMARK [1][-]{section.2.1}{Inverse Kinematics}{chapter.2}
\BOOKMARK [2][-]{subsection.2.1.1}{The legs}{section.2.1}
\BOOKMARK [1][-]{section.2.2}{Dynamic models of biped robot}{chapter.2}
\BOOKMARK [2][-]{subsection.2.2.1}{3D Linear Inverted Pendulum Mode and Zero-moment point}{section.2.2}
\BOOKMARK [2][-]{subsection.2.2.2}{ZMP equations and cart-table model}{section.2.2}
\BOOKMARK [1][-]{section.2.3}{Walking pattern generation for a given ZMP}{chapter.2}
\BOOKMARK [2][-]{subsection.2.3.1}{Pattern generation as an inverse problem}{section.2.3}
\BOOKMARK [2][-]{subsection.2.3.2}{ZMP control as a servo problem}{section.2.3}
\BOOKMARK [2][-]{subsection.2.3.3}{Pattern generation by preview control}{section.2.3}
\BOOKMARK [2][-]{subsection.2.3.4}{Pattern generation for multibody model}{section.2.3}
\BOOKMARK [2][-]{subsection.2.3.5}{References}{section.2.3}
\BOOKMARK [1][-]{section.2.4}{Finding the weights for the preview control }{chapter.2}
\BOOKMARK [2][-]{subsection.2.4.1}{The general scheme Katayama1985}{section.2.4}
\BOOKMARK [2][-]{subsection.2.4.2}{Removing the offset of the ZMP}{section.2.4}
\BOOKMARK [2][-]{subsection.2.4.3}{Implementation of the weights computation}{section.2.4}
\BOOKMARK [1][-]{section.2.5}{The angular momentum problem}{chapter.2}
\BOOKMARK [2][-]{subsection.2.5.1}{The problem}{section.2.5}
\BOOKMARK [2][-]{subsection.2.5.2}{Arm motion heuristic}{section.2.5}
\BOOKMARK [1][-]{section.2.6}{To change the library}{chapter.2}
\BOOKMARK [2][-]{subsection.2.6.1}{Introduction}{section.2.6}
\BOOKMARK [2][-]{subsection.2.6.2}{ZMPDiscretization}{section.2.6}
\BOOKMARK [2][-]{subsection.2.6.3}{Preview Control}{section.2.6}
\BOOKMARK [2][-]{subsection.2.6.4}{Dynamic Multi Body}{section.2.6}
\BOOKMARK [2][-]{subsection.2.6.5}{ZMPPreviewControlWithZMPMultiBody}{section.2.6}
\BOOKMARK [0][-]{chapter.3}{The Upper body Motion}{}
\BOOKMARK [1][-]{section.3.1}{Walking Mode inside the Pattern Generator V.2 }{chapter.3}
\BOOKMARK [1][-]{section.3.2}{Momentum Equation}{chapter.3}
\BOOKMARK [2][-]{subsection.3.2.1}{Momentum and joint velocities}{section.3.2}
\BOOKMARK [2][-]{subsection.3.2.2}{Constraints of foot contact}{section.3.2}
\BOOKMARK [1][-]{section.3.3}{Resolved Momentum Control}{chapter.3}
\BOOKMARK [2][-]{subsection.3.3.1}{Setting momentum reference}{section.3.3}
\BOOKMARK [2][-]{subsection.3.3.2}{Momentum selection and control by pseudo-inverse}{section.3.3}
\BOOKMARK [2][-]{subsection.3.3.3}{Calculation of the interia matrices}{section.3.3}
\BOOKMARK [2][-]{subsection.3.3.4}{Walking using the Resolved Momentum Control}{section.3.3}
\BOOKMARK [1][-]{section..1}{Introduction}{chapter.3}
\BOOKMARK [1][-]{section..2}{XML's fields}{chapter.3}
......@@ -30,7 +30,7 @@
%{\large Title still undecided}\\
}
\vspace*{0.5cm}
{\large \bf
{\large \bf
Olivier Stasse, Ramzi Sellouati\\
\vspace*{0.5cm}
\normalsize{
......
/*
* Copyright 2006, 2007, 2008, 2009, 2010,
* Copyright 2006, 2007, 2008, 2009, 2010,
*
* Florent Lamiraux
* Olivier Stasse
......@@ -19,39 +19,39 @@
* You should have received a copy of the GNU Lesser General Public License
* along with walkGenJrl. If not, see <http://www.gnu.org/licenses/>.
*
* Research carried out within the scope of the
* Research carried out within the scope of the
* Joint Japanese-French Robotics Laboratory (JRL)
*/
/**
\mainpage
/**
\mainpage
\section sec_intro Introduction
This library implements a series of algorithms generating CoM, ZMP and feet
trajectories when given a set of foot-prints. In some cases, when a robot
model provides a specialized inverse kinematics some algorithms can generate
model provides a specialized inverse kinematics some algorithms can generate
articular values.
\section walkGenJrl_sec_approach Approach implemented
This code assumes that the mass distribution of your humanoid robot is
This code assumes that the mass distribution of your humanoid robot is
centered around the waist. This is very important as all the algorithms
implemented uses the single point mass model. If the masses of your robot
legs and arms are too important to be ignored it is very likely that
none of the algorithms will give a feasible pair of CoM-ZMP trajectories.
The first available algorithm is the preview algorithm \ref Kajita2003 and \ref Kajita2005.
This algorithm is real-time if you do not change the foot-prints inside the preview
window.
If you do want to perform this modification you should see \ref Morisawa2007.
This come at the expense of a possible delay in the step execution, if the modifcations
are too important. On the other hand this is one of the fastest solution to modify
the futur in the stack of foot-steps.
The first available algorithm is the preview algorithm \ref Kajita2003 and \ref
Kajita2005. This algorithm is real-time if you do not change the foot-prints
inside the preview window. If you do want to perform this modification you
should see \ref Morisawa2007. This come at the expense of a possible delay in
the step execution, if the modifcations are too important. On the other hand
this is one of the fastest solution to modify the futur in the stack of
foot-steps.
Two variants similar to the preview control but including inequalities have been introduced
by \ref Wieber2006 and \ref Dimitrov2009. The former takes 28 ms to be computed whereas the
second introduce a new solver able to solve the problem in less than 2 ms.
The solver named PLDP is included inside the library.
Two variants similar to the preview control but including inequalities have been
introduced by \ref Wieber2006 and \ref Dimitrov2009. The former takes 28 ms to
be computed whereas the second introduce a new solver able to solve the problem
in less than 2 ms. The solver named PLDP is included inside the library.
A new algorithm able to take a reference velocity of the CoM is also provided.
Its description can be found in \ref Herdt2010. This problem is currently solved
......@@ -60,13 +60,14 @@ letting us distribute his code in our LGPL code.
\section References
\anchor Kajita2003
S. Kajita and F. Kanehiro and K. Kaneko and K. Fujiwara and K. Harada and K. Yokoi and H. Hirukawa,
"Biped Walking Pattern Generation by using Preview Control of Zero-Moment Point",
International Conference on Robotics And Automation, Taipei Taiwan, 2003
S. Kajita and F. Kanehiro and K. Kaneko and K. Fujiwara and K. Harada and K.
Yokoi and H. Hirukawa, "Biped Walking Pattern Generation by using Preview
Control of Zero-Moment Point", International Conference on Robotics And
Automation, Taipei Taiwan, 2003
\anchor Kajita2005
S. Kajita,
Omsha,
Omsha,
"Humanoid Robot",
2005,(In Japanese) ISBN4-274-20058-2, 2005
......@@ -76,22 +77,23 @@ B. Verrelst and K. Yokoi and O. Stasse and H. Arisumi and B. Vanderborght,
International Conference on Mechatronics and Automation
\anchor Morisawa2007
M. Morisawa and K. Harada and S. Kajita and S. Nakaoka and K. Fujiwara and F. Kanehiro and K. Kaneko and H. Hirukawa,
"Experimentation of Humanoid Walking Allowing Immediate Modification of Foot Place Based on Analytical Solution",
M. Morisawa and K. Harada and S. Kajita and S. Nakaoka and K. Fujiwara and F.
Kanehiro and K. Kaneko and H. Hirukawa, "Experimentation of Humanoid Walking
Allowing Immediate Modification of Foot Place Based on Analytical Solution",
IEEE Int. Conf. on Robotics and Automation,
3989--3994, 2007
\anchor Wieber2006
P.-B. Wieber,
"Trajectory Free Linear Model Predictive Control for Stable Walking in the Presence of Strong Perturbations"
IEEE/RAS Int. Conf. on Humanoid Robots
"Trajectory Free Linear Model Predictive Control for Stable Walking in the
Presence of Strong Perturbations" IEEE/RAS Int. Conf. on Humanoid Robots
137-142, 2006
\anchor Dimitrov2009
D. Dimitrov, P.-B. Wieber, O. Stasse, H.J. Ferreau and H. Diedam,
"An Optimized Linear Model Predictive Control Solver for Online Walking Motion Generation",
IEEE International Conference on Robotics and Automation (ICRA)
pp. 1171--1176, 2009
"An Optimized Linear Model Predictive Control Solver for Online Walking Motion
Generation", IEEE International Conference on Robotics and Automation (ICRA) pp.
1171--1176, 2009
\anchor Herdt2010
A. Herdt, D. Holger, P.B. Wieber, D. Dimitrov, K. Mombaur and D. Moritz
......@@ -99,7 +101,7 @@ A. Herdt, D. Holger, P.B. Wieber, D. Dimitrov, K. Mombaur and D. Moritz
Advanced Robotics
Vol. 24 Issue 5-6, pp. 719--737
\anchor Schittkowski2007
\anchor Schittkowski2007
K. Schittkowski (2007): QL: A Fortran code for convex
quadratic programming - user's guide, Report, Department
of Computer Science, University of Bayreuth
......@@ -107,7 +109,8 @@ of Computer Science, University of Bayreuth
\defgroup pgjrl JRL Walking Pattern Generator Library (WalkGenJRL)
@{
This library is intended to implement walking pattern generator algorithms for humanoid robots.
This library is intended to implement walking pattern generator algorithms
for humanoid robots.
*/
......@@ -128,12 +131,11 @@ of Computer Science, University of Bayreuth
/**
\defgroup walkGenJrl_geometry Geometry
This group implements some basic geometrical tools for the Pattern Generator.
@{
*/
/**
@}
*/
......@@ -153,9 +155,9 @@ of Computer Science, University of Bayreuth
/**
\defgroup pginterfaces Interfaces to WalkGenJRL
This group shows how to interface the WalkGenJRL library to three kinds of applications:
\li An OpenHRP plugin, to run in real-time inside an HRP-2 humanoid robot,
\li A console program, for quick but yet complete testing of the pattern generator,
\li An OpenGL interface.
This group shows how to interface the WalkGenJRL library to three kinds of
applications: \li An OpenHRP plugin, to run in real-time inside an HRP-2
humanoid robot, \li A console program, for quick but yet complete testing of
the pattern generator, \li An OpenGL interface.
*/
......@@ -222,7 +222,7 @@ gnudict begin
/PentE { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
closepath stroke grestore } def
/CircE { stroke [] 0 setdash
/CircE { stroke [] 0 setdash
hpt 0 360 arc stroke } def
/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
/DiaW { stroke [] 0 setdash vpt add M
......@@ -242,7 +242,7 @@ gnudict begin
/PentW { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
Opaque stroke grestore } def
/CircW { stroke [] 0 setdash
/CircW { stroke [] 0 setdash
hpt 0 360 arc Opaque stroke } def
/BoxFill { gsave Rec 1 setgray fill grestore } def
/BoxColFill {
......
......@@ -2,7 +2,7 @@
Landscape
Center
Metric
A4
A4
100.00
Single
-2
......
......@@ -222,7 +222,7 @@ gnudict begin
/PentE { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
closepath stroke grestore } def
/CircE { stroke [] 0 setdash
/CircE { stroke [] 0 setdash
hpt 0 360 arc stroke } def
/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
/DiaW { stroke [] 0 setdash vpt add M
......@@ -242,7 +242,7 @@ gnudict begin
/PentW { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
Opaque stroke grestore } def
/CircW { stroke [] 0 setdash
/CircW { stroke [] 0 setdash
hpt 0 360 arc Opaque stroke } def
/BoxFill { gsave Rec 1 setgray fill grestore } def
/BoxColFill {
......
......@@ -222,7 +222,7 @@ gnudict begin
/PentE { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
closepath stroke grestore } def
/CircE { stroke [] 0 setdash
/CircE { stroke [] 0 setdash
hpt 0 360 arc stroke } def
/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
/DiaW { stroke [] 0 setdash vpt add M
......@@ -242,7 +242,7 @@ gnudict begin
/PentW { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
Opaque stroke grestore } def
/CircW { stroke [] 0 setdash
/CircW { stroke [] 0 setdash
hpt 0 360 arc Opaque stroke } def
/BoxFill { gsave Rec 1 setgray fill grestore } def
/BoxColFill {
......
......@@ -2,7 +2,7 @@
Landscape
Center
Metric
A4
A4
100.00
Single
-2
......