Basic RT components and utilities  315.12.1

Overview

This component is generate walking pattern and control Center Of Gravity (COG) for legged robots without sensor feedback.

COG control

This component modifies input joint angles to track reference COG position. This component receives reference joint angles from "qRef" inport. Then it solves Inverse Kinematics (or something) to track reference COG position, obtains jonint angles, and outputs the joint angles as "q" outport.

In this calculation, this component tracks reference XY COG position, reference Z base position, and reference base orientation.

Mode

This component has modes and behaves as Finite State Machine. By default, this component is idle mode ("MODE_IDLE"), in which it do not modify input joint angles. When OpenHRP::AutoBalancerService::startAutoBalancer() are called in IDLE mode, it switches to controlling mode ("MODE_ABC"), in which it modifies joint angles. When OpenHRP::AutoBalancerService::stopAutoBalancer() are called in controlling mode, it switches to idle mode.

Controlled end-effectors

User can specify which end-effector is controlled by the argument of OpenHRP::AutoBalancerService::startAutoBalancer(). When OpenHRP::AutoBalancerService::startAutoBalancer() are called with ["rleg", "lleg"], it controlles reference end-effector position and orientation for "rleg" and "lleg". When OpenHRP::AutoBalancerService::startAutoBalancer() are called with ["rleg", "lleg", "rarm", "larm"], it controlles reference end-effector for "rleg", "lleg", "rarm", "larm". In this case, the robot seems to keep both feet and hands position and orientation.

Walking pattern generation

This component has also the feature as walking pattern generation, named as GaitGenerator. When OpenHRP::AutoBalancerService::goPos(), OpenHRP::AutoBalancerService::goVelocity(), OpenHRP::AutoBalancerService::setFootSteps() are called, this component starts to use reference XY COG position from "GaitGenerator". For OpenHRP::AutoBalancerService::goPos() and OpenHRP::AutoBalancerService::setFootSteps(), this component stops to use it after completing walking command. After OpenHRP::AutoBalancerService::goVelocity() is called, this component continuously generates walking pattern. When OpenHRP::AutoBalancerService::goStop() are called in this case, this completing stops to use it after completing walking command.

Preview Controller Example

Preview controller example, in which trajectories are displayed on graphs (COG, ZMP, ... etc).

testPreviewController # Non-ROS environemnt
rosrun hrpsys testPreviewController # ROS environemnt

GaitGenerator Example

GaitGenerator example, in which trajectories are displayed on graphs (COG, ZMP, foot trajectories ... etc).

Users can change test type (fwd-walking example, rotation-walking example, stair-walking, toe-heel example, ... etc).

Users can also change GaitGenerator parameters (step time, step height, orbit type, ... etc).

testGaitGenerator [test-type-option] [gg-parameters-options] # Non ROS environment
rosrun hrpsys testGaitGenerator [test-type-option] [gg-parameters-options] # ROS environment

[test-type-option] is test type and [gg-parameters-options] are GaitGeneratorParameters. To learn test type, please execute testGaitGenerator without arguments.

More Documentation, Figures, and Explanation for AutoBalancer and GaitGenerator

AutoBalancerGaitGeneratorDocumentationSlide

implementation_idAutoBalancer
categoryexample

About Toe Joints

AutoBalancer can support toe joints. Toe joint is defined as end-link joint in the case that end-effector link != force-sensor link. Without toe joints, "end-effector link == force-sensor link" is assumed. With toe joints, "end-effector link != force-sensor link" is assumed.

Hands and arms functionality

In AutoBalancer, hands and arms has several functionality for two legs and two arms robot. 1. No ik mode. If startAutoBalancer with ["rleg", "lleg"], arms IK are not solved while MODE_ABC.

2. IK mode without fix. If startAutoBalancer with ["rleg", "lleg", "rarm", "larm"] and leg_names is ["rleg", "lleg"] and is_hand_fix_mode is false, arms IK are solved while MODE_ABC and Hands target pos are determined according to COG velocity during walking. So, hands seems to follow upper body swinging and total behavior looks like No IK mode.

3. IK mode with fix. If startAutoBalancer with ["rleg", "lleg", "rarm", "larm"] and leg_names is ["rleg", "lleg"] and is_hand_fix_mode is true, arms IK are solved while MODE_ABC. Hands target pos Y in foot coords are not change during walking and pos X in foot coords is determined according to COG velocity X. So, hands seems to be fixed and follow foot projected coordinated.

4. Four legged walking mode. If startAutoBalancer with ["rleg", "lleg", "rarm", "larm"] and leg_names is ["rleg", "lleg", "rarm", "larm"], arms IK are solved while MODE_ABC and hand coords are determined by GaitGenerator as walking target.

Data Ports

Input Ports

port namedata typeunitdescription
qRefRTC::TimedDoubleSeq[rad]Reference joint angles
zmpInRTC::TimedPoint3D[m]Input ZMP in base frame
basePosInRTC::TimedPoint3D[m]Input base position
baseRpyInRTC::TimedOrientation3D[rad]Input base orientation (RPY)

Output Ports

port namedata typeunitdescription
qRTC::TimedDoubleSeq[rad]Output reference joint angles
zmpOutRTC::TimedPoint3D[m]Output ZMP in base frame
basePosOutRTC::TimedPoint3D[m]Output base position
baseRpyOutRTC::TimedOrientation3D[rad]Output base orientation (RPY)
baseTformOutRTC::TimedDoubleSeq[m], [rad]Output base position and orientation (RPY)
accRefRTC::TimedAcceleration3D[m/s^2]Output attitude sensor's acceleration
contactStatesRTC::TimedBooleanSeqNAReference end-effector contact states (True=contact, False=no-contact)
controlSwingSupportTimeRTC::TimedDouble[s]Time of swing phase

Service Ports

Service Providers

port nameinterface nameservice typeIDLdescription
AutoBalancerServiceservice0AutoBalancerServiceOpenHRP::AutoBalancerServiceAutoBalancerService

Service Consumers

N/A

Configuration Variables

nametypeunitdefault valuedescription
debugLevelint0debug level

Configuration File

N/A