Humanoid multi-contact motion controller
HRP5P-MCC-TableWithTiltBlocks-20230220-2-cut.mp4
MultiContactController-MotionSampleField-20230213.mp4
MultiContactController-MotionSampleStepladder-20230327-x2.mp4
- Completely open source! (controller framework: mc_rtc, simulator: Choreonoid, sample robot model: JVRC1)
- Unified control of bipedal walking, multi-contact locomotion including surface/grasp contacts, and jumping motion.
- Easy to switch between centroidal trajectory generation methods implemented in CentroidalControlCollection.
- Automated management with CI: Dynamics simulation is run on CI to verify multi-contact motion.
This controller integrates the following elements related to humanoid multi-contact motion:
- Centroidal trajectory generation based on MPC
- Feedback based on centroidal state
- Wrench distribution
- Damping control in limbs
For more information on the technical details, please see the following papers:
- Papers listed in CentroidalControlCollection
- Papers listed in ForceControlCollection
- M. Murooka, et al., "Centroidal trajectory generation and stabilization based on preview control for humanoid multi-contact motion", IEEE Robotics and Automation Letters, 2022. 10.1109/LRA.2022.3186515 (available here)
- M. Murooka, et al., "Whole-body multi-contact motion control for humanoid robots based on distributed tactile sensors", IEEE Robotics and Automation Letters, 2024. 10.1109/LRA.2024.3475052 (available here)
- Compiler supporting C++17
- Tested with
Ubuntu 20.04 / ROS Noetic
andUbuntu 18.04 / ROS Melodic
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
- BaselineWalkingController
- (Skip if ROS is already installed.) Install ROS. See here for details.
$ export ROS_DISTRO=melodic
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install ros-${ROS_DISTRO}-ros-base python-catkin-tools python-rosdep
- (Skip if mc_rtc is already installed.) Install mc_rtc. See here for details.
$ curl -1sLf 'https://dl.cloudsmith.io/public/mc-rtc/stable/setup.deb.sh' | sudo -E bash
$ sudo apt-get install libmc-rtc-dev mc-rtc-utils mc-state-observation jvrc-choreonoid libcnoid-dev ros-${ROS_DISTRO}-mc-rtc-plugin ros-${ROS_DISTRO}-mc-rtc-rviz-panel libeigen-qld-dev
- Setup catkin workspace.
$ mkdir -p ~/ros/ws_mcc/src
$ cd ~/ros/ws_mcc
$ wstool init src
$ wstool set -t src isri-aist/MultiContactController https://github.com/isri-aist/MultiContactController --git -y
$ wstool update -t src isri-aist/MultiContactController
$ wstool merge -t src src/isri-aist/MultiContactController/depends.rosinstall
$ wstool update -t src
- Install dependent packages.
$ source /opt/ros/${ROS_DISTRO}/setup.bash
$ rosdep install -y -r --from-paths src --ignore-src
- Build a package.
$ catkin build multi_contact_controller -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_QLD=ON --catkin-make-args all tests
- Setup controller
$ mkdir -p ~/.config/mc_rtc/controllers
$ cp ~/ros/ws_mcc/src/isri-aist/MultiContactController/etc/mc_rtc.yaml ~/.config/mc_rtc/mc_rtc.yaml
- Setup motion configuration file (optional)
$ roscd multi_contact_controller
$ cd .github/workflows
$ python ./scripts/mergeConfigs.py ./config/MotionSampleField.yaml ./config/DDP.yaml > ~/.config/mc_rtc/controllers/MultiContactController.yaml
# Terminal 1
$ source ~/ros/ws_mcc/devel/setup.bash
$ roscore
# Terminal 2
$ source ~/ros/ws_mcc/devel/setup.bash
$ roscd multi_contact_controller/cnoid/project/
$ /usr/share/hrpsys/samples/JVRC1/clear-omninames.sh
$ choreonoid MCC_JVRC1_SampleField.cnoid --start-simulation
# Terminal 3
$ source ~/ros/ws_mcc/devel/setup.bash
$ roslaunch multi_contact_controller display.launch