HumanoidMotionInterface.h

00001
00002 /***************************************************************************
00003  *  HumanoidMotionInterface.h - Fawkes BlackBoard Interface - HumanoidMotionInterface
00004  *
00005  *  Templated created:   Thu Oct 12 10:49:19 2006
00006  *  Copyright  2008  Tim Niemueller
00007  *
00008  ****************************************************************************/
00009
00010 /*  This program is free software; you can redistribute it and/or modify
00011  *  it under the terms of the GNU General Public License as published by
00012  *  the Free Software Foundation; either version 2 of the License, or
00013  *  (at your option) any later version. A runtime exception applies to
00014  *  this software (see LICENSE.GPL_WRE file mentioned below for details).
00015  *
00016  *  This program is distributed in the hope that it will be useful,
00017  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  *  GNU Library General Public License for more details.
00020  *
00021  *  Read the full text in the LICENSE.GPL_WRE file in the doc directory.
00022  */
00023
00024 #ifndef __INTERFACES_HUMANOIDMOTIONINTERFACE_H_
00025 #define __INTERFACES_HUMANOIDMOTIONINTERFACE_H_
00026 
00027 #include <interface/interface.h>
00028 #include <interface/message.h>
00029 #include <interface/field_iterator.h>
00030
00031 namespace fawkes {
00032
00033 class HumanoidMotionInterface : public Interface
00034 {
00035  /// @cond INTERNALS
00036  INTERFACE_MGMT_FRIENDS(HumanoidMotionInterface)
00037  /// @endcond
00038  public:
00039   /* constants */
00040 
00041   /** Type to determinate leg side. */
00042   typedef enum {
00043     LEG_LEFT /**< Left leg. */,
00044     LEG_RIGHT /**< Right leg. */
00045   } LegEnum;
00046 
00047   /** From which position to standup. */
00048   typedef enum {
00049     STANDUP_DETECT /**< Detect via accelerometer. */,
00050     STANDUP_BACK /**< Standup from lying on the back. */,
00051     STANDUP_FRONT /**< Standup from lying on the tummy. */
00052   } StandupEnum;
00053 
00054   /** The motion patterns that need specific stiffness settings */
00055   typedef enum {
00056     WALK /**< The walk pattern */,
00057     KICK /**< The kick pattern */
00058   } StiffnessMotionPatternEnum;
00059
00060  private:
00061   /** Internal data storage, do NOT modify! */
00062   typedef struct {
00063     unsigned int msgid; /**< 
00064       The ID of the message that is currently being
00065       processed, or 0 if no message is being processed.
00066      */
00067     float max_step_length; /**< 
00068       Maximum length of a footstep in m.
00069      */
00070     float max_step_height; /**< 
00071       Maxium height of a footstep cycloid in m.
00072      */
00073     float max_step_side; /**< 
00074       Maximum length of side step in m.
00075      */
00076     float max_step_turn; /**< 
00077       Maximum change around vertical axis on radians per footstep.
00078      */
00079     float zmp_offset_forward; /**< 
00080       Zero moment point offset in forward direction in m.
00081      */
00082     float zmp_offset_sideward; /**< 
00083       Zero moment point offset in sideward direction in m.
00084      */
00085     float l_hip_roll_compensation; /**< 
00086       Amplitude in degrees of backlash compensation for left hip roll.
00087       This is fitted to the Nao and is possibly not applicable to other robots.
00088      */
00089     float r_hip_roll_compensation; /**< 
00090       Amplitude in degrees of backlash compensation for left hip roll.
00091       This is fitted to the Nao and is possibly not applicable to other robots.
00092      */
00093     float hip_height; /**< 
00094       Height of hip during walk process.
00095       This is fitted to the Nao and is possibly not applicable to other robots.
00096      */
00097     float torso_sideward_orientation; /**< 
00098       Torso orientation in degrees in sideward direction during walking.
00099       This is fitted to the Nao and is possibly not applicable to other robots.
00100      */
00101     float shoulder_pitch_median; /**< 
00102       Median in radians of the shoulder pitch during walking.
00103      */
00104     float shoulder_pitch_amplitude; /**< 
00105       Amplitude of the shoulder pitch movement during walking.
00106      */
00107     float elbow_roll_median; /**< 
00108       Median in radians of the elbow roll during walking.
00109      */
00110     float elbow_roll_amplitude; /**< 
00111       Amplitude of the elbow roll movement during walking.
00112      */
00113     bool moving; /**< True if the robot is currently moving. */
00114     bool arms_enabled; /**< 
00115       If true the arms are controlled during walking for balancing.
00116      */
00117     LegEnum supporting_leg; /**< Marks the supporting leg */
00118   } HumanoidMotionInterface_data_t;
00119
00120   HumanoidMotionInterface_data_t *data;
00121
00122  public:
00123   /* messages */
00124   class SetWalkParamsMessage : public Message
00125   {
00126    private:
00127     /** Internal data storage, do NOT modify! */
00128     typedef struct {
00129       float max_step_length; /**< 
00130       Maximum length of a footstep in m.
00131      */
00132       float max_step_height; /**< 
00133       Maxium height of a footstep cycloid in m.
00134      */
00135       float max_step_side; /**< 
00136       Maximum length of side step in m.
00137      */
00138       float max_step_turn; /**< 
00139       Maximum change around vertical axis on radians per footstep.
00140      */
00141       float zmp_offset_forward; /**< 
00142       Zero moment point offset in forward direction in m.
00143      */
00144       float zmp_offset_sideward; /**< 
00145       Zero moment point offset in sideward direction in m.
00146      */
00147       float l_hip_roll_compensation; /**< 
00148       Amplitude in degrees of backlash compensation for left hip roll.
00149       This is fitted to the Nao and is possibly not applicable to other robots.
00150      */
00151       float r_hip_roll_compensation; /**< 
00152       Amplitude in degrees of backlash compensation for left hip roll.
00153       This is fitted to the Nao and is possibly not applicable to other robots.
00154      */
00155       float hip_height; /**< 
00156       Height of hip during walk process.
00157       This is fitted to the Nao and is possibly not applicable to other robots.
00158      */
00159       float torso_sideward_orientation; /**< 
00160       Torso orientation in degrees in sideward direction during walking.
00161       This is fitted to the Nao and is possibly not applicable to other robots.
00162      */
00163     } SetWalkParamsMessage_data_t;
00164
00165     SetWalkParamsMessage_data_t *data;
00166
00167    public:
00168     SetWalkParamsMessage(const float ini_max_step_length, const float ini_max_step_height, const float ini_max_step_side, const float ini_max_step_turn, const float ini_zmp_offset_forward, const float ini_zmp_offset_sideward, const float ini_l_hip_roll_compensation, const float ini_r_hip_roll_compensation, const float ini_hip_height, const float ini_torso_sideward_orientation);
00169     SetWalkParamsMessage();
00170     ~SetWalkParamsMessage();
00171
00172     SetWalkParamsMessage(const SetWalkParamsMessage *m);
00173     /* Methods */
00174     float max_step_length() const;
00175     void set_max_step_length(const float new_max_step_length);
00176     size_t maxlenof_max_step_length() const;
00177     float max_step_height() const;
00178     void set_max_step_height(const float new_max_step_height);
00179     size_t maxlenof_max_step_height() const;
00180     float max_step_side() const;
00181     void set_max_step_side(const float new_max_step_side);
00182     size_t maxlenof_max_step_side() const;
00183     float max_step_turn() const;
00184     void set_max_step_turn(const float new_max_step_turn);
00185     size_t maxlenof_max_step_turn() const;
00186     float zmp_offset_forward() const;
00187     void set_zmp_offset_forward(const float new_zmp_offset_forward);
00188     size_t maxlenof_zmp_offset_forward() const;
00189     float zmp_offset_sideward() const;
00190     void set_zmp_offset_sideward(const float new_zmp_offset_sideward);
00191     size_t maxlenof_zmp_offset_sideward() const;
00192     float l_hip_roll_compensation() const;
00193     void set_l_hip_roll_compensation(const float new_l_hip_roll_compensation);
00194     size_t maxlenof_l_hip_roll_compensation() const;
00195     float r_hip_roll_compensation() const;
00196     void set_r_hip_roll_compensation(const float new_r_hip_roll_compensation);
00197     size_t maxlenof_r_hip_roll_compensation() const;
00198     float hip_height() const;
00199     void set_hip_height(const float new_hip_height);
00200     size_t maxlenof_hip_height() const;
00201     float torso_sideward_orientation() const;
00202     void set_torso_sideward_orientation(const float new_torso_sideward_orientation);
00203     size_t maxlenof_torso_sideward_orientation() const;
00204     virtual Message * clone() const;
00205   };
00206
00207   class SetWalkArmsParamsMessage : public Message
00208   {
00209    private:
00210     /** Internal data storage, do NOT modify! */
00211     typedef struct {
00212       float shoulder_pitch_median; /**< 
00213       Median in radians of the shoulder pitch during walking.
00214      */
00215       float shoulder_pitch_amplitude; /**< 
00216       Amplitude of the shoulder pitch movement during walking.
00217      */
00218       float elbow_roll_median; /**< 
00219       Median in radians of the elbow roll during walking.
00220      */
00221       float elbow_roll_amplitude; /**< 
00222       Amplitude of the elbow roll movement during walking.
00223      */
00224       bool arms_enabled; /**< 
00225       If true the arms are controlled during walking for balancing.
00226      */
00227     } SetWalkArmsParamsMessage_data_t;
00228
00229     SetWalkArmsParamsMessage_data_t *data;
00230
00231    public:
00232     SetWalkArmsParamsMessage(const bool ini_arms_enabled, const float ini_shoulder_pitch_median, const float ini_shoulder_pitch_amplitude, const float ini_elbow_roll_median, const float ini_elbow_roll_amplitude);
00233     SetWalkArmsParamsMessage();
00234     ~SetWalkArmsParamsMessage();
00235
00236     SetWalkArmsParamsMessage(const SetWalkArmsParamsMessage *m);
00237     /* Methods */
00238     bool is_arms_enabled() const;
00239     void set_arms_enabled(const bool new_arms_enabled);
00240     size_t maxlenof_arms_enabled() const;
00241     float shoulder_pitch_median() const;
00242     void set_shoulder_pitch_median(const float new_shoulder_pitch_median);
00243     size_t maxlenof_shoulder_pitch_median() const;
00244     float shoulder_pitch_amplitude() const;
00245     void set_shoulder_pitch_amplitude(const float new_shoulder_pitch_amplitude);
00246     size_t maxlenof_shoulder_pitch_amplitude() const;
00247     float elbow_roll_median() const;
00248     void set_elbow_roll_median(const float new_elbow_roll_median);
00249     size_t maxlenof_elbow_roll_median() const;
00250     float elbow_roll_amplitude() const;
00251     void set_elbow_roll_amplitude(const float new_elbow_roll_amplitude);
00252     size_t maxlenof_elbow_roll_amplitude() const;
00253     virtual Message * clone() const;
00254   };
00255
00256   class StopMessage : public Message
00257   {
00258    public:
00259     StopMessage();
00260     ~StopMessage();
00261
00262     StopMessage(const StopMessage *m);
00263     /* Methods */
00264     virtual Message * clone() const;
00265   };
00266
00267   class WalkStraightMessage : public Message
00268   {
00269    private:
00270     /** Internal data storage, do NOT modify! */
00271     typedef struct {
00272       unsigned int num_samples; /**< 
00273       Number of intermediate samples to use for walking.
00274      */
00275       float distance; /**< Distance in m to walk. */
00276     } WalkStraightMessage_data_t;
00277
00278     WalkStraightMessage_data_t *data;
00279
00280    public:
00281     WalkStraightMessage(const float ini_distance, const unsigned int ini_num_samples);
00282     WalkStraightMessage();
00283     ~WalkStraightMessage();
00284
00285     WalkStraightMessage(const WalkStraightMessage *m);
00286     /* Methods */
00287     float distance() const;
00288     void set_distance(const float new_distance);
00289     size_t maxlenof_distance() const;
00290     unsigned int num_samples() const;
00291     void set_num_samples(const unsigned int new_num_samples);
00292     size_t maxlenof_num_samples() const;
00293     virtual Message * clone() const;
00294   };
00295
00296   class WalkSidewaysMessage : public Message
00297   {
00298    private:
00299     /** Internal data storage, do NOT modify! */
00300     typedef struct {
00301       unsigned int num_samples; /**< 
00302       Number of intermediate samples to use for strafing.
00303      */
00304       float distance; /**< Distance in m to walk. */
00305     } WalkSidewaysMessage_data_t;
00306
00307     WalkSidewaysMessage_data_t *data;
00308
00309    public:
00310     WalkSidewaysMessage(const float ini_distance, const unsigned int ini_num_samples);
00311     WalkSidewaysMessage();
00312     ~WalkSidewaysMessage();
00313
00314     WalkSidewaysMessage(const WalkSidewaysMessage *m);
00315     /* Methods */
00316     float distance() const;
00317     void set_distance(const float new_distance);
00318     size_t maxlenof_distance() const;
00319     unsigned int num_samples() const;
00320     void set_num_samples(const unsigned int new_num_samples);
00321     size_t maxlenof_num_samples() const;
00322     virtual Message * clone() const;
00323   };
00324
00325   class WalkArcMessage : public Message
00326   {
00327    private:
00328     /** Internal data storage, do NOT modify! */
00329     typedef struct {
00330       unsigned int num_samples; /**< 
00331       Number of intermediate samples to use for walking.
00332      */
00333       float angle; /**< Angle in radians to turn over the way. */
00334       float radius; /**< Radius in m of the circle in m. */
00335     } WalkArcMessage_data_t;
00336
00337     WalkArcMessage_data_t *data;
00338
00339    public:
00340     WalkArcMessage(const float ini_angle, const float ini_radius, const unsigned int ini_num_samples);
00341     WalkArcMessage();
00342     ~WalkArcMessage();
00343
00344     WalkArcMessage(const WalkArcMessage *m);
00345     /* Methods */
00346     float angle() const;
00347     void set_angle(const float new_angle);
00348     size_t maxlenof_angle() const;
00349     float radius() const;
00350     void set_radius(const float new_radius);
00351     size_t maxlenof_radius() const;
00352     unsigned int num_samples() const;
00353     void set_num_samples(const unsigned int new_num_samples);
00354     size_t maxlenof_num_samples() const;
00355     virtual Message * clone() const;
00356   };
00357
00358   class TurnMessage : public Message
00359   {
00360    private:
00361     /** Internal data storage, do NOT modify! */
00362     typedef struct {
00363       unsigned int num_samples; /**< 
00364       Number of intermediate samples to use for turning.
00365      */
00366       float angle; /**< Angle in radians to turn. */
00367     } TurnMessage_data_t;
00368
00369     TurnMessage_data_t *data;
00370
00371    public:
00372     TurnMessage(const float ini_angle, const unsigned int ini_num_samples);
00373     TurnMessage();
00374     ~TurnMessage();
00375
00376     TurnMessage(const TurnMessage *m);
00377     /* Methods */
00378     float angle() const;
00379     void set_angle(const float new_angle);
00380     size_t maxlenof_angle() const;
00381     unsigned int num_samples() const;
00382     void set_num_samples(const unsigned int new_num_samples);
00383     size_t maxlenof_num_samples() const;
00384     virtual Message * clone() const;
00385   };
00386
00387   class KickMessage : public Message
00388   {
00389    private:
00390     /** Internal data storage, do NOT modify! */
00391     typedef struct {
00392       float strength; /**< Kick strength */
00393       LegEnum leg; /**< Leg to kick with */
00394     } KickMessage_data_t;
00395
00396     KickMessage_data_t *data;
00397
00398    public:
00399     KickMessage(const LegEnum ini_leg, const float ini_strength);
00400     KickMessage();
00401     ~KickMessage();
00402
00403     KickMessage(const KickMessage *m);
00404     /* Methods */
00405     LegEnum leg() const;
00406     void set_leg(const LegEnum new_leg);
00407     size_t maxlenof_leg() const;
00408     float strength() const;
00409     void set_strength(const float new_strength);
00410     size_t maxlenof_strength() const;
00411     virtual Message * clone() const;
00412   };
00413
00414   class ParkMessage : public Message
00415   {
00416    private:
00417     /** Internal data storage, do NOT modify! */
00418     typedef struct {
00419       float time_sec; /**< Time in seconds when to reach the position. */
00420     } ParkMessage_data_t;
00421
00422     ParkMessage_data_t *data;
00423
00424    public:
00425     ParkMessage(const float ini_time_sec);
00426     ParkMessage();
00427     ~ParkMessage();
00428
00429     ParkMessage(const ParkMessage *m);
00430     /* Methods */
00431     float time_sec() const;
00432     void set_time_sec(const float new_time_sec);
00433     size_t maxlenof_time_sec() const;
00434     virtual Message * clone() const;
00435   };
00436
00437   class GetUpMessage : public Message
00438   {
00439    private:
00440     /** Internal data storage, do NOT modify! */
00441     typedef struct {
00442       float time_sec; /**< Time in seconds when to reach the position. */
00443     } GetUpMessage_data_t;
00444
00445     GetUpMessage_data_t *data;
00446
00447    public:
00448     GetUpMessage(const float ini_time_sec);
00449     GetUpMessage();
00450     ~GetUpMessage();
00451
00452     GetUpMessage(const GetUpMessage *m);
00453     /* Methods */
00454     float time_sec() const;
00455     void set_time_sec(const float new_time_sec);
00456     size_t maxlenof_time_sec() const;
00457     virtual Message * clone() const;
00458   };
00459
00460   class StandupMessage : public Message
00461   {
00462    private:
00463     /** Internal data storage, do NOT modify! */
00464     typedef struct {
00465       StandupEnum from_pos; /**< Position from where to standup. */
00466     } StandupMessage_data_t;
00467
00468     StandupMessage_data_t *data;
00469
00470    public:
00471     StandupMessage(const StandupEnum ini_from_pos);
00472     StandupMessage();
00473     ~StandupMessage();
00474
00475     StandupMessage(const StandupMessage *m);
00476     /* Methods */
00477     StandupEnum from_pos() const;
00478     void set_from_pos(const StandupEnum new_from_pos);
00479     size_t maxlenof_from_pos() const;
00480     virtual Message * clone() const;
00481   };
00482
00483   class YawPitchHeadMessage : public Message
00484   {
00485    private:
00486     /** Internal data storage, do NOT modify! */
00487     typedef struct {
00488       float yaw; /**< Desired yaw (horizontal orientation). */
00489       float pitch; /**< Desired pitch (vertical orientation). */
00490       float time_sec; /**< Time in seconds when to reach the target. */
00491     } YawPitchHeadMessage_data_t;
00492
00493     YawPitchHeadMessage_data_t *data;
00494
00495    public:
00496     YawPitchHeadMessage(const float ini_yaw, const float ini_pitch, const float ini_time_sec);
00497     YawPitchHeadMessage();
00498     ~YawPitchHeadMessage();
00499
00500     YawPitchHeadMessage(const YawPitchHeadMessage *m);
00501     /* Methods */
00502     float yaw() const;
00503     void set_yaw(const float new_yaw);
00504     size_t maxlenof_yaw() const;
00505     float pitch() const;
00506     void set_pitch(const float new_pitch);
00507     size_t maxlenof_pitch() const;
00508     float time_sec() const;
00509     void set_time_sec(const float new_time_sec);
00510     size_t maxlenof_time_sec() const;
00511     virtual Message * clone() const;
00512   };
00513
00514   class SetStiffnessParamsMessage : public Message
00515   {
00516    private:
00517     /** Internal data storage, do NOT modify! */
00518     typedef struct {
00519       float head_yaw; /**< head_yaw */
00520       float head_pitch; /**< head_pitch */
00521       float l_shoulder_pitch; /**< l_shoulder_pitch */
00522       float l_shoulder_roll; /**< l_shoulder_roll */
00523       float l_elbow_yaw; /**< l_elbow_yaw */
00524       float l_elbow_roll; /**< l_elbow_roll */
00525       float l_hip_yaw_pitch; /**< l_hip_yaw_pitch */
00526       float l_hip_roll; /**< l_hip_roll */
00527       float l_hip_pitch; /**< l_hip_pitch */
00528       float l_knee_pitch; /**< l_knee_pitch */
00529       float l_ankle_pitch; /**< l_ankle_pitch */
00530       float l_ankle_roll; /**< l_ankle_roll */
00531       float r_hip_yaw_pitch; /**< r_hip_yaw_pitch */
00532       float r_hip_roll; /**< r_hip_roll */
00533       float r_hip_pitch; /**< r_hip_pitch */
00534       float r_knee_pitch; /**< r_knee_pitch */
00535       float r_ankle_pitch; /**< r_ankle_pitch */
00536       float r_ankle_roll; /**< r_ankle_roll */
00537       float r_shoulder_pitch; /**< r_shoulder_pitch */
00538       float r_shoulder_roll; /**< r_shoulder_roll */
00539       float r_elbow_yaw; /**< r_elbow_yaw */
00540       float r_elbow_roll; /**< r_elbow_roll */
00541       StiffnessMotionPatternEnum motion_pattern; /**< the motion pattern to update */
00542     } SetStiffnessParamsMessage_data_t;
00543
00544     SetStiffnessParamsMessage_data_t *data;
00545
00546    public:
00547     SetStiffnessParamsMessage(const StiffnessMotionPatternEnum ini_motion_pattern, const float ini_head_yaw, const float ini_head_pitch, const float ini_l_shoulder_pitch, const float ini_l_shoulder_roll, const float ini_l_elbow_yaw, const float ini_l_elbow_roll, const float ini_l_hip_yaw_pitch, const float ini_l_hip_roll, const float ini_l_hip_pitch, const float ini_l_knee_pitch, const float ini_l_ankle_pitch, const float ini_l_ankle_roll, const float ini_r_hip_yaw_pitch, const float ini_r_hip_roll, const float ini_r_hip_pitch, const float ini_r_knee_pitch, const float ini_r_ankle_pitch, const float ini_r_ankle_roll, const float ini_r_shoulder_pitch, const float ini_r_shoulder_roll, const float ini_r_elbow_yaw, const float ini_r_elbow_roll);
00548     SetStiffnessParamsMessage();
00549     ~SetStiffnessParamsMessage();
00550
00551     SetStiffnessParamsMessage(const SetStiffnessParamsMessage *m);
00552     /* Methods */
00553     StiffnessMotionPatternEnum motion_pattern() const;
00554     void set_motion_pattern(const StiffnessMotionPatternEnum new_motion_pattern);
00555     size_t maxlenof_motion_pattern() const;
00556     float head_yaw() const;
00557     void set_head_yaw(const float new_head_yaw);
00558     size_t maxlenof_head_yaw() const;
00559     float head_pitch() const;
00560     void set_head_pitch(const float new_head_pitch);
00561     size_t maxlenof_head_pitch() const;
00562     float l_shoulder_pitch() const;
00563     void set_l_shoulder_pitch(const float new_l_shoulder_pitch);
00564     size_t maxlenof_l_shoulder_pitch() const;
00565     float l_shoulder_roll() const;
00566     void set_l_shoulder_roll(const float new_l_shoulder_roll);
00567     size_t maxlenof_l_shoulder_roll() const;
00568     float l_elbow_yaw() const;
00569     void set_l_elbow_yaw(const float new_l_elbow_yaw);
00570     size_t maxlenof_l_elbow_yaw() const;
00571     float l_elbow_roll() const;
00572     void set_l_elbow_roll(const float new_l_elbow_roll);
00573     size_t maxlenof_l_elbow_roll() const;
00574     float l_hip_yaw_pitch() const;
00575     void set_l_hip_yaw_pitch(const float new_l_hip_yaw_pitch);
00576     size_t maxlenof_l_hip_yaw_pitch() const;
00577     float l_hip_roll() const;
00578     void set_l_hip_roll(const float new_l_hip_roll);
00579     size_t maxlenof_l_hip_roll() const;
00580     float l_hip_pitch() const;
00581     void set_l_hip_pitch(const float new_l_hip_pitch);
00582     size_t maxlenof_l_hip_pitch() const;
00583     float l_knee_pitch() const;
00584     void set_l_knee_pitch(const float new_l_knee_pitch);
00585     size_t maxlenof_l_knee_pitch() const;
00586     float l_ankle_pitch() const;
00587     void set_l_ankle_pitch(const float new_l_ankle_pitch);
00588     size_t maxlenof_l_ankle_pitch() const;
00589     float l_ankle_roll() const;
00590     void set_l_ankle_roll(const float new_l_ankle_roll);
00591     size_t maxlenof_l_ankle_roll() const;
00592     float r_hip_yaw_pitch() const;
00593     void set_r_hip_yaw_pitch(const float new_r_hip_yaw_pitch);
00594     size_t maxlenof_r_hip_yaw_pitch() const;
00595     float r_hip_roll() const;
00596     void set_r_hip_roll(const float new_r_hip_roll);
00597     size_t maxlenof_r_hip_roll() const;
00598     float r_hip_pitch() const;
00599     void set_r_hip_pitch(const float new_r_hip_pitch);
00600     size_t maxlenof_r_hip_pitch() const;
00601     float r_knee_pitch() const;
00602     void set_r_knee_pitch(const float new_r_knee_pitch);
00603     size_t maxlenof_r_knee_pitch() const;
00604     float r_ankle_pitch() const;
00605     void set_r_ankle_pitch(const float new_r_ankle_pitch);
00606     size_t maxlenof_r_ankle_pitch() const;
00607     float r_ankle_roll() const;
00608     void set_r_ankle_roll(const float new_r_ankle_roll);
00609     size_t maxlenof_r_ankle_roll() const;
00610     float r_shoulder_pitch() const;
00611     void set_r_shoulder_pitch(const float new_r_shoulder_pitch);
00612     size_t maxlenof_r_shoulder_pitch() const;
00613     float r_shoulder_roll() const;
00614     void set_r_shoulder_roll(const float new_r_shoulder_roll);
00615     size_t maxlenof_r_shoulder_roll() const;
00616     float r_elbow_yaw() const;
00617     void set_r_elbow_yaw(const float new_r_elbow_yaw);
00618     size_t maxlenof_r_elbow_yaw() const;
00619     float r_elbow_roll() const;
00620     void set_r_elbow_roll(const float new_r_elbow_roll);
00621     size_t maxlenof_r_elbow_roll() const;
00622     virtual Message * clone() const;
00623   };
00624
00625   virtual bool message_valid(const Message *message) const;
00626  private:
00627   HumanoidMotionInterface();
00628   ~HumanoidMotionInterface();
00629
00630  public:
00631   /* Methods */
00632   bool is_moving() const;
00633   void set_moving(const bool new_moving);
00634   size_t maxlenof_moving() const;
00635   LegEnum supporting_leg() const;
00636   void set_supporting_leg(const LegEnum new_supporting_leg);
00637   size_t maxlenof_supporting_leg() const;
00638   float max_step_length() const;
00639   void set_max_step_length(const float new_max_step_length);
00640   size_t maxlenof_max_step_length() const;
00641   float max_step_height() const;
00642   void set_max_step_height(const float new_max_step_height);
00643   size_t maxlenof_max_step_height() const;
00644   float max_step_side() const;
00645   void set_max_step_side(const float new_max_step_side);
00646   size_t maxlenof_max_step_side() const;
00647   float max_step_turn() const;
00648   void set_max_step_turn(const float new_max_step_turn);
00649   size_t maxlenof_max_step_turn() const;
00650   float zmp_offset_forward() const;
00651   void set_zmp_offset_forward(const float new_zmp_offset_forward);
00652   size_t maxlenof_zmp_offset_forward() const;
00653   float zmp_offset_sideward() const;
00654   void set_zmp_offset_sideward(const float new_zmp_offset_sideward);
00655   size_t maxlenof_zmp_offset_sideward() const;
00656   float l_hip_roll_compensation() const;
00657   void set_l_hip_roll_compensation(const float new_l_hip_roll_compensation);
00658   size_t maxlenof_l_hip_roll_compensation() const;
00659   float r_hip_roll_compensation() const;
00660   void set_r_hip_roll_compensation(const float new_r_hip_roll_compensation);
00661   size_t maxlenof_r_hip_roll_compensation() const;
00662   float hip_height() const;
00663   void set_hip_height(const float new_hip_height);
00664   size_t maxlenof_hip_height() const;
00665   float torso_sideward_orientation() const;
00666   void set_torso_sideward_orientation(const float new_torso_sideward_orientation);
00667   size_t maxlenof_torso_sideward_orientation() const;
00668   bool is_arms_enabled() const;
00669   void set_arms_enabled(const bool new_arms_enabled);
00670   size_t maxlenof_arms_enabled() const;
00671   float shoulder_pitch_median() const;
00672   void set_shoulder_pitch_median(const float new_shoulder_pitch_median);
00673   size_t maxlenof_shoulder_pitch_median() const;
00674   float shoulder_pitch_amplitude() const;
00675   void set_shoulder_pitch_amplitude(const float new_shoulder_pitch_amplitude);
00676   size_t maxlenof_shoulder_pitch_amplitude() const;
00677   float elbow_roll_median() const;
00678   void set_elbow_roll_median(const float new_elbow_roll_median);
00679   size_t maxlenof_elbow_roll_median() const;
00680   float elbow_roll_amplitude() const;
00681   void set_elbow_roll_amplitude(const float new_elbow_roll_amplitude);
00682   size_t maxlenof_elbow_roll_amplitude() const;
00683   unsigned int msgid() const;
00684   void set_msgid(const unsigned int new_msgid);
00685   size_t maxlenof_msgid() const;
00686   virtual Message * create_message(const char *type) const;
00687
00688   virtual void copy_values(const Interface *other);
00689
00690 };
00691
00692 } // end namespace fawkes
00693
00694 #endif