Basic RT components and utilities
315.12.1
|
This component is generate walking pattern and control Center Of Gravity (COG) for legged robots without sensor feedback.
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.
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.
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.
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, in which trajectories are displayed on graphs (COG, ZMP, ... etc).
testPreviewController # Non-ROS environemnt rosrun hrpsys testPreviewController # ROS environemnt
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.
AutoBalancerGaitGeneratorDocumentationSlide
implementation_id | AutoBalancer |
---|---|
category | example |
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.
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.
port name | data type | unit | description |
---|---|---|---|
qRef | RTC::TimedDoubleSeq | [rad] | Reference joint angles |
zmpIn | RTC::TimedPoint3D | [m] | Input ZMP in base frame |
basePosIn | RTC::TimedPoint3D | [m] | Input base position |
baseRpyIn | RTC::TimedOrientation3D | [rad] | Input base orientation (RPY) |
port name | data type | unit | description |
---|---|---|---|
q | RTC::TimedDoubleSeq | [rad] | Output reference joint angles |
zmpOut | RTC::TimedPoint3D | [m] | Output ZMP in base frame |
basePosOut | RTC::TimedPoint3D | [m] | Output base position |
baseRpyOut | RTC::TimedOrientation3D | [rad] | Output base orientation (RPY) |
baseTformOut | RTC::TimedDoubleSeq | [m], [rad] | Output base position and orientation (RPY) |
accRef | RTC::TimedAcceleration3D | [m/s^2] | Output attitude sensor's acceleration |
contactStates | RTC::TimedBooleanSeq | NA | Reference end-effector contact states (True=contact, False=no-contact) |
controlSwingSupportTime | RTC::TimedDouble | [s] | Time of swing phase |
port name | interface name | service type | IDL | description |
---|---|---|---|---|
AutoBalancerService | service0 | AutoBalancerService | OpenHRP::AutoBalancerService | AutoBalancerService |
N/A
name | type | unit | default value | description |
---|---|---|---|---|
debugLevel | int | 0 | debug level |
N/A