moveit_humanoid_stability

Libraries for sampling and validating a humanoid biped with one or more fixed feet for stability constraints in MoveIt!

Stars
11

MoveIt! Humanoid Stability

Libraries for sampling and validating a humanoid biped with one or more fixed feet for stability constraints in MoveIt! including:

  • Fast stability heuristic checking
  • Center of mass, static stability, and support polygon computations.
  • Smart sampling of whole body positions using random number generation

Provides a wrapper for hrl_kinematics that allows the center of mass stability testing for robots based on KDL.

Developed by Dave Coleman and Shintaro Noda at JSK, University of Tokyo.

Install

This package requires an experimental branch of moveit_core be installed. It might be a while until it is merged into the main distribution. See experimental_fake_base

Overall, making this work on your machine will be fairly complicated until a long list of pending MoveIt! pull requests are accepted. See Dave Coleman for more details.

Usage and Explanation

Balance Constraint Validator

Performs two course-grain checks and, if they pass, finally does full COM check:

  1. Checks for a course-grain stability check by seeing if the torso is within a bounding box. This bound box is set in the yaml file and should be found through many iterations. A 0.1m expansion is added to the bounding box so that it over-accepts poses.
  2. Checks if the other foot is above ground (z >= 0)
  3. Checks if the COM is within the foot projection using hrl_kinematics

It does not check for self collision or collision with environment, because that is accomplished by other components in MoveIt! automatically.

You can use the validator within a MoveIt! planning scene as a custom stability checker - see the function getStateFeasibilityFn() for use with a planning scene by calling:

planning_scene_->setStateFeasibilityPredicate(humanoid_stability_->getStateFeasibilityFn());

State Sampling

The sampler first samples the fixed leg, performs some quick checks, then samples the rest of the body and performs exact checks.

You can use a custom constraint sampler plugin for MoveIt! by adding a "constraint_samplers" param to your move_group launch file, for example:

  <node name="hrp2jsknt_moveit_demos" pkg="hrp2jsknt_moveit_demos" type="hrp2_demos">
    <rosparam command="load" file="$(find moveit_humanoid_stability)/config/hrp2jsknt_stability.yaml"/>
    <param name="constraint_samplers" value="moveit_humanoid_stability/HumanoidConstraintSamplerAllocator"/>
  </node>

Configuration

A yaml configuration file is required to load the settings for your robot. See config/hrp2jsknt_stability.yaml

Debug

Balance Constraint Validator

N/A

State Sampling

Rviz markers are available on topic /humanoid_constraint_sample_markers and the robot state is published on /humanoid_constraint_sample_robots

Limitations / Future Work

Stability Validator

  • Only supports standing on left or right foot - needs dual feet support
  • Only supports fixed link remaining the same (never changes location or link)
  • Improve conversion of joint states from MoveIt! to KDL
  • Smartly check which foot/feet to check for stability
  • Improve other foot check for above ground to include all of mesh, not just the origin of the tip link of the leg

Constraint Sampler

  • Cleanup code (currently research code)
  • Sample for dual legs, which is a closed chain, and probably requires an IK solver