Fawkes API  Fawkes Development Version
NaoJointPositionInterface.h
00001 
00002 /***************************************************************************
00003  *  NaoJointPositionInterface.h - Fawkes BlackBoard Interface - NaoJointPositionInterface
00004  *
00005  *  Templated created:   Thu Oct 12 10:49:19 2006
00006  *  Copyright  2008-2011  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_NAOJOINTPOSITIONINTERFACE_H_
00025 #define __INTERFACES_NAOJOINTPOSITIONINTERFACE_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 NaoJointPositionInterface : public Interface
00034 {
00035  /// @cond INTERNALS
00036  INTERFACE_MGMT_FRIENDS(NaoJointPositionInterface)
00037  /// @endcond
00038  public:
00039   /* constants */
00040   static const uint32_t SERVO_head_yaw;
00041   static const uint32_t SERVO_head_pitch;
00042   static const uint32_t SERVO_l_shoulder_pitch;
00043   static const uint32_t SERVO_l_shoulder_roll;
00044   static const uint32_t SERVO_l_elbow_yaw;
00045   static const uint32_t SERVO_l_elbow_roll;
00046   static const uint32_t SERVO_l_wrist_yaw;
00047   static const uint32_t SERVO_l_hand;
00048   static const uint32_t SERVO_l_hip_yaw_pitch;
00049   static const uint32_t SERVO_l_hip_roll;
00050   static const uint32_t SERVO_l_hip_pitch;
00051   static const uint32_t SERVO_l_knee_pitch;
00052   static const uint32_t SERVO_l_ankle_pitch;
00053   static const uint32_t SERVO_l_ankle_roll;
00054   static const uint32_t SERVO_r_shoulder_pitch;
00055   static const uint32_t SERVO_r_shoulder_roll;
00056   static const uint32_t SERVO_r_elbow_yaw;
00057   static const uint32_t SERVO_r_elbow_roll;
00058   static const uint32_t SERVO_r_wrist_yaw;
00059   static const uint32_t SERVO_r_hand;
00060   static const uint32_t SERVO_r_hip_yaw_pitch;
00061   static const uint32_t SERVO_r_hip_roll;
00062   static const uint32_t SERVO_r_hip_pitch;
00063   static const uint32_t SERVO_r_knee_pitch;
00064   static const uint32_t SERVO_r_ankle_pitch;
00065   static const uint32_t SERVO_r_ankle_roll;
00066   static const uint32_t SERVO_min;
00067   static const uint32_t SERVO_max;
00068 
00069   /** 
00070         Enumeration describing the actual version of the robot that's being
00071         used.
00072        */
00073   typedef enum {
00074     ROBOTYPE_ACADEMIC /**< 
00075         Academic version with 25 DoF and touch sensors.
00076        */,
00077     ROBOTYPE_ROBOCUP /**< 
00078         RoboCup version with 21 DoF.
00079        */
00080   } RobotType;
00081   const char * tostring_RobotType(RobotType value) const;
00082 
00083  private:
00084 #pragma pack(push,4)
00085   /** Internal data storage, do NOT modify! */
00086   typedef struct {
00087     int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00088     int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00089     int32_t robot_type; /**< Robot type. */
00090     uint8_t robot_version[4]; /**< 
00091       Robot version. Fields are in ascending array index major, minor, micro and
00092       patch level. Currently only the first two are used by Aldebaran, but due to
00093       struct alignment we add two extra bytes.
00094      */
00095     float head_yaw; /**< Head yaw */
00096     float head_pitch; /**< Head pitch */
00097     float l_shoulder_pitch; /**< Left shoulder pitch */
00098     float l_shoulder_roll; /**< Left shoulder roll */
00099     float l_elbow_yaw; /**< Left elbow yaw */
00100     float l_elbow_roll; /**< Left elbow roll */
00101     float l_wrist_yaw; /**< Left wrist yaw */
00102     float l_hand; /**< Left hand */
00103     float l_hip_yaw_pitch; /**< Left hip yaw pitch */
00104     float l_hip_roll; /**< Left hip roll */
00105     float l_hip_pitch; /**< Left hip pitch */
00106     float l_knee_pitch; /**< Left knee pitch */
00107     float l_ankle_pitch; /**< Left ankle pitch */
00108     float l_ankle_roll; /**< Left ankle roll */
00109     float r_shoulder_pitch; /**< Right shoulder pitch */
00110     float r_shoulder_roll; /**< Right shoulder roll */
00111     float r_elbow_yaw; /**< Right elbow yaw */
00112     float r_elbow_roll; /**< Right elbow roll */
00113     float r_wrist_yaw; /**< Right wrist yaw */
00114     float r_hand; /**< Right hand */
00115     float r_hip_yaw_pitch; /**< Right hip yaw pitch */
00116     float r_hip_roll; /**< Right hip roll */
00117     float r_hip_pitch; /**< Right hip pitch */
00118     float r_knee_pitch; /**< Right knee pitch */
00119     float r_ankle_pitch; /**< Right ankle pitch */
00120     float r_ankle_roll; /**< Right ankle roll */
00121     int32_t time; /**< 
00122       Current reference time in ms. For real hardware this is the DCM time.
00123       Times in messages are always offsets to the current time and the current
00124       time is added before executing the command.
00125      */
00126   } NaoJointPositionInterface_data_t;
00127 #pragma pack(pop)
00128 
00129   NaoJointPositionInterface_data_t *data;
00130 
00131  public:
00132   /* messages */
00133   class SetServoMessage : public Message
00134   {
00135    private:
00136 #pragma pack(push,4)
00137     /** Internal data storage, do NOT modify! */
00138     typedef struct {
00139       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00140       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00141       uint32_t servo; /**< A concatenated list of SERVO_* constants to
00142       define the servos that should execute the movement. The list shall consist of
00143       binary or'ed SERVO_* constants. */
00144       float value; /**< Servo value to set for servos. */
00145       int32_t time; /**< 
00146       Current reference time in ms. For real hardware this is the DCM time.
00147       Times in messages are always offsets to the current time and the current
00148       time is added before executing the command.
00149      */
00150     } SetServoMessage_data_t;
00151 #pragma pack(pop)
00152 
00153     SetServoMessage_data_t *data;
00154 
00155    public:
00156     SetServoMessage(const uint32_t ini_servo, const float ini_value, const int32_t ini_time);
00157     SetServoMessage();
00158     ~SetServoMessage();
00159 
00160     SetServoMessage(const SetServoMessage *m);
00161     /* Methods */
00162     uint32_t servo() const;
00163     void set_servo(const uint32_t new_servo);
00164     size_t maxlenof_servo() const;
00165     float value() const;
00166     void set_value(const float new_value);
00167     size_t maxlenof_value() const;
00168     int32_t time() const;
00169     void set_time(const int32_t new_time);
00170     size_t maxlenof_time() const;
00171     virtual Message * clone() const;
00172   };
00173 
00174   class SetServosMessage : public Message
00175   {
00176    private:
00177 #pragma pack(push,4)
00178     /** Internal data storage, do NOT modify! */
00179     typedef struct {
00180       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00181       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00182       float head_yaw; /**< Head yaw */
00183       float head_pitch; /**< Head pitch */
00184       float l_shoulder_pitch; /**< Left shoulder pitch */
00185       float l_shoulder_roll; /**< Left shoulder roll */
00186       float l_elbow_yaw; /**< Left elbow yaw */
00187       float l_elbow_roll; /**< Left elbow roll */
00188       float l_hip_yaw_pitch; /**< Left hip yaw pitch */
00189       float l_hip_roll; /**< Left hip roll */
00190       float l_hip_pitch; /**< Left hip pitch */
00191       float l_knee_pitch; /**< Left knee pitch */
00192       float l_ankle_pitch; /**< Left ankle pitch */
00193       float l_ankle_roll; /**< Left ankle roll */
00194       float l_wrist_yaw; /**< Left wrist yaw */
00195       float l_hand; /**< Left hand */
00196       float r_shoulder_pitch; /**< Right shoulder pitch */
00197       float r_shoulder_roll; /**< Right shoulder roll */
00198       float r_elbow_yaw; /**< Right elbow yaw */
00199       float r_elbow_roll; /**< Right elbow roll */
00200       float r_wrist_yaw; /**< Right wrist yaw */
00201       float r_hand; /**< Right hand */
00202       float r_hip_yaw_pitch; /**< Right hip yaw pitch */
00203       float r_hip_roll; /**< Right hip roll */
00204       float r_hip_pitch; /**< Right hip pitch */
00205       float r_knee_pitch; /**< Right knee pitch */
00206       float r_ankle_pitch; /**< Right ankle pitch */
00207       float r_ankle_roll; /**< Right ankle roll */
00208       int32_t time; /**< 
00209       Current reference time in ms. For real hardware this is the DCM time.
00210       Times in messages are always offsets to the current time and the current
00211       time is added before executing the command.
00212      */
00213     } SetServosMessage_data_t;
00214 #pragma pack(pop)
00215 
00216     SetServosMessage_data_t *data;
00217 
00218    public:
00219     SetServosMessage(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_l_wrist_yaw, const float ini_l_hand, const float ini_r_shoulder_pitch, const float ini_r_shoulder_roll, const float ini_r_elbow_yaw, const float ini_r_elbow_roll, const float ini_r_wrist_yaw, const float ini_r_hand, 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 int32_t ini_time);
00220     SetServosMessage();
00221     ~SetServosMessage();
00222 
00223     SetServosMessage(const SetServosMessage *m);
00224     /* Methods */
00225     float head_yaw() const;
00226     void set_head_yaw(const float new_head_yaw);
00227     size_t maxlenof_head_yaw() const;
00228     float head_pitch() const;
00229     void set_head_pitch(const float new_head_pitch);
00230     size_t maxlenof_head_pitch() const;
00231     float l_shoulder_pitch() const;
00232     void set_l_shoulder_pitch(const float new_l_shoulder_pitch);
00233     size_t maxlenof_l_shoulder_pitch() const;
00234     float l_shoulder_roll() const;
00235     void set_l_shoulder_roll(const float new_l_shoulder_roll);
00236     size_t maxlenof_l_shoulder_roll() const;
00237     float l_elbow_yaw() const;
00238     void set_l_elbow_yaw(const float new_l_elbow_yaw);
00239     size_t maxlenof_l_elbow_yaw() const;
00240     float l_elbow_roll() const;
00241     void set_l_elbow_roll(const float new_l_elbow_roll);
00242     size_t maxlenof_l_elbow_roll() const;
00243     float l_hip_yaw_pitch() const;
00244     void set_l_hip_yaw_pitch(const float new_l_hip_yaw_pitch);
00245     size_t maxlenof_l_hip_yaw_pitch() const;
00246     float l_hip_roll() const;
00247     void set_l_hip_roll(const float new_l_hip_roll);
00248     size_t maxlenof_l_hip_roll() const;
00249     float l_hip_pitch() const;
00250     void set_l_hip_pitch(const float new_l_hip_pitch);
00251     size_t maxlenof_l_hip_pitch() const;
00252     float l_knee_pitch() const;
00253     void set_l_knee_pitch(const float new_l_knee_pitch);
00254     size_t maxlenof_l_knee_pitch() const;
00255     float l_ankle_pitch() const;
00256     void set_l_ankle_pitch(const float new_l_ankle_pitch);
00257     size_t maxlenof_l_ankle_pitch() const;
00258     float l_ankle_roll() const;
00259     void set_l_ankle_roll(const float new_l_ankle_roll);
00260     size_t maxlenof_l_ankle_roll() const;
00261     float l_wrist_yaw() const;
00262     void set_l_wrist_yaw(const float new_l_wrist_yaw);
00263     size_t maxlenof_l_wrist_yaw() const;
00264     float l_hand() const;
00265     void set_l_hand(const float new_l_hand);
00266     size_t maxlenof_l_hand() const;
00267     float r_shoulder_pitch() const;
00268     void set_r_shoulder_pitch(const float new_r_shoulder_pitch);
00269     size_t maxlenof_r_shoulder_pitch() const;
00270     float r_shoulder_roll() const;
00271     void set_r_shoulder_roll(const float new_r_shoulder_roll);
00272     size_t maxlenof_r_shoulder_roll() const;
00273     float r_elbow_yaw() const;
00274     void set_r_elbow_yaw(const float new_r_elbow_yaw);
00275     size_t maxlenof_r_elbow_yaw() const;
00276     float r_elbow_roll() const;
00277     void set_r_elbow_roll(const float new_r_elbow_roll);
00278     size_t maxlenof_r_elbow_roll() const;
00279     float r_wrist_yaw() const;
00280     void set_r_wrist_yaw(const float new_r_wrist_yaw);
00281     size_t maxlenof_r_wrist_yaw() const;
00282     float r_hand() const;
00283     void set_r_hand(const float new_r_hand);
00284     size_t maxlenof_r_hand() const;
00285     float r_hip_yaw_pitch() const;
00286     void set_r_hip_yaw_pitch(const float new_r_hip_yaw_pitch);
00287     size_t maxlenof_r_hip_yaw_pitch() const;
00288     float r_hip_roll() const;
00289     void set_r_hip_roll(const float new_r_hip_roll);
00290     size_t maxlenof_r_hip_roll() const;
00291     float r_hip_pitch() const;
00292     void set_r_hip_pitch(const float new_r_hip_pitch);
00293     size_t maxlenof_r_hip_pitch() const;
00294     float r_knee_pitch() const;
00295     void set_r_knee_pitch(const float new_r_knee_pitch);
00296     size_t maxlenof_r_knee_pitch() const;
00297     float r_ankle_pitch() const;
00298     void set_r_ankle_pitch(const float new_r_ankle_pitch);
00299     size_t maxlenof_r_ankle_pitch() const;
00300     float r_ankle_roll() const;
00301     void set_r_ankle_roll(const float new_r_ankle_roll);
00302     size_t maxlenof_r_ankle_roll() const;
00303     int32_t time() const;
00304     void set_time(const int32_t new_time);
00305     size_t maxlenof_time() const;
00306     virtual Message * clone() const;
00307   };
00308 
00309   class MoveServoMessage : public Message
00310   {
00311    private:
00312 #pragma pack(push,4)
00313     /** Internal data storage, do NOT modify! */
00314     typedef struct {
00315       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00316       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00317       uint32_t servo; /**< 
00318       A concatenated list of SERVO_* constants to define the servos
00319       that should execute the movement. The list shall consist of
00320       binary or'ed SERVO_* constants.
00321      */
00322       float value; /**< Servo value to set for servos. */
00323       float speed; /**< 
00324       Fraction of max speed in range [0.0..1.0].
00325      */
00326     } MoveServoMessage_data_t;
00327 #pragma pack(pop)
00328 
00329     MoveServoMessage_data_t *data;
00330 
00331    public:
00332     MoveServoMessage(const uint32_t ini_servo, const float ini_value, const float ini_speed);
00333     MoveServoMessage();
00334     ~MoveServoMessage();
00335 
00336     MoveServoMessage(const MoveServoMessage *m);
00337     /* Methods */
00338     uint32_t servo() const;
00339     void set_servo(const uint32_t new_servo);
00340     size_t maxlenof_servo() const;
00341     float value() const;
00342     void set_value(const float new_value);
00343     size_t maxlenof_value() const;
00344     float speed() const;
00345     void set_speed(const float new_speed);
00346     size_t maxlenof_speed() const;
00347     virtual Message * clone() const;
00348   };
00349 
00350   class MoveServosMessage : public Message
00351   {
00352    private:
00353 #pragma pack(push,4)
00354     /** Internal data storage, do NOT modify! */
00355     typedef struct {
00356       int64_t timestamp_sec;  /**< Interface Unix timestamp, seconds */
00357       int64_t timestamp_usec; /**< Interface Unix timestamp, micro-seconds */
00358       float speed; /**< 
00359       Fraction of max speed in range [0.0..1.0].
00360      */
00361       float head_yaw; /**< Head yaw */
00362       float head_pitch; /**< Head pitch */
00363       float l_shoulder_pitch; /**< Left shoulder pitch */
00364       float l_shoulder_roll; /**< Left shoulder roll */
00365       float l_elbow_yaw; /**< Left elbow yaw */
00366       float l_elbow_roll; /**< Left elbow roll */
00367       float l_wrist_yaw; /**< Left wrist yaw */
00368       float l_hand; /**< Left hand */
00369       float l_hip_yaw_pitch; /**< Left hip yaw pitch */
00370       float l_hip_roll; /**< Left hip roll */
00371       float l_hip_pitch; /**< Left hip pitch */
00372       float l_knee_pitch; /**< Left knee pitch */
00373       float l_ankle_pitch; /**< Left ankle pitch */
00374       float l_ankle_roll; /**< Left ankle roll */
00375       float r_shoulder_pitch; /**< Right shoulder pitch */
00376       float r_shoulder_roll; /**< Right shoulder roll */
00377       float r_elbow_yaw; /**< Right elbow yaw */
00378       float r_elbow_roll; /**< Right elbow roll */
00379       float r_wrist_yaw; /**< Right wrist yaw */
00380       float r_hand; /**< Right hand */
00381       float r_hip_yaw_pitch; /**< Right hip yaw pitch */
00382       float r_hip_roll; /**< Right hip roll */
00383       float r_hip_pitch; /**< Right hip pitch */
00384       float r_knee_pitch; /**< Right knee pitch */
00385       float r_ankle_pitch; /**< Right ankle pitch */
00386       float r_ankle_roll; /**< Right ankle roll */
00387     } MoveServosMessage_data_t;
00388 #pragma pack(pop)
00389 
00390     MoveServosMessage_data_t *data;
00391 
00392    public:
00393     MoveServosMessage(const float ini_speed, 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_wrist_yaw, const float ini_l_hand, 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_shoulder_pitch, const float ini_r_shoulder_roll, const float ini_r_elbow_yaw, const float ini_r_elbow_roll, const float ini_r_wrist_yaw, const float ini_r_hand, 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);
00394     MoveServosMessage();
00395     ~MoveServosMessage();
00396 
00397     MoveServosMessage(const MoveServosMessage *m);
00398     /* Methods */
00399     float speed() const;
00400     void set_speed(const float new_speed);
00401     size_t maxlenof_speed() const;
00402     float head_yaw() const;
00403     void set_head_yaw(const float new_head_yaw);
00404     size_t maxlenof_head_yaw() const;
00405     float head_pitch() const;
00406     void set_head_pitch(const float new_head_pitch);
00407     size_t maxlenof_head_pitch() const;
00408     float l_shoulder_pitch() const;
00409     void set_l_shoulder_pitch(const float new_l_shoulder_pitch);
00410     size_t maxlenof_l_shoulder_pitch() const;
00411     float l_shoulder_roll() const;
00412     void set_l_shoulder_roll(const float new_l_shoulder_roll);
00413     size_t maxlenof_l_shoulder_roll() const;
00414     float l_elbow_yaw() const;
00415     void set_l_elbow_yaw(const float new_l_elbow_yaw);
00416     size_t maxlenof_l_elbow_yaw() const;
00417     float l_elbow_roll() const;
00418     void set_l_elbow_roll(const float new_l_elbow_roll);
00419     size_t maxlenof_l_elbow_roll() const;
00420     float l_wrist_yaw() const;
00421     void set_l_wrist_yaw(const float new_l_wrist_yaw);
00422     size_t maxlenof_l_wrist_yaw() const;
00423     float l_hand() const;
00424     void set_l_hand(const float new_l_hand);
00425     size_t maxlenof_l_hand() const;
00426     float l_hip_yaw_pitch() const;
00427     void set_l_hip_yaw_pitch(const float new_l_hip_yaw_pitch);
00428     size_t maxlenof_l_hip_yaw_pitch() const;
00429     float l_hip_roll() const;
00430     void set_l_hip_roll(const float new_l_hip_roll);
00431     size_t maxlenof_l_hip_roll() const;
00432     float l_hip_pitch() const;
00433     void set_l_hip_pitch(const float new_l_hip_pitch);
00434     size_t maxlenof_l_hip_pitch() const;
00435     float l_knee_pitch() const;
00436     void set_l_knee_pitch(const float new_l_knee_pitch);
00437     size_t maxlenof_l_knee_pitch() const;
00438     float l_ankle_pitch() const;
00439     void set_l_ankle_pitch(const float new_l_ankle_pitch);
00440     size_t maxlenof_l_ankle_pitch() const;
00441     float l_ankle_roll() const;
00442     void set_l_ankle_roll(const float new_l_ankle_roll);
00443     size_t maxlenof_l_ankle_roll() const;
00444     float r_shoulder_pitch() const;
00445     void set_r_shoulder_pitch(const float new_r_shoulder_pitch);
00446     size_t maxlenof_r_shoulder_pitch() const;
00447     float r_shoulder_roll() const;
00448     void set_r_shoulder_roll(const float new_r_shoulder_roll);
00449     size_t maxlenof_r_shoulder_roll() const;
00450     float r_elbow_yaw() const;
00451     void set_r_elbow_yaw(const float new_r_elbow_yaw);
00452     size_t maxlenof_r_elbow_yaw() const;
00453     float r_elbow_roll() const;
00454     void set_r_elbow_roll(const float new_r_elbow_roll);
00455     size_t maxlenof_r_elbow_roll() const;
00456     float r_wrist_yaw() const;
00457     void set_r_wrist_yaw(const float new_r_wrist_yaw);
00458     size_t maxlenof_r_wrist_yaw() const;
00459     float r_hand() const;
00460     void set_r_hand(const float new_r_hand);
00461     size_t maxlenof_r_hand() const;
00462     float r_hip_yaw_pitch() const;
00463     void set_r_hip_yaw_pitch(const float new_r_hip_yaw_pitch);
00464     size_t maxlenof_r_hip_yaw_pitch() const;
00465     float r_hip_roll() const;
00466     void set_r_hip_roll(const float new_r_hip_roll);
00467     size_t maxlenof_r_hip_roll() const;
00468     float r_hip_pitch() const;
00469     void set_r_hip_pitch(const float new_r_hip_pitch);
00470     size_t maxlenof_r_hip_pitch() const;
00471     float r_knee_pitch() const;
00472     void set_r_knee_pitch(const float new_r_knee_pitch);
00473     size_t maxlenof_r_knee_pitch() const;
00474     float r_ankle_pitch() const;
00475     void set_r_ankle_pitch(const float new_r_ankle_pitch);
00476     size_t maxlenof_r_ankle_pitch() const;
00477     float r_ankle_roll() const;
00478     void set_r_ankle_roll(const float new_r_ankle_roll);
00479     size_t maxlenof_r_ankle_roll() const;
00480     virtual Message * clone() const;
00481   };
00482 
00483   virtual bool message_valid(const Message *message) const;
00484  private:
00485   NaoJointPositionInterface();
00486   ~NaoJointPositionInterface();
00487 
00488  public:
00489   /* Methods */
00490   RobotType robot_type() const;
00491   void set_robot_type(const RobotType new_robot_type);
00492   size_t maxlenof_robot_type() const;
00493   uint8_t * robot_version() const;
00494   uint8_t robot_version(unsigned int index) const;
00495   void set_robot_version(unsigned int index, const uint8_t new_robot_version);
00496   void set_robot_version(const uint8_t * new_robot_version);
00497   size_t maxlenof_robot_version() const;
00498   float head_yaw() const;
00499   void set_head_yaw(const float new_head_yaw);
00500   size_t maxlenof_head_yaw() const;
00501   float head_pitch() const;
00502   void set_head_pitch(const float new_head_pitch);
00503   size_t maxlenof_head_pitch() const;
00504   float l_shoulder_pitch() const;
00505   void set_l_shoulder_pitch(const float new_l_shoulder_pitch);
00506   size_t maxlenof_l_shoulder_pitch() const;
00507   float l_shoulder_roll() const;
00508   void set_l_shoulder_roll(const float new_l_shoulder_roll);
00509   size_t maxlenof_l_shoulder_roll() const;
00510   float l_elbow_yaw() const;
00511   void set_l_elbow_yaw(const float new_l_elbow_yaw);
00512   size_t maxlenof_l_elbow_yaw() const;
00513   float l_elbow_roll() const;
00514   void set_l_elbow_roll(const float new_l_elbow_roll);
00515   size_t maxlenof_l_elbow_roll() const;
00516   float l_wrist_yaw() const;
00517   void set_l_wrist_yaw(const float new_l_wrist_yaw);
00518   size_t maxlenof_l_wrist_yaw() const;
00519   float l_hand() const;
00520   void set_l_hand(const float new_l_hand);
00521   size_t maxlenof_l_hand() const;
00522   float l_hip_yaw_pitch() const;
00523   void set_l_hip_yaw_pitch(const float new_l_hip_yaw_pitch);
00524   size_t maxlenof_l_hip_yaw_pitch() const;
00525   float l_hip_roll() const;
00526   void set_l_hip_roll(const float new_l_hip_roll);
00527   size_t maxlenof_l_hip_roll() const;
00528   float l_hip_pitch() const;
00529   void set_l_hip_pitch(const float new_l_hip_pitch);
00530   size_t maxlenof_l_hip_pitch() const;
00531   float l_knee_pitch() const;
00532   void set_l_knee_pitch(const float new_l_knee_pitch);
00533   size_t maxlenof_l_knee_pitch() const;
00534   float l_ankle_pitch() const;
00535   void set_l_ankle_pitch(const float new_l_ankle_pitch);
00536   size_t maxlenof_l_ankle_pitch() const;
00537   float l_ankle_roll() const;
00538   void set_l_ankle_roll(const float new_l_ankle_roll);
00539   size_t maxlenof_l_ankle_roll() const;
00540   float r_shoulder_pitch() const;
00541   void set_r_shoulder_pitch(const float new_r_shoulder_pitch);
00542   size_t maxlenof_r_shoulder_pitch() const;
00543   float r_shoulder_roll() const;
00544   void set_r_shoulder_roll(const float new_r_shoulder_roll);
00545   size_t maxlenof_r_shoulder_roll() const;
00546   float r_elbow_yaw() const;
00547   void set_r_elbow_yaw(const float new_r_elbow_yaw);
00548   size_t maxlenof_r_elbow_yaw() const;
00549   float r_elbow_roll() const;
00550   void set_r_elbow_roll(const float new_r_elbow_roll);
00551   size_t maxlenof_r_elbow_roll() const;
00552   float r_wrist_yaw() const;
00553   void set_r_wrist_yaw(const float new_r_wrist_yaw);
00554   size_t maxlenof_r_wrist_yaw() const;
00555   float r_hand() const;
00556   void set_r_hand(const float new_r_hand);
00557   size_t maxlenof_r_hand() const;
00558   float r_hip_yaw_pitch() const;
00559   void set_r_hip_yaw_pitch(const float new_r_hip_yaw_pitch);
00560   size_t maxlenof_r_hip_yaw_pitch() const;
00561   float r_hip_roll() const;
00562   void set_r_hip_roll(const float new_r_hip_roll);
00563   size_t maxlenof_r_hip_roll() const;
00564   float r_hip_pitch() const;
00565   void set_r_hip_pitch(const float new_r_hip_pitch);
00566   size_t maxlenof_r_hip_pitch() const;
00567   float r_knee_pitch() const;
00568   void set_r_knee_pitch(const float new_r_knee_pitch);
00569   size_t maxlenof_r_knee_pitch() const;
00570   float r_ankle_pitch() const;
00571   void set_r_ankle_pitch(const float new_r_ankle_pitch);
00572   size_t maxlenof_r_ankle_pitch() const;
00573   float r_ankle_roll() const;
00574   void set_r_ankle_roll(const float new_r_ankle_roll);
00575   size_t maxlenof_r_ankle_roll() const;
00576   int32_t time() const;
00577   void set_time(const int32_t new_time);
00578   size_t maxlenof_time() const;
00579   virtual Message * create_message(const char *type) const;
00580 
00581   virtual void copy_values(const Interface *other);
00582   virtual const char * enum_tostring(const char *enumtype, int val) const;
00583 
00584 };
00585 
00586 } // end namespace fawkes
00587 
00588 #endif