Giter Club home page Giter Club logo

multicontactcontroller's Introduction

Humanoid multi-contact motion controller

CI Documentation LICENSE

HRP5P-MCC-TableWithTiltBlocks-20230220-2-cut.mp4
MultiContactController-MotionSampleField-20230213.mp4
MultiContactController-MotionSampleStepladder-20230327-x2.mp4

Features

  • 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.

Technical details

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:

Install

Requirements

  • Compiler supporting C++17
  • Tested with Ubuntu 20.04 / ROS Noetic and Ubuntu 18.04 / ROS Melodic

Dependencies

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.

Preparation

  1. (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
  1. (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

Controller installation

  1. 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
  1. Install dependent packages.
$ source /opt/ros/${ROS_DISTRO}/setup.bash
$ rosdep install -y -r --from-paths src --ignore-src
  1. Build a package.
$ catkin build multi_contact_controller -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_QLD=ON --catkin-make-args all tests
  1. 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

Simulation execution

# 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

multicontactcontroller's People

Contributors

gergondet avatar mmurooka avatar orikuma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

multicontactcontroller's Issues

Choreonoid aborts in CI

https://github.com/isri-aist/MultiContactController/actions/runs/4120205495/jobs/7114695001

+ choreonoid MCC_JVRC1_SampleField.cnoid --start-simulation
...
[info] Loading additional plugin configuration: /usr/lib/x86_64-linux-gnu/mc_plugins/etc/ROS.yaml
[info] Loading additional controller configuration: /home/runner/work/MultiContactController/MultiContactController/catkin_ws/devel/.private/multi_contact_controller/lib/mc_controller/etc/MultiContactController.yaml
[info] Loading additional controller configuration: /home/runner/.config/mc_rtc/controllers/MultiContactController.yaml
[info] Create controller MultiContactController
[success] [overwriteConfig] Overwrite with configuration jvrc1.
choreonoid: /package/mc_rtc/3rd-party/RapidJSON/rapidjson/document.h:1993: bool rapidjson::GenericValue<Encoding, Allocator>::StringEqual(const rapidjson::GenericValue<Encoding, SourceAllocator>&) const [with SourceAllocator = rapidjson::CrtAllocator; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::CrtAllocator]: Assertion `rhs.IsString()' failed.
/home/runner/work/_temp/fd9076cd-19f5-4bb4-a134-da7[484](https://github.com/isri-aist/MultiContactController/actions/runs/4120205495/jobs/7114695001#step:9:485)39b8c7.sh: line 29: 24184 Aborted                 (core dumped) choreonoid ${CNOID_FILE} --start-simulation
+ kill -2 24140
+ kill -2 24184
/home/runner/work/_temp/fd9076cd-19f5-4bb4-a134-da748439b8c7.sh: line 31: kill: (24184) - No such process
Error: Process completed with exit code 1.

Robot falls over when using DDP in CI simulation test

See https://github.com/isri-aist/MultiContactController/actions/runs/6061308105/job/16449873366

The regular weekly CI runs did not fail in Aug 27, but started to fail from Sep 3. The major change in mc_rtc during this period is jrl-umi3218/mc_rtc#385. It is not my intention to imply that this change is a mistake, but that the robot has started to fall over in CI simulation test due to some side effect caused by the change. (Indeed, this PR change could have an effect, since the falling point is where the robot reaches the hand while avoiding collisions)

MCC-video-DDP-MotionSampleField-standalone.mp4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.