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   const char * tostring_LegEnum(LegEnum value) const;
00047 
00048   /** From which position to standup. */
00049   typedef enum {
00050     STANDUP_DETECT /**< Detect via accelerometer. */,
00051     STANDUP_BACK /**< Standup from lying on the back. */,
00052     STANDUP_FRONT /**< Standup from lying on the tummy. */
00053   } StandupEnum;
00054   const char * tostring_StandupEnum(StandupEnum value) const;
00055 
00056   /** The motion patterns that need specific stiffness settings */
00057   typedef enum {
00058     WALK /**< The walk pattern */,
00059     KICK /**< The kick pattern */
00060   } StiffnessMotionPatternEnum;
00061   const char * tostring_StiffnessMotionPatternEnum(StiffnessMotionPatternEnum value) const;
00062 
00063  private:
00064 #pragma pack(push,4)
00065   /** Internal data storage, do NOT modify! */
00066   typedef struct {
00067     int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00068     int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00069     bool moving; /**< True if the robot is currently moving. */
00070     LegEnum supporting_leg; /**< Marks the supporting leg */
00071     float max_step_length; /**< 
00072       Maximum length of a footstep in m.
00073      */
00074     float max_step_height; /**< 
00075       Maxium height of a footstep cycloid in m.
00076      */
00077     float max_step_side; /**< 
00078       Maximum length of side step in m.
00079      */
00080     float max_step_turn; /**< 
00081       Maximum change around vertical axis on radians per footstep.
00082      */
00083     float zmp_offset_forward; /**< 
00084       Zero moment point offset in forward direction in m.
00085      */
00086     float zmp_offset_sideward; /**< 
00087       Zero moment point offset in sideward direction in m.
00088      */
00089     float l_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 r_hip_roll_compensation; /**< 
00094       Amplitude in degrees of backlash compensation for left hip roll.
00095       This is fitted to the Nao and is possibly not applicable to other robots.
00096      */
00097     float hip_height; /**< 
00098       Height of hip during walk process.
00099       This is fitted to the Nao and is possibly not applicable to other robots.
00100      */
00101     float torso_sideward_orientation; /**< 
00102       Torso orientation in degrees in sideward direction during walking.
00103       This is fitted to the Nao and is possibly not applicable to other robots.
00104      */
00105     bool arms_enabled; /**< 
00106       If true the arms are controlled during walking for balancing.
00107      */
00108     float shoulder_pitch_median; /**< 
00109       Median in radians of the shoulder pitch during walking.
00110      */
00111     float shoulder_pitch_amplitude; /**< 
00112       Amplitude of the shoulder pitch movement during walking.
00113      */
00114     float elbow_roll_median; /**< 
00115       Median in radians of the elbow roll during walking.
00116      */
00117     float elbow_roll_amplitude; /**< 
00118       Amplitude of the elbow roll movement during walking.
00119      */
00120     uint32_t msgid; /**< 
00121       The ID of the message that is currently being
00122       processed, or 0 if no message is being processed.
00123      */
00124   } HumanoidMotionInterface_data_t;
00125 #pragma pack(pop)
00126 
00127   HumanoidMotionInterface_data_t *data;
00128 
00129  public:
00130   /* messages */
00131   class SetWalkParamsMessage : public Message
00132   {
00133    private:
00134 #pragma pack(push,4)
00135     /** Internal data storage, do NOT modify! */
00136     typedef struct {
00137       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00138       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00139       float max_step_length; /**< 
00140       Maximum length of a footstep in m.
00141      */
00142       float max_step_height; /**< 
00143       Maxium height of a footstep cycloid in m.
00144      */
00145       float max_step_side; /**< 
00146       Maximum length of side step in m.
00147      */
00148       float max_step_turn; /**< 
00149       Maximum change around vertical axis on radians per footstep.
00150      */
00151       float zmp_offset_forward; /**< 
00152       Zero moment point offset in forward direction in m.
00153      */
00154       float zmp_offset_sideward; /**< 
00155       Zero moment point offset in sideward direction in m.
00156      */
00157       float l_hip_roll_compensation; /**< 
00158       Amplitude in degrees of backlash compensation for left hip roll.
00159       This is fitted to the Nao and is possibly not applicable to other robots.
00160      */
00161       float r_hip_roll_compensation; /**< 
00162       Amplitude in degrees of backlash compensation for left hip roll.
00163       This is fitted to the Nao and is possibly not applicable to other robots.
00164      */
00165       float hip_height; /**< 
00166       Height of hip during walk process.
00167       This is fitted to the Nao and is possibly not applicable to other robots.
00168      */
00169       float torso_sideward_orientation; /**< 
00170       Torso orientation in degrees in sideward direction during walking.
00171       This is fitted to the Nao and is possibly not applicable to other robots.
00172      */
00173     } SetWalkParamsMessage_data_t;
00174 #pragma pack(pop)
00175 
00176     SetWalkParamsMessage_data_t *data;
00177 
00178    public:
00179     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);
00180     SetWalkParamsMessage();
00181     ~SetWalkParamsMessage();
00182 
00183     SetWalkParamsMessage(const SetWalkParamsMessage *m);
00184     /* Methods */
00185     float max_step_length() const;
00186     void set_max_step_length(const float new_max_step_length);
00187     size_t maxlenof_max_step_length() const;
00188     float max_step_height() const;
00189     void set_max_step_height(const float new_max_step_height);
00190     size_t maxlenof_max_step_height() const;
00191     float max_step_side() const;
00192     void set_max_step_side(const float new_max_step_side);
00193     size_t maxlenof_max_step_side() const;
00194     float max_step_turn() const;
00195     void set_max_step_turn(const float new_max_step_turn);
00196     size_t maxlenof_max_step_turn() const;
00197     float zmp_offset_forward() const;
00198     void set_zmp_offset_forward(const float new_zmp_offset_forward);
00199     size_t maxlenof_zmp_offset_forward() const;
00200     float zmp_offset_sideward() const;
00201     void set_zmp_offset_sideward(const float new_zmp_offset_sideward);
00202     size_t maxlenof_zmp_offset_sideward() const;
00203     float l_hip_roll_compensation() const;
00204     void set_l_hip_roll_compensation(const float new_l_hip_roll_compensation);
00205     size_t maxlenof_l_hip_roll_compensation() const;
00206     float r_hip_roll_compensation() const;
00207     void set_r_hip_roll_compensation(const float new_r_hip_roll_compensation);
00208     size_t maxlenof_r_hip_roll_compensation() const;
00209     float hip_height() const;
00210     void set_hip_height(const float new_hip_height);
00211     size_t maxlenof_hip_height() const;
00212     float torso_sideward_orientation() const;
00213     void set_torso_sideward_orientation(const float new_torso_sideward_orientation);
00214     size_t maxlenof_torso_sideward_orientation() const;
00215     virtual Message * clone() const;
00216   };
00217 
00218   class SetWalkArmsParamsMessage : public Message
00219   {
00220    private:
00221 #pragma pack(push,4)
00222     /** Internal data storage, do NOT modify! */
00223     typedef struct {
00224       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00225       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00226       bool arms_enabled; /**< 
00227       If true the arms are controlled during walking for balancing.
00228      */
00229       float shoulder_pitch_median; /**< 
00230       Median in radians of the shoulder pitch during walking.
00231      */
00232       float shoulder_pitch_amplitude; /**< 
00233       Amplitude of the shoulder pitch movement during walking.
00234      */
00235       float elbow_roll_median; /**< 
00236       Median in radians of the elbow roll during walking.
00237      */
00238       float elbow_roll_amplitude; /**< 
00239       Amplitude of the elbow roll movement during walking.
00240      */
00241     } SetWalkArmsParamsMessage_data_t;
00242 #pragma pack(pop)
00243 
00244     SetWalkArmsParamsMessage_data_t *data;
00245 
00246    public:
00247     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);
00248     SetWalkArmsParamsMessage();
00249     ~SetWalkArmsParamsMessage();
00250 
00251     SetWalkArmsParamsMessage(const SetWalkArmsParamsMessage *m);
00252     /* Methods */
00253     bool is_arms_enabled() const;
00254     void set_arms_enabled(const bool new_arms_enabled);
00255     size_t maxlenof_arms_enabled() const;
00256     float shoulder_pitch_median() const;
00257     void set_shoulder_pitch_median(const float new_shoulder_pitch_median);
00258     size_t maxlenof_shoulder_pitch_median() const;
00259     float shoulder_pitch_amplitude() const;
00260     void set_shoulder_pitch_amplitude(const float new_shoulder_pitch_amplitude);
00261     size_t maxlenof_shoulder_pitch_amplitude() const;
00262     float elbow_roll_median() const;
00263     void set_elbow_roll_median(const float new_elbow_roll_median);
00264     size_t maxlenof_elbow_roll_median() const;
00265     float elbow_roll_amplitude() const;
00266     void set_elbow_roll_amplitude(const float new_elbow_roll_amplitude);
00267     size_t maxlenof_elbow_roll_amplitude() const;
00268     virtual Message * clone() const;
00269   };
00270 
00271   class StopMessage : public Message
00272   {
00273    private:
00274 #pragma pack(push,4)
00275     /** Internal data storage, do NOT modify! */
00276     typedef struct {
00277       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00278       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00279     } StopMessage_data_t;
00280 #pragma pack(pop)
00281 
00282     StopMessage_data_t *data;
00283 
00284    public:
00285     StopMessage();
00286     ~StopMessage();
00287 
00288     StopMessage(const StopMessage *m);
00289     /* Methods */
00290     virtual Message * clone() const;
00291   };
00292 
00293   class WalkStraightMessage : public Message
00294   {
00295    private:
00296 #pragma pack(push,4)
00297     /** Internal data storage, do NOT modify! */
00298     typedef struct {
00299       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00300       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00301       float distance; /**< Distance in m to walk. */
00302       uint32_t num_samples; /**< 
00303       Number of intermediate samples to use for walking.
00304      */
00305     } WalkStraightMessage_data_t;
00306 #pragma pack(pop)
00307 
00308     WalkStraightMessage_data_t *data;
00309 
00310    public:
00311     WalkStraightMessage(const float ini_distance, const uint32_t ini_num_samples);
00312     WalkStraightMessage();
00313     ~WalkStraightMessage();
00314 
00315     WalkStraightMessage(const WalkStraightMessage *m);
00316     /* Methods */
00317     float distance() const;
00318     void set_distance(const float new_distance);
00319     size_t maxlenof_distance() const;
00320     uint32_t num_samples() const;
00321     void set_num_samples(const uint32_t new_num_samples);
00322     size_t maxlenof_num_samples() const;
00323     virtual Message * clone() const;
00324   };
00325 
00326   class WalkSidewaysMessage : public Message
00327   {
00328    private:
00329 #pragma pack(push,4)
00330     /** Internal data storage, do NOT modify! */
00331     typedef struct {
00332       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00333       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00334       float distance; /**< Distance in m to walk. */
00335       uint32_t num_samples; /**< 
00336       Number of intermediate samples to use for strafing.
00337      */
00338     } WalkSidewaysMessage_data_t;
00339 #pragma pack(pop)
00340 
00341     WalkSidewaysMessage_data_t *data;
00342 
00343    public:
00344     WalkSidewaysMessage(const float ini_distance, const uint32_t ini_num_samples);
00345     WalkSidewaysMessage();
00346     ~WalkSidewaysMessage();
00347 
00348     WalkSidewaysMessage(const WalkSidewaysMessage *m);
00349     /* Methods */
00350     float distance() const;
00351     void set_distance(const float new_distance);
00352     size_t maxlenof_distance() const;
00353     uint32_t num_samples() const;
00354     void set_num_samples(const uint32_t new_num_samples);
00355     size_t maxlenof_num_samples() const;
00356     virtual Message * clone() const;
00357   };
00358 
00359   class WalkArcMessage : public Message
00360   {
00361    private:
00362 #pragma pack(push,4)
00363     /** Internal data storage, do NOT modify! */
00364     typedef struct {
00365       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00366       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00367       float angle; /**< Angle in radians to turn over the way. */
00368       float radius; /**< Radius in m of the circle in m. */
00369       uint32_t num_samples; /**< 
00370       Number of intermediate samples to use for walking.
00371      */
00372     } WalkArcMessage_data_t;
00373 #pragma pack(pop)
00374 
00375     WalkArcMessage_data_t *data;
00376 
00377    public:
00378     WalkArcMessage(const float ini_angle, const float ini_radius, const uint32_t ini_num_samples);
00379     WalkArcMessage();
00380     ~WalkArcMessage();
00381 
00382     WalkArcMessage(const WalkArcMessage *m);
00383     /* Methods */
00384     float angle() const;
00385     void set_angle(const float new_angle);
00386     size_t maxlenof_angle() const;
00387     float radius() const;
00388     void set_radius(const float new_radius);
00389     size_t maxlenof_radius() const;
00390     uint32_t num_samples() const;
00391     void set_num_samples(const uint32_t new_num_samples);
00392     size_t maxlenof_num_samples() const;
00393     virtual Message * clone() const;
00394   };
00395 
00396   class TurnMessage : public Message
00397   {
00398    private:
00399 #pragma pack(push,4)
00400     /** Internal data storage, do NOT modify! */
00401     typedef struct {
00402       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00403       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00404       float angle; /**< Angle in radians to turn. */
00405       uint32_t num_samples; /**< 
00406       Number of intermediate samples to use for turning.
00407      */
00408     } TurnMessage_data_t;
00409 #pragma pack(pop)
00410 
00411     TurnMessage_data_t *data;
00412 
00413    public:
00414     TurnMessage(const float ini_angle, const uint32_t ini_num_samples);
00415     TurnMessage();
00416     ~TurnMessage();
00417 
00418     TurnMessage(const TurnMessage *m);
00419     /* Methods */
00420     float angle() const;
00421     void set_angle(const float new_angle);
00422     size_t maxlenof_angle() const;
00423     uint32_t num_samples() const;
00424     void set_num_samples(const uint32_t new_num_samples);
00425     size_t maxlenof_num_samples() const;
00426     virtual Message * clone() const;
00427   };
00428 
00429   class KickMessage : public Message
00430   {
00431    private:
00432 #pragma pack(push,4)
00433     /** Internal data storage, do NOT modify! */
00434     typedef struct {
00435       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00436       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00437       LegEnum leg; /**< Leg to kick with */
00438       float strength; /**< Kick strength */
00439     } KickMessage_data_t;
00440 #pragma pack(pop)
00441 
00442     KickMessage_data_t *data;
00443 
00444    public:
00445     KickMessage(const LegEnum ini_leg, const float ini_strength);
00446     KickMessage();
00447     ~KickMessage();
00448 
00449     KickMessage(const KickMessage *m);
00450     /* Methods */
00451     LegEnum leg() const;
00452     void set_leg(const LegEnum new_leg);
00453     size_t maxlenof_leg() const;
00454     float strength() const;
00455     void set_strength(const float new_strength);
00456     size_t maxlenof_strength() const;
00457     virtual Message * clone() const;
00458   };
00459 
00460   class ParkMessage : public Message
00461   {
00462    private:
00463 #pragma pack(push,4)
00464     /** Internal data storage, do NOT modify! */
00465     typedef struct {
00466       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00467       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00468       float time_sec; /**< Time in seconds when to reach the position. */
00469     } ParkMessage_data_t;
00470 #pragma pack(pop)
00471 
00472     ParkMessage_data_t *data;
00473 
00474    public:
00475     ParkMessage(const float ini_time_sec);
00476     ParkMessage();
00477     ~ParkMessage();
00478 
00479     ParkMessage(const ParkMessage *m);
00480     /* Methods */
00481     float time_sec() const;
00482     void set_time_sec(const float new_time_sec);
00483     size_t maxlenof_time_sec() const;
00484     virtual Message * clone() const;
00485   };
00486 
00487   class GetUpMessage : public Message
00488   {
00489    private:
00490 #pragma pack(push,4)
00491     /** Internal data storage, do NOT modify! */
00492     typedef struct {
00493       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00494       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00495       float time_sec; /**< Time in seconds when to reach the position. */
00496     } GetUpMessage_data_t;
00497 #pragma pack(pop)
00498 
00499     GetUpMessage_data_t *data;
00500 
00501    public:
00502     GetUpMessage(const float ini_time_sec);
00503     GetUpMessage();
00504     ~GetUpMessage();
00505 
00506     GetUpMessage(const GetUpMessage *m);
00507     /* Methods */
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 StandupMessage : public Message
00515   {
00516    private:
00517 #pragma pack(push,4)
00518     /** Internal data storage, do NOT modify! */
00519     typedef struct {
00520       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00521       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00522       StandupEnum from_pos; /**< Position from where to standup. */
00523     } StandupMessage_data_t;
00524 #pragma pack(pop)
00525 
00526     StandupMessage_data_t *data;
00527 
00528    public:
00529     StandupMessage(const StandupEnum ini_from_pos);
00530     StandupMessage();
00531     ~StandupMessage();
00532 
00533     StandupMessage(const StandupMessage *m);
00534     /* Methods */
00535     StandupEnum from_pos() const;
00536     void set_from_pos(const StandupEnum new_from_pos);
00537     size_t maxlenof_from_pos() const;
00538     virtual Message * clone() const;
00539   };
00540 
00541   class YawPitchHeadMessage : public Message
00542   {
00543    private:
00544 #pragma pack(push,4)
00545     /** Internal data storage, do NOT modify! */
00546     typedef struct {
00547       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00548       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00549       float yaw; /**< Desired yaw (horizontal orientation). */
00550       float pitch; /**< Desired pitch (vertical orientation). */
00551       float time_sec; /**< Time in seconds when to reach the target. */
00552     } YawPitchHeadMessage_data_t;
00553 #pragma pack(pop)
00554 
00555     YawPitchHeadMessage_data_t *data;
00556 
00557    public:
00558     YawPitchHeadMessage(const float ini_yaw, const float ini_pitch, const float ini_time_sec);
00559     YawPitchHeadMessage();
00560     ~YawPitchHeadMessage();
00561 
00562     YawPitchHeadMessage(const YawPitchHeadMessage *m);
00563     /* Methods */
00564     float yaw() const;
00565     void set_yaw(const float new_yaw);
00566     size_t maxlenof_yaw() const;
00567     float pitch() const;
00568     void set_pitch(const float new_pitch);
00569     size_t maxlenof_pitch() const;
00570     float time_sec() const;
00571     void set_time_sec(const float new_time_sec);
00572     size_t maxlenof_time_sec() const;
00573     virtual Message * clone() const;
00574   };
00575 
00576   class SetStiffnessParamsMessage : public Message
00577   {
00578    private:
00579 #pragma pack(push,4)
00580     /** Internal data storage, do NOT modify! */
00581     typedef struct {
00582       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00583       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00584       StiffnessMotionPatternEnum motion_pattern; /**< the motion pattern to update */
00585       float head_yaw; /**< head_yaw */
00586       float head_pitch; /**< head_pitch */
00587       float l_shoulder_pitch; /**< l_shoulder_pitch */
00588       float l_shoulder_roll; /**< l_shoulder_roll */
00589       float l_elbow_yaw; /**< l_elbow_yaw */
00590       float l_elbow_roll; /**< l_elbow_roll */
00591       float l_hip_yaw_pitch; /**< l_hip_yaw_pitch */
00592       float l_hip_roll; /**< l_hip_roll */
00593       float l_hip_pitch; /**< l_hip_pitch */
00594       float l_knee_pitch; /**< l_knee_pitch */
00595       float l_ankle_pitch; /**< l_ankle_pitch */
00596       float l_ankle_roll; /**< l_ankle_roll */
00597       float r_hip_yaw_pitch; /**< r_hip_yaw_pitch */
00598       float r_hip_roll; /**< r_hip_roll */
00599       float r_hip_pitch; /**< r_hip_pitch */
00600       float r_knee_pitch; /**< r_knee_pitch */
00601       float r_ankle_pitch; /**< r_ankle_pitch */
00602       float r_ankle_roll; /**< r_ankle_roll */
00603       float r_shoulder_pitch; /**< r_shoulder_pitch */
00604       float r_shoulder_roll; /**< r_shoulder_roll */
00605       float r_elbow_yaw; /**< r_elbow_yaw */
00606       float r_elbow_roll; /**< r_elbow_roll */
00607     } SetStiffnessParamsMessage_data_t;
00608 #pragma pack(pop)
00609 
00610     SetStiffnessParamsMessage_data_t *data;
00611 
00612    public:
00613     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);
00614     SetStiffnessParamsMessage();
00615     ~SetStiffnessParamsMessage();
00616 
00617     SetStiffnessParamsMessage(const SetStiffnessParamsMessage *m);
00618     /* Methods */
00619     StiffnessMotionPatternEnum motion_pattern() const;
00620     void set_motion_pattern(const StiffnessMotionPatternEnum new_motion_pattern);
00621     size_t maxlenof_motion_pattern() const;
00622     float head_yaw() const;
00623     void set_head_yaw(const float new_head_yaw);
00624     size_t maxlenof_head_yaw() const;
00625     float head_pitch() const;
00626     void set_head_pitch(const float new_head_pitch);
00627     size_t maxlenof_head_pitch() const;
00628     float l_shoulder_pitch() const;
00629     void set_l_shoulder_pitch(const float new_l_shoulder_pitch);
00630     size_t maxlenof_l_shoulder_pitch() const;
00631     float l_shoulder_roll() const;
00632     void set_l_shoulder_roll(const float new_l_shoulder_roll);
00633     size_t maxlenof_l_shoulder_roll() const;
00634     float l_elbow_yaw() const;
00635     void set_l_elbow_yaw(const float new_l_elbow_yaw);
00636     size_t maxlenof_l_elbow_yaw() const;
00637     float l_elbow_roll() const;
00638     void set_l_elbow_roll(const float new_l_elbow_roll);
00639     size_t maxlenof_l_elbow_roll() const;
00640     float l_hip_yaw_pitch() const;
00641     void set_l_hip_yaw_pitch(const float new_l_hip_yaw_pitch);
00642     size_t maxlenof_l_hip_yaw_pitch() const;
00643     float l_hip_roll() const;
00644     void set_l_hip_roll(const float new_l_hip_roll);
00645     size_t maxlenof_l_hip_roll() const;
00646     float l_hip_pitch() const;
00647     void set_l_hip_pitch(const float new_l_hip_pitch);
00648     size_t maxlenof_l_hip_pitch() const;
00649     float l_knee_pitch() const;
00650     void set_l_knee_pitch(const float new_l_knee_pitch);
00651     size_t maxlenof_l_knee_pitch() const;
00652     float l_ankle_pitch() const;
00653     void set_l_ankle_pitch(const float new_l_ankle_pitch);
00654     size_t maxlenof_l_ankle_pitch() const;
00655     float l_ankle_roll() const;
00656     void set_l_ankle_roll(const float new_l_ankle_roll);
00657     size_t maxlenof_l_ankle_roll() const;
00658     float r_hip_yaw_pitch() const;
00659     void set_r_hip_yaw_pitch(const float new_r_hip_yaw_pitch);
00660     size_t maxlenof_r_hip_yaw_pitch() const;
00661     float r_hip_roll() const;
00662     void set_r_hip_roll(const float new_r_hip_roll);
00663     size_t maxlenof_r_hip_roll() const;
00664     float r_hip_pitch() const;
00665     void set_r_hip_pitch(const float new_r_hip_pitch);
00666     size_t maxlenof_r_hip_pitch() const;
00667     float r_knee_pitch() const;
00668     void set_r_knee_pitch(const float new_r_knee_pitch);
00669     size_t maxlenof_r_knee_pitch() const;
00670     float r_ankle_pitch() const;
00671     void set_r_ankle_pitch(const float new_r_ankle_pitch);
00672     size_t maxlenof_r_ankle_pitch() const;
00673     float r_ankle_roll() const;
00674     void set_r_ankle_roll(const float new_r_ankle_roll);
00675     size_t maxlenof_r_ankle_roll() const;
00676     float r_shoulder_pitch() const;
00677     void set_r_shoulder_pitch(const float new_r_shoulder_pitch);
00678     size_t maxlenof_r_shoulder_pitch() const;
00679     float r_shoulder_roll() const;
00680     void set_r_shoulder_roll(const float new_r_shoulder_roll);
00681     size_t maxlenof_r_shoulder_roll() const;
00682     float r_elbow_yaw() const;
00683     void set_r_elbow_yaw(const float new_r_elbow_yaw);
00684     size_t maxlenof_r_elbow_yaw() const;
00685     float r_elbow_roll() const;
00686     void set_r_elbow_roll(const float new_r_elbow_roll);
00687     size_t maxlenof_r_elbow_roll() const;
00688     virtual Message * clone() const;
00689   };
00690 
00691   virtual bool message_valid(const Message *message) const;
00692  private:
00693   HumanoidMotionInterface();
00694   ~HumanoidMotionInterface();
00695 
00696  public:
00697   /* Methods */
00698   bool is_moving() const;
00699   void set_moving(const bool new_moving);
00700   size_t maxlenof_moving() const;
00701   LegEnum supporting_leg() const;
00702   void set_supporting_leg(const LegEnum new_supporting_leg);
00703   size_t maxlenof_supporting_leg() const;
00704   float max_step_length() const;
00705   void set_max_step_length(const float new_max_step_length);
00706   size_t maxlenof_max_step_length() const;
00707   float max_step_height() const;
00708   void set_max_step_height(const float new_max_step_height);
00709   size_t maxlenof_max_step_height() const;
00710   float max_step_side() const;
00711   void set_max_step_side(const float new_max_step_side);
00712   size_t maxlenof_max_step_side() const;
00713   float max_step_turn() const;
00714   void set_max_step_turn(const float new_max_step_turn);
00715   size_t maxlenof_max_step_turn() const;
00716   float zmp_offset_forward() const;
00717   void set_zmp_offset_forward(const float new_zmp_offset_forward);
00718   size_t maxlenof_zmp_offset_forward() const;
00719   float zmp_offset_sideward() const;
00720   void set_zmp_offset_sideward(const float new_zmp_offset_sideward);
00721   size_t maxlenof_zmp_offset_sideward() const;
00722   float l_hip_roll_compensation() const;
00723   void set_l_hip_roll_compensation(const float new_l_hip_roll_compensation);
00724   size_t maxlenof_l_hip_roll_compensation() const;
00725   float r_hip_roll_compensation() const;
00726   void set_r_hip_roll_compensation(const float new_r_hip_roll_compensation);
00727   size_t maxlenof_r_hip_roll_compensation() const;
00728   float hip_height() const;
00729   void set_hip_height(const float new_hip_height);
00730   size_t maxlenof_hip_height() const;
00731   float torso_sideward_orientation() const;
00732   void set_torso_sideward_orientation(const float new_torso_sideward_orientation);
00733   size_t maxlenof_torso_sideward_orientation() const;
00734   bool is_arms_enabled() const;
00735   void set_arms_enabled(const bool new_arms_enabled);
00736   size_t maxlenof_arms_enabled() const;
00737   float shoulder_pitch_median() const;
00738   void set_shoulder_pitch_median(const float new_shoulder_pitch_median);
00739   size_t maxlenof_shoulder_pitch_median() const;
00740   float shoulder_pitch_amplitude() const;
00741   void set_shoulder_pitch_amplitude(const float new_shoulder_pitch_amplitude);
00742   size_t maxlenof_shoulder_pitch_amplitude() const;
00743   float elbow_roll_median() const;
00744   void set_elbow_roll_median(const float new_elbow_roll_median);
00745   size_t maxlenof_elbow_roll_median() const;
00746   float elbow_roll_amplitude() const;
00747   void set_elbow_roll_amplitude(const float new_elbow_roll_amplitude);
00748   size_t maxlenof_elbow_roll_amplitude() const;
00749   uint32_t msgid() const;
00750   void set_msgid(const uint32_t new_msgid);
00751   size_t maxlenof_msgid() const;
00752   virtual Message * create_message(const char *type) const;
00753 
00754   virtual void copy_values(const Interface *other);
00755   virtual const char * enum_tostring(const char *enumtype, int val) const;
00756 
00757 };
00758 
00759 } // end namespace fawkes
00760 
00761 #endif