Humanoid walking controller with various baseline methods
HRP5P-BWC-WalkingStraightUnevenFloor-Cut-20221111.mp4
BaselineWalkingController-WalkingOnPlain-20220816.mp4
BaselineWalkingController-WalkingOnStairs-20220816.mp4
- Completely open source! (controller framework: mc_rtc, simulator: Choreonoid, sample robot model: JVRC1)
- Full capabilities, including 3D walking, mass property error compensation of robot model, and integration with a footstep planner.
- Easy to switch between various methods of centroidal trajectory generation for walking implemented in CentroidalControlCollection.
- Easy to switch between the two frameworks for centroidal trajectory generation for walking: (1) closed-loop MPC and (2) open-loop MPC + stabilizer.
- Support for a virtual robot whose model is publicly available so you can try out the controller right away.
- Automated management with CI: Dynamics simulation is run on CI to verify robot walking, and a Docker image is released here with the latest version of the controller ready to run.
The Docker image is automatically updated on CI from this Dockerfile.
This controller is a simple combination of the following existing typical elemental methods in the field of biped robotics:
- CoM trajectory generation based on LIPM
- ZMP feedback based on DCM
- Wrench distribution
- Foot damping control
For more information on the technical details, please see the following papers:
- Papers listed in CentroidalControlCollection
- Papers listed in ForceControlCollection
- S Kajita, et al. Biped walking stabilization based on linear inverted pendulum tracking. IROS, 2010.
- S Caron, et al. Stair climbing stabilization of the HRP-4 humanoid robot using whole-body admittance control. ICRA, 2019.
- Compiler supporting C++17
This package depends on
This package also depends on the following packages. However, manual installation is unnecessary when this package is installed using wstool as described in Controller installation.
- QpSolverCollection
- ForceControlCollection
- TrajectoryCollection
- NMPC
- CentroidalControlCollection
- BaselineFootstepPlanner (used only when found)
The recommended way to build this project is to use mc-rtc-superbuild along with the extension for BaselineWalkingController controller provided in superbuild-extensions.
git clone --recursive https://github.com/mc-rtc/mc-rtc-superbuild.git
cd extensions
git clone --recursive https://github.com/mc-rtc/superbuild-extensions.git
echo "set(EXTENSIONS_DIR ${CMAKE_CURRENT_LIST_DIR}/superbuild-extensions)" > local.cmake
# Install baseline walking controller and its dependencies
echo "include(${EXTENSIONS_DIR}/controllers/BaseLineWalkingController.cmake)" >> local.cmake
# For dynamics simulation with MuJoCo
echo "include(${EXTENSIONS_DIR}/simulation/MuJoCo.cmake)" >> local.cmake
echo "include(${EXTENSIONS_DIR}/gui/mc_rtc-magnum.cmake)" >> local.cmake
cd ..
# Configure the superbuild and install all required system dependencies
cmake --preset relwithdebinfo
# Clone all projects and their dependencies, and build them
# Note by default this will create a workspace folder in the parent directory
# If you wish to change the path or default options, edit CMakePresets.json or create your own preset in CMakeUserPresets.json
cmake --build --preset relwithdebinfo- Setup controller
$ mkdir -p ~/.config/mc_rtc/controllers
$ cp ~/workspace/install/etc/mc_rtc.yaml ~/.config/mc_rtc/mc_rtc.yamlEdit Enabled in ~/.config/mc_rtc/mc_rtc.yaml to be Enabled: BaselineWalkingController.
- Setup motion configuration file (optional)
$ cd ~/workspace/devel/BaseLineWalkingController/.github/workflows
$ python ./scripts/mergeConfigs.py ./config/PreviewControlZmp.yaml ./config/OpenLoopMpc.yaml ./config/WalkingOnPlane.yaml > ~/.config/mc_rtc/controllers/BaselineWalkingController.yaml$ mc_mujoco --syncBaselineWalkingController Tips: a collection of tips for BaselineWalkingController users
The following controllers are based on or developed with the same philosophy as BaselineWalkingController.
- Loco-manipulation: LocomanipController
- Multi-contact motion: MultiContactController