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 (388)
Showing
with 418 additions and 422 deletions
...@@ -79,4 +79,9 @@ _build-RELEASE-QT/* ...@@ -79,4 +79,9 @@ _build-RELEASE-QT/*
commit_bien_herdt commit_bien_herdt
tests/TestHirukawa2007.cpp_dummy tests/TestHirukawa2007.cpp_dummy
tests/filtre_dynamic_results.txt tests/filtre_dynamic_results.txt
_build-INFORELDEB/* _build-INFORELDEB/*
\ No newline at end of file _build-Matan/
_build-RELEASE_tmp/
src/ZMPRefTrajectoryGeneration/nmpc_generatorMaster.cpp
src/ZMPRefTrajectoryGeneration/nmpc_generatorMaster.hh
tmp/
include: http://rainboard.laas.fr/project/jrl-walkgen/.gitlab-ci.yml
[submodule "cmake"] [submodule "cmake"]
path = cmake path = cmake
url = https://github.com/jrl-umi3218/jrl-cmakemodules.git url = https://github.com/jrl-umi3218/jrl-cmakemodules.git
[submodule ".travis"]
path = .travis
url = https://github.com/jrl-umi3218/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 2a03b5bf12ff198b7bc97d45c39a531db54c3a58
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/*"
- DIST="precise"
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:
- export CMAKE_ADDITIONAL_OPTIONS="-DCMAKE_BUILD_TYPE=${BUILDTYPE}"
- sudo free -m -t
- travis_wait ./.travis/run ../travis_custom/custom_build
script: ./.travis/run ../travis_custom/custom_build
after_failure: ./.travis/run 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
# Copyright 2010, Olivier Stasse, JRL, CNRS/AIST # Copyright 2010, 2020, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST,
# # LAAS-CNRS See LICENSE file.
# This file is part of jrl-walkgen.
# jrl-walkgen is free software: you can redistribute it and/or cmake_minimum_required(VERSION 3.1)
# modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation, either version 3 of # Project properties
# the License, or (at your option) any later version. set(PROJECT_ORG stack-of-tasks)
# set(PROJECT_NAME jrl-walkgen)
# jrl-walkgen is distributed in the hope that it will be useful, but set(PROJECT_DESCRIPTION "Walking pattern generator for Humanoids")
# WITHOUT ANY WARRANTY; without even the implied warranty of set(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Lesser Public License for more details. You should have # Project options
# received a copy of the GNU Lesser General Public License along with option(USE_LSSOL "Do you want to use the solver lssol?" OFF)
# jrl-walkgen. If not, see <http://www.gnu.org/licenses/>. option(USE_QUADPROG "Do you want to use the solver eigen-quadprog?" ON)
option(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
# Requires at least CMake 2.6 to configure the package. option(FULL_BUILD_TESTING "Complete and long testing" OFF)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
# Project configuration
# Includes from jrl-cmaketools set(PROJECT_USE_CMAKE_EXPORT TRUE)
INCLUDE(cmake/base.cmake) set(CXX_DISABLE_WERROR TRUE)
INCLUDE(cmake/lapack.cmake) set(DOXYGEN_USE_MATHJAX YES)
INCLUDE(cmake/cpack.cmake)
INCLUDE(cmake/boost.cmake) # JRL-cmakemodule setup
INCLUDE(private_cmake/cmake_metapod_configure.cmake) include(cmake/base.cmake)
INCLUDE(CMakeDependentOption)
# Project definition
# Define properties of the project compute_project_args(PROJECT_ARGS LANGUAGES CXX C)
SET(PROJECT_NAME jrl-walkgen) project(${PROJECT_NAME} ${PROJECT_ARGS})
SET(PROJECT_DESCRIPTION "Walking pattern generator for Humanoids")
SET(PROJECT_URL "") # Project dependencies
add_project_dependency(LAPACK REQUIRED)
SET(CXX_DISABLE_WERROR True) add_project_dependency(pinocchio REQUIRED)
# Initialize generic properties of the project
SETUP_PROJECT()
# Handle OS specificities # Handle OS specificities
INCLUDE(CheckIncludeFiles) include(CheckIncludeFile)
CHECK_INCLUDE_FILES("sys/time.h" SYS_TIME_H) check_include_file("sys/time.h" SYS_TIME_H)
IF(SYS_TIME_H) if(SYS_TIME_H)
ADD_DEFINITIONS("-DHAVE_SYS_TIME_H") add_definitions("-DHAVE_SYS_TIME_H")
ENDIF(SYS_TIME_H) endif(SYS_TIME_H)
# Required dependencies # TODO kinda dirty patch to find lssol for now using ADD_OPTIONAL_DEPENDENCY
ADD_REQUIRED_DEPENDENCY("jrl-mal >= 1.9.0") # prevents the creation of classic variables such as ${PKG}_FOUND hence we use
ADD_REQUIRED_DEPENDENCY("abstract-robot-dynamics >= 1.15") # ADD_REQUIRED_DEPENDENCY to get the data
ADD_REQUIRED_DEPENDENCY("jrl-dynamics >= 1.19.1") if(USE_LSSOL)
add_required_dependency("lssol >= 0.1.0")
################################################################ endif(USE_LSSOL)
ADD_OPTIONAL_DEPENDENCY("hrp2-14 >= 1.8-6")
ADD_OPTIONAL_DEPENDENCY("hrp2-dynamics >= 1.0.1") if(USE_QUADPROG)
#ADD_OPTIONAL_DEPENDENCY("pinocchio >= 1.0.1") add_project_dependency(eigen-quadprog REQUIRED)
ADD_OPTIONAL_DEPENDENCY("metapod >= 1.0.7") endif(USE_QUADPROG)
#################################################################
# Search for qpOases
LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/private_cmake)
MESSAGE(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
FIND_PACKAGE(qpOASES)
IF(${qpOASES_FOUND} STREQUAL "TRUE")
MESSAGE(STATUS "--qpOASES : " ${qpOASES_LIBRARIES})
INCLUDE_DIRECTORIES(SYSTEM ${qpOASES_INCLUDE_DIRS})
ENDIF(${qpOASES_FOUND} STREQUAL "TRUE")
# 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.0")
# 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)
# Add aggressive optimization flags in release mode. # Add aggressive optimization flags in release mode.
IF(CMAKE_COMPILER_IS_GNUCXX) if(CMAKE_COMPILER_IS_GNUCXX)
SET (CMAKE_CXX_FLAGS_RELEASE set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG ")
"-O3 -DNDEBUG ") endif(CMAKE_COMPILER_IS_GNUCXX)
SET (CMAKE_CXX_FLAGS
"-std=c++0x") # Main Library
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
set(${PROJECT_NAME}_HEADERS
#IF(CMAKE_COMPILER_IS_GNUCXX) include/jrl/walkgen/patterngeneratorinterface.hh
# SET (CMAKE_CXX_FLAGS_RELEASE include/jrl/walkgen/pgtypes.hh include/jrl/walkgen/pinocchiorobot.hh)
# "-O3 -funroll-loops -frerun-loop-opt -fschedule-insns2")
# SET (CMAKE_CXX_FLAGS_RELEASE set(${PROJECT_NAME}_SOURCES
# "${CMAKE_CXX_FLAGS_RELEASE} -frerun-cse-after-loop -falign-functions") src/RobotDynamics/pinocchiorobot.cpp
# SET (CMAKE_CXX_FLAGS_RELEASE src/FootTrajectoryGeneration/FootTrajectoryGenerationAbstract.cpp
# "${CMAKE_CXX_FLAGS_RELEASE} -falign-labels -falign-loops -falign-jumps") src/FootTrajectoryGeneration/FootTrajectoryGenerationStandard.cpp
# SET (CMAKE_CXX_FLAGS_RELEASE src/FootTrajectoryGeneration/FootTrajectoryGenerationMultiple.cpp
# "${CMAKE_CXX_FLAGS_RELEASE} -fexpensive-optimizations") src/FootTrajectoryGeneration/LeftAndRightFootTrajectoryGenerationMultiple.cpp
#ENDIF(CMAKE_COMPILER_IS_GNUCXX) src/FootTrajectoryGeneration/OnLineFootTrajectoryGeneration.cpp
src/GlobalStrategyManagers/CoMAndFootOnlyStrategy.cpp
# Define the set of headers to be exported src/GlobalStrategyManagers/GlobalStrategyManager.cpp
SET(${PROJECT_NAME}_HEADERS src/GlobalStrategyManagers/DoubleStagePreviewControlStrategy.cpp
include/jrl/walkgen/patterngeneratorinterface.hh src/Mathematics/AnalyticalZMPCOGTrajectory.cpp
include/jrl/walkgen/pgtypes.hh src/Mathematics/ConvexHull.cpp
) src/Mathematics/FootConstraintsAsLinearSystem.cpp
# src/Mathematics/FootConstraintsAsLinearSystemForVelRef.cpp
# Define subdirectories to explore for cmake src/Mathematics/FootHalfSize.cpp
ADD_SUBDIRECTORY(src) src/Mathematics/OptCholesky.cpp
ADD_SUBDIRECTORY(tests) src/Mathematics/Bsplines.cpp
#ADD_SUBDIRECTORY(debian) src/Mathematics/Polynome.cpp
src/Mathematics/PolynomeFoot.cpp
# Generate dependency to jrl-walkgen in pc file src/Mathematics/PLDPSolver.cpp
PKG_CONFIG_APPEND_LIBS("jrl-walkgen") src/Mathematics/qld.cpp
src/Mathematics/StepOverPolynome.cpp
# Ask to generate the final steps. src/Mathematics/relative-feet-inequalities.cpp
SETUP_PROJECT_FINALIZE() src/Mathematics/intermediate-qp-matrices.cpp
SETUP_PROJECT_CPACK() 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-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)
MaximilienNaveau travis results : [![Building Status](https://travis-ci.org/stack-of-tasks/jrl-walkgen.svg?branch=master)](https://travis-ci.org/stack-of-tasks/jrl-walkgen)
[![Build Status](https://travis-ci.org/MaximilienNaveau/jrl-walkgen.svg?branch=master)](https://travis-ci.org/MaximilienNaveau/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 Status](https://coveralls.io/repos/MaximilienNaveau/jrl-walkgen/badge.png?branch=master)](https://coveralls.io/r/MaximilienNaveau/jrl-walkgen?branch=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. This software provides a pattern generator for biped robots.
It relies on the [abstract-robot-dynamics][abstract-robot-dynamics] It relies on the [StackOfTasks/Pinocchio][StackOfTasks/Pinocchio]
specification to realize dynamics computation. specification to realize dynamics computation.
Setup ## Setup
-----
To compile this package, it is recommended to create a separate build To compile this package, it is recommended to create a separate build
directory: directory:
...@@ -35,23 +30,21 @@ The matrix abstract layer depends on several packages which ...@@ -35,23 +30,21 @@ The matrix abstract layer depends on several packages which
have to be available on your machine. have to be available on your machine.
- Libraries: - Libraries:
- [abstract-robot-dynamics][abstract-robot-dynamics] (>= 1.16) - [pinocchio][https://github.com/stack-of-tasks/pinocchio] (>= 1.1.0)
The pattern generator uses dynamics provided by the abstract interface. The pattern generator uses dynamics provided by the pinocchio template
programming interface.
- [eigen-quadprog][https://github.com/jrl-umi3218/eigen-quadprog]
- System tools: - System tools:
- CMake (>=2.6) - CMake (>=3.1)
- pkg-config
- usual compilation tools (GCC/G++, make, etc.) - 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. This package has been tested using Microsoft Visual Studio 8.
- Install MinGW - Install MinGW
- Make sure all environment variables are set up properly. - Make sure all environment variables are set up properly.
- Generate the Makefile using the NMake Makefile generator. - Generate the Makefile using the NMake Makefile generator.
[abstract-robot-dynamics]: http://github.com/laas/abstract-robot-dynamics
Subproject commit 5663a002a905b5c8d84a69d8e74044a8e34a48ed Subproject commit f4997a81cebfa2dfb69733bc088c55688965dfe8
...@@ -4,7 +4,4 @@ INPUT = @CMAKE_SOURCE_DIR@/include \ ...@@ -4,7 +4,4 @@ INPUT = @CMAKE_SOURCE_DIR@/include \
@CMAKE_SOURCE_DIR@/doc/additionalHeader @CMAKE_SOURCE_DIR@/doc/additionalHeader
IMAGE_PATH = @CMAKE_SOURCE_DIR@/doc/pictures IMAGE_PATH = @CMAKE_SOURCE_DIR@/doc/pictures
TAGFILES = \ 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@"
...@@ -48,7 +48,7 @@ FUNCTION {output.nonnull} ...@@ -48,7 +48,7 @@ FUNCTION {output.nonnull}
{ output.state after.block = { output.state after.block =
% next line commented out by rhr and changed to write comma % next line commented out by rhr and changed to write comma
% { add.period$ write$ % { add.period$ write$
{ ", " * write$ { ", " * write$
newline$ newline$
"\newblock " write$ "\newblock " write$
} }
...@@ -96,7 +96,7 @@ FUNCTION {fin.entry} ...@@ -96,7 +96,7 @@ FUNCTION {fin.entry}
} }
% 5/24/89 rhr % 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} %FUNCTION {fin.entry}
%{ add.period$ %{ add.period$
% note empty$ % note empty$
...@@ -117,7 +117,7 @@ FUNCTION {new.block} ...@@ -117,7 +117,7 @@ FUNCTION {new.block}
% new block without terminating last block with a comma % new block without terminating last block with a comma
FUNCTION {new.ncblock} FUNCTION {new.ncblock}
{ {
write$ write$
newline$ newline$
"\newblock " "\newblock "
before.all 'output.state := before.all 'output.state :=
...@@ -125,7 +125,7 @@ FUNCTION {new.ncblock} ...@@ -125,7 +125,7 @@ FUNCTION {new.ncblock}
FUNCTION {new.nccont} FUNCTION {new.nccont}
{ {
write$ write$
" " " "
before.all 'output.state := before.all 'output.state :=
} }
...@@ -321,7 +321,7 @@ FUNCTION {format.date} ...@@ -321,7 +321,7 @@ FUNCTION {format.date}
% FUNCTION {format.date} % FUNCTION {format.date}
% { year empty$ % { year empty$
% 'year % 'year
% { " " year * } % { " " year * }
% if$ % if$
% } % }
...@@ -423,7 +423,7 @@ FUNCTION {format.pages} ...@@ -423,7 +423,7 @@ FUNCTION {format.pages}
} }
FUNCTION {format.vol.num.pages} FUNCTION {format.vol.num.pages}
{ {
volume empty$ volume empty$
{"" } {"" }
{"vol. " volume *} {"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 @@ ...@@ -30,7 +30,7 @@
%{\large Title still undecided}\\ %{\large Title still undecided}\\
} }
\vspace*{0.5cm} \vspace*{0.5cm}
{\large \bf {\large \bf
Olivier Stasse, Ramzi Sellouati\\ Olivier Stasse, Ramzi Sellouati\\
\vspace*{0.5cm} \vspace*{0.5cm}
\normalsize{ \normalsize{
......
/* /*
* Copyright 2006, 2007, 2008, 2009, 2010, * Copyright 2006, 2007, 2008, 2009, 2010,
* *
* Florent Lamiraux * Florent Lamiraux
* Olivier Stasse * Olivier Stasse
...@@ -19,39 +19,39 @@ ...@@ -19,39 +19,39 @@
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with walkGenJrl. If not, see <http://www.gnu.org/licenses/>. * 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) * Joint Japanese-French Robotics Laboratory (JRL)
*/ */
/** /**
\mainpage \mainpage
\section sec_intro Introduction \section sec_intro Introduction
This library implements a series of algorithms generating CoM, ZMP and feet 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 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. articular values.
\section walkGenJrl_sec_approach Approach implemented \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 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 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 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. 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. The first available algorithm is the preview algorithm \ref Kajita2003 and \ref
This algorithm is real-time if you do not change the foot-prints inside the preview Kajita2005. This algorithm is real-time if you do not change the foot-prints
window. inside the preview window. If you do want to perform this modification you
If you do want to perform this modification you should see \ref Morisawa2007. should see \ref Morisawa2007. This come at the expense of a possible delay in
This come at the expense of a possible delay in the step execution, if the modifcations the step execution, if the modifcations are too important. On the other hand
are too important. On the other hand this is one of the fastest solution to modify this is one of the fastest solution to modify the futur in the stack of
the futur in the stack of foot-steps. foot-steps.
Two variants similar to the preview control but including inequalities have been introduced Two variants similar to the preview control but including inequalities have been
by \ref Wieber2006 and \ref Dimitrov2009. The former takes 28 ms to be computed whereas the introduced by \ref Wieber2006 and \ref Dimitrov2009. The former takes 28 ms to
second introduce a new solver able to solve the problem in less than 2 ms. be computed whereas the second introduce a new solver able to solve the problem
The solver named PLDP is included inside the library. 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. 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 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. ...@@ -60,13 +60,14 @@ letting us distribute his code in our LGPL code.
\section References \section References
\anchor Kajita2003 \anchor Kajita2003
S. Kajita and F. Kanehiro and K. Kaneko and K. Fujiwara and K. Harada and K. Yokoi and H. Hirukawa, S. Kajita and F. Kanehiro and K. Kaneko and K. Fujiwara and K. Harada and K.
"Biped Walking Pattern Generation by using Preview Control of Zero-Moment Point", Yokoi and H. Hirukawa, "Biped Walking Pattern Generation by using Preview
International Conference on Robotics And Automation, Taipei Taiwan, 2003 Control of Zero-Moment Point", International Conference on Robotics And
Automation, Taipei Taiwan, 2003
\anchor Kajita2005 \anchor Kajita2005
S. Kajita, S. Kajita,
Omsha, Omsha,
"Humanoid Robot", "Humanoid Robot",
2005,(In Japanese) ISBN4-274-20058-2, 2005 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, ...@@ -76,22 +77,23 @@ B. Verrelst and K. Yokoi and O. Stasse and H. Arisumi and B. Vanderborght,
International Conference on Mechatronics and Automation International Conference on Mechatronics and Automation
\anchor Morisawa2007 \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, M. Morisawa and K. Harada and S. Kajita and S. Nakaoka and K. Fujiwara and F.
"Experimentation of Humanoid Walking Allowing Immediate Modification of Foot Place Based on Analytical Solution", 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, IEEE Int. Conf. on Robotics and Automation,
3989--3994, 2007 3989--3994, 2007
\anchor Wieber2006 \anchor Wieber2006
P.-B. Wieber, P.-B. Wieber,
"Trajectory Free Linear Model Predictive Control for Stable Walking in the Presence of Strong Perturbations" "Trajectory Free Linear Model Predictive Control for Stable Walking in the
IEEE/RAS Int. Conf. on Humanoid Robots Presence of Strong Perturbations" IEEE/RAS Int. Conf. on Humanoid Robots
137-142, 2006 137-142, 2006
\anchor Dimitrov2009 \anchor Dimitrov2009
D. Dimitrov, P.-B. Wieber, O. Stasse, H.J. Ferreau and H. Diedam, 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", "An Optimized Linear Model Predictive Control Solver for Online Walking Motion
IEEE International Conference on Robotics and Automation (ICRA) Generation", IEEE International Conference on Robotics and Automation (ICRA) pp.
pp. 1171--1176, 2009 1171--1176, 2009
\anchor Herdt2010 \anchor Herdt2010
A. Herdt, D. Holger, P.B. Wieber, D. Dimitrov, K. Mombaur and D. Moritz 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 ...@@ -99,7 +101,7 @@ A. Herdt, D. Holger, P.B. Wieber, D. Dimitrov, K. Mombaur and D. Moritz
Advanced Robotics Advanced Robotics
Vol. 24 Issue 5-6, pp. 719--737 Vol. 24 Issue 5-6, pp. 719--737
\anchor Schittkowski2007 \anchor Schittkowski2007
K. Schittkowski (2007): QL: A Fortran code for convex K. Schittkowski (2007): QL: A Fortran code for convex
quadratic programming - user's guide, Report, Department quadratic programming - user's guide, Report, Department
of Computer Science, University of Bayreuth of Computer Science, University of Bayreuth
...@@ -107,7 +109,8 @@ of Computer Science, University of Bayreuth ...@@ -107,7 +109,8 @@ of Computer Science, University of Bayreuth
\defgroup pgjrl JRL Walking Pattern Generator Library (WalkGenJRL) \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 ...@@ -128,12 +131,11 @@ of Computer Science, University of Bayreuth
/** /**
\defgroup walkGenJrl_geometry Geometry \defgroup walkGenJrl_geometry Geometry
This group implements some basic geometrical tools for the Pattern Generator. This group implements some basic geometrical tools for the Pattern Generator.
@{ @{
*/ */
/** /**
@} @}
*/ */
...@@ -153,9 +155,9 @@ of Computer Science, University of Bayreuth ...@@ -153,9 +155,9 @@ of Computer Science, University of Bayreuth
/** /**
\defgroup pginterfaces Interfaces to WalkGenJRL \defgroup pginterfaces Interfaces to WalkGenJRL
This group shows how to interface the WalkGenJRL library to three kinds of applications: This group shows how to interface the WalkGenJRL library to three kinds of
\li An OpenHRP plugin, to run in real-time inside an HRP-2 humanoid robot, applications: \li An OpenHRP plugin, to run in real-time inside an HRP-2
\li A console program, for quick but yet complete testing of the pattern generator, humanoid robot, \li A console program, for quick but yet complete testing of
\li An OpenGL interface. the pattern generator, \li An OpenGL interface.
*/ */
...@@ -222,7 +222,7 @@ gnudict begin ...@@ -222,7 +222,7 @@ gnudict begin
/PentE { stroke [] 0 setdash gsave /PentE { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
closepath stroke grestore } def closepath stroke grestore } def
/CircE { stroke [] 0 setdash /CircE { stroke [] 0 setdash
hpt 0 360 arc stroke } def hpt 0 360 arc stroke } def
/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
/DiaW { stroke [] 0 setdash vpt add M /DiaW { stroke [] 0 setdash vpt add M
...@@ -242,7 +242,7 @@ gnudict begin ...@@ -242,7 +242,7 @@ gnudict begin
/PentW { stroke [] 0 setdash gsave /PentW { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
Opaque stroke grestore } def Opaque stroke grestore } def
/CircW { stroke [] 0 setdash /CircW { stroke [] 0 setdash
hpt 0 360 arc Opaque stroke } def hpt 0 360 arc Opaque stroke } def
/BoxFill { gsave Rec 1 setgray fill grestore } def /BoxFill { gsave Rec 1 setgray fill grestore } def
/BoxColFill { /BoxColFill {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
Landscape Landscape
Center Center
Metric Metric
A4 A4
100.00 100.00
Single Single
-2 -2
......
...@@ -222,7 +222,7 @@ gnudict begin ...@@ -222,7 +222,7 @@ gnudict begin
/PentE { stroke [] 0 setdash gsave /PentE { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
closepath stroke grestore } def closepath stroke grestore } def
/CircE { stroke [] 0 setdash /CircE { stroke [] 0 setdash
hpt 0 360 arc stroke } def hpt 0 360 arc stroke } def
/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
/DiaW { stroke [] 0 setdash vpt add M /DiaW { stroke [] 0 setdash vpt add M
...@@ -242,7 +242,7 @@ gnudict begin ...@@ -242,7 +242,7 @@ gnudict begin
/PentW { stroke [] 0 setdash gsave /PentW { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
Opaque stroke grestore } def Opaque stroke grestore } def
/CircW { stroke [] 0 setdash /CircW { stroke [] 0 setdash
hpt 0 360 arc Opaque stroke } def hpt 0 360 arc Opaque stroke } def
/BoxFill { gsave Rec 1 setgray fill grestore } def /BoxFill { gsave Rec 1 setgray fill grestore } def
/BoxColFill { /BoxColFill {
......
...@@ -222,7 +222,7 @@ gnudict begin ...@@ -222,7 +222,7 @@ gnudict begin
/PentE { stroke [] 0 setdash gsave /PentE { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
closepath stroke grestore } def closepath stroke grestore } def
/CircE { stroke [] 0 setdash /CircE { stroke [] 0 setdash
hpt 0 360 arc stroke } def hpt 0 360 arc stroke } def
/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
/DiaW { stroke [] 0 setdash vpt add M /DiaW { stroke [] 0 setdash vpt add M
...@@ -242,7 +242,7 @@ gnudict begin ...@@ -242,7 +242,7 @@ gnudict begin
/PentW { stroke [] 0 setdash gsave /PentW { stroke [] 0 setdash gsave
translate 0 hpt M 4 {72 rotate 0 hpt L} repeat translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
Opaque stroke grestore } def Opaque stroke grestore } def
/CircW { stroke [] 0 setdash /CircW { stroke [] 0 setdash
hpt 0 360 arc Opaque stroke } def hpt 0 360 arc Opaque stroke } def
/BoxFill { gsave Rec 1 setgray fill grestore } def /BoxFill { gsave Rec 1 setgray fill grestore } def
/BoxColFill { /BoxColFill {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
Landscape Landscape
Center Center
Metric Metric
A4 A4
100.00 100.00
Single Single
-2 -2
......