YouBotJointParameter.hpp

Go to the documentation of this file.
00001 #ifndef YOUBOT_YOUBOTJOINTPARAMETER_H
00002 #define YOUBOT_YOUBOTJOINTPARAMETER_H
00003 
00004 /****************************************************************
00005  *
00006  * Copyright (c) 2011
00007  * All rights reserved.
00008  *
00009  * Hochschule Bonn-Rhein-Sieg
00010  * University of Applied Sciences
00011  * Computer Science Department
00012  *
00013  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00014  *
00015  * Author:
00016  * Jan Paulus, Nico Hochgeschwender, Michael Reckhaus, Azamat Shakhimardanov
00017  * Supervised by:
00018  * Gerhard K. Kraetzschmar
00019  *
00020  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00021  *
00022  * This sofware is published under a dual-license: GNU Lesser General Public 
00023  * License LGPL 2.1 and BSD license. The dual-license implies that users of this
00024  * code may choose which terms they prefer.
00025  *
00026  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00027  *
00028  * Redistribution and use in source and binary forms, with or without
00029  * modification, are permitted provided that the following conditions are met:
00030  *
00031  *     * Redistributions of source code must retain the above copyright
00032  *       notice, this list of conditions and the following disclaimer.
00033  *     * Redistributions in binary form must reproduce the above copyright
00034  *       notice, this list of conditions and the following disclaimer in the
00035  *       documentation and/or other materials provided with the distribution.
00036  *     * Neither the name of the Hochschule Bonn-Rhein-Sieg nor the names of its
00037  *       contributors may be used to endorse or promote products derived from
00038  *       this software without specific prior written permission.
00039  *
00040  * This program is free software: you can redistribute it and/or modify
00041  * it under the terms of the GNU Lesser General Public License LGPL as
00042  * published by the Free Software Foundation, either version 2.1 of the
00043  * License, or (at your option) any later version or the BSD license.
00044  *
00045  * This program is distributed in the hope that it will be useful,
00046  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00047  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00048  * GNU Lesser General Public License LGPL and the BSD license for more details.
00049  *
00050  * You should have received a copy of the GNU Lesser General Public
00051  * License LGPL and BSD license along with this program.
00052  *
00053  ****************************************************************/
00054 #include <vector>
00055 #include <sstream>
00056 #include <boost/limits.hpp>
00057 #include "generic/Logger.hpp"
00058 #include "generic/Units.hpp"
00059 #include "generic/Time.hpp"
00060 #include "generic/Exceptions.hpp"
00061 #include "generic-joint/JointParameter.hpp"
00062 #include "youbot/YouBotJointParameterReadOnly.hpp"
00063 #include "youbot/ProtocolDefinitions.hpp"
00064 #include "youbot/YouBotSlaveMsg.hpp"
00065 #include "youbot/YouBotSlaveMailboxMsg.hpp"
00066 #include "youbot/YouBotJointStorage.hpp"
00067 namespace youbot {
00068 
00069 enum CalibrationDirection {
00070   POSITIV,
00071   NEGATIV
00072 
00073 };
00074 ///////////////////////////////////////////////////////////////////////////////
00075 /// abstract youBot API joint parameter
00076 ///////////////////////////////////////////////////////////////////////////////
00077 class YouBotApiJointParameter : public JointParameter {
00078 friend class YouBotJoint;
00079   protected:
00080     YouBotApiJointParameter();
00081 
00082 
00083   public:
00084     virtual ~YouBotApiJointParameter();
00085 
00086     virtual void toString(std::string& value) = 0;
00087 
00088 
00089   protected:
00090     virtual void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const = 0;
00091 
00092     virtual void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) = 0;
00093 
00094     virtual std::string getName() const = 0;
00095 
00096     virtual ParameterType getType() const = 0;
00097 
00098     std::string name;
00099 
00100     ParameterType parameterType;
00101 
00102 };
00103 ///////////////////////////////////////////////////////////////////////////////
00104 /// abstract youBot joint parameter
00105 ///////////////////////////////////////////////////////////////////////////////
00106 class YouBotJointParameter : public YouBotJointParameterReadOnly {
00107 friend class YouBotJoint;
00108   protected:
00109     YouBotJointParameter();
00110 
00111 
00112   public:
00113     virtual ~YouBotJointParameter();
00114 
00115     virtual void toString(std::string& value) = 0;
00116 
00117 
00118   protected:
00119     virtual void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const = 0;
00120 
00121     virtual void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) = 0;
00122 
00123     virtual std::string getName() const = 0;
00124 
00125     virtual ParameterType getType() const = 0;
00126 
00127     std::string name;
00128 
00129     ParameterType parameterType;
00130 
00131 };
00132 ///////////////////////////////////////////////////////////////////////////////
00133 /// the name of the joint
00134 ///////////////////////////////////////////////////////////////////////////////
00135 class JointName : public YouBotApiJointParameter {
00136 friend class YouBotJoint;
00137   public:
00138     JointName();
00139 
00140     virtual ~JointName();
00141 
00142     void getParameter(std::string& parameter) const;
00143 
00144     void setParameter(const std::string parameter);
00145 
00146     void toString(std::string& value);
00147 
00148 
00149   private:
00150     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const {};
00151 
00152     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) {};
00153 
00154     std::string getName() const {return this->name;};
00155 
00156     ParameterType getType() const {return this->parameterType;};
00157 
00158     std::string value;
00159 
00160     std::string name;
00161 
00162     ParameterType parameterType;
00163 
00164 };
00165 ///////////////////////////////////////////////////////////////////////////////
00166 /// Initialize Joint
00167 ///////////////////////////////////////////////////////////////////////////////
00168 class InitializeJoint : public YouBotJointParameter {
00169 friend class YouBotJoint;
00170   public:
00171     InitializeJoint();
00172 
00173     virtual ~InitializeJoint();
00174 
00175     void getParameter(bool& parameter) const;
00176 
00177     void setParameter(const bool parameter);
00178 
00179     void toString(std::string& value);
00180 
00181 
00182   private:
00183     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00184 
00185     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00186 
00187     std::string getName() const {return this->name;};
00188 
00189     ParameterType getType() const {return this->parameterType;};
00190 
00191     bool value;
00192 
00193     std::string name;
00194 
00195     ParameterType parameterType;
00196 
00197 };
00198 ///////////////////////////////////////////////////////////////////////////////
00199 /// calibrates the joint
00200 ///////////////////////////////////////////////////////////////////////////////
00201 class CalibrateJoint : public YouBotApiJointParameter {
00202 friend class YouBotJoint;
00203   public:
00204     CalibrateJoint();
00205 
00206     virtual ~CalibrateJoint();
00207 
00208     void getParameter(bool& doCalibration, CalibrationDirection& calibrationDirection, quantity<si::current>& maxCurrent) const;
00209 
00210     void setParameter(const bool doCalibration, CalibrationDirection calibrationDirection, const quantity<si::current>& maxCurrent);
00211 
00212     void toString(std::string& value);
00213 
00214 
00215   private:
00216     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const {};
00217 
00218     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) {};
00219 
00220     std::string getName() const {return this->name;};
00221 
00222     ParameterType getType() const {return this->parameterType;};
00223 
00224     bool doCalibration;
00225 
00226     std::string name;
00227 
00228     ParameterType parameterType;
00229 
00230     CalibrationDirection calibrationDirection;
00231 
00232     quantity<si::current> maxCurrent;
00233 
00234 };
00235 ///////////////////////////////////////////////////////////////////////////////
00236 /// the firmware version of the joint
00237 ///////////////////////////////////////////////////////////////////////////////
00238 class FirmwareVersion : public YouBotApiJointParameter {
00239 friend class YouBotJoint;
00240   public:
00241     FirmwareVersion();
00242 
00243     virtual ~FirmwareVersion();
00244 
00245     void getParameter(int& controllerType, std::string& firmwareVersion) const;
00246 
00247     void setParameter(const int controllerType, const std::string firmwareVersion);
00248 
00249     void toString(std::string& value);
00250 
00251 
00252   private:
00253     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00254 
00255     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00256 
00257     std::string getName() const {return this->name;};
00258 
00259     ParameterType getType() const {return this->parameterType;};
00260 
00261     int controllerType;
00262 
00263     std::string firmwareVersion;
00264 
00265     std::string name;
00266 
00267     ParameterType parameterType;
00268 
00269 };
00270 ///////////////////////////////////////////////////////////////////////////////
00271 /// the gear ratio which is needed for the calculations in the youBot driver
00272 ///////////////////////////////////////////////////////////////////////////////
00273 class GearRatio : public YouBotApiJointParameter {
00274 friend class YouBotJoint;
00275   public:
00276     GearRatio();
00277 
00278     virtual ~GearRatio();
00279 
00280     void getParameter(double& parameter) const;
00281 
00282     void setParameter(const double parameter);
00283 
00284     void toString(std::string& value);
00285 
00286 
00287   private:
00288     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const {};
00289 
00290     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) {};
00291 
00292     std::string getName() const {return this->name;};
00293 
00294     ParameterType getType() const {return this->parameterType;};
00295 
00296     double value;
00297 
00298     std::string name;
00299 
00300     ParameterType parameterType;
00301 
00302 };
00303 ///////////////////////////////////////////////////////////////////////////////
00304 /// the resolution of the encoders, it is needed for the calculations of the youBot Driver
00305 ///////////////////////////////////////////////////////////////////////////////
00306 class EncoderTicksPerRound : public YouBotApiJointParameter {
00307 friend class YouBotJoint;
00308   public:
00309     EncoderTicksPerRound();
00310 
00311     virtual ~EncoderTicksPerRound();
00312 
00313     void getParameter(unsigned int& parameter) const;
00314 
00315     void setParameter(const unsigned int parameter);
00316 
00317     void toString(std::string& value);
00318 
00319 
00320   private:
00321     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const {};
00322 
00323     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) {};
00324 
00325     std::string getName() const {return this->name;};
00326 
00327     ParameterType getType() const {return this->parameterType;};
00328 
00329     unsigned int value;
00330 
00331     std::string name;
00332 
00333     ParameterType parameterType;
00334 
00335 };
00336 ///////////////////////////////////////////////////////////////////////////////
00337 /// inverse the joint movement direction
00338 ///////////////////////////////////////////////////////////////////////////////
00339 class InverseMovementDirection : public YouBotApiJointParameter {
00340 friend class YouBotJoint;
00341   public:
00342     InverseMovementDirection();
00343 
00344     virtual ~InverseMovementDirection();
00345 
00346     void getParameter(bool& parameter) const;
00347 
00348     void setParameter(const bool parameter);
00349 
00350     void toString(std::string& value);
00351 
00352 
00353   private:
00354     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const {};
00355 
00356     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) {};
00357 
00358     std::string getName() const {return this->name;};
00359 
00360     ParameterType getType() const {return this->parameterType;};
00361 
00362     bool value;
00363 
00364     std::string name;
00365 
00366     ParameterType parameterType;
00367 
00368 };
00369 ///////////////////////////////////////////////////////////////////////////////
00370 /// joint position limits in encoder ticks
00371 ///////////////////////////////////////////////////////////////////////////////
00372 class JointLimits : public YouBotApiJointParameter {
00373 friend class YouBotJoint;
00374   public:
00375     JointLimits();
00376 
00377     virtual ~JointLimits();
00378 
00379     void getParameter(int& lowerLimit, int& upperLimit, bool& areLimitsActive) const;
00380 
00381     void setParameter(const int lowerLimit, const int upperLimit, const bool activateLimits);
00382 
00383     void toString(std::string& value);
00384 
00385 
00386   private:
00387     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const {};
00388 
00389     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) {};
00390 
00391     std::string getName() const {return this->name;};
00392 
00393     ParameterType getType() const {return this->parameterType;};
00394 
00395     int lowerLimit;
00396 
00397     int upperLimit;
00398 
00399     std::string name;
00400 
00401     ParameterType parameterType;
00402 
00403     bool areLimitsActive;
00404 
00405 };
00406 ///////////////////////////////////////////////////////////////////////////////
00407 /// joint position limits in radian
00408 ///////////////////////////////////////////////////////////////////////////////
00409 class JointLimitsRadian : public YouBotApiJointParameter {
00410 friend class YouBotJoint;
00411   public:
00412     JointLimitsRadian();
00413 
00414     virtual ~JointLimitsRadian();
00415 
00416     void getParameter(quantity<plane_angle>& lowerLimit, quantity<plane_angle>& upperLimit, bool& areLimitsActive) const;
00417 
00418     void setParameter(const quantity<plane_angle>& lowerLimit, const quantity<plane_angle>& upperLimit, const bool activateLimits);
00419 
00420     void toString(std::string& value);
00421 
00422 
00423   private:
00424     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const {};
00425 
00426     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) {};
00427 
00428     std::string getName() const {return this->name;};
00429 
00430     ParameterType getType() const {return this->parameterType;};
00431 
00432     quantity<plane_angle> lowerLimit;
00433 
00434     quantity<plane_angle> upperLimit;
00435 
00436     std::string name;
00437 
00438     ParameterType parameterType;
00439 
00440     bool areLimitsActive;
00441 
00442 };
00443 ///////////////////////////////////////////////////////////////////////////////
00444 /// the resolution of the encoders, it is needed for the calculations of the youBot Driver
00445 ///////////////////////////////////////////////////////////////////////////////
00446 class TorqueConstant : public YouBotApiJointParameter {
00447 friend class YouBotJoint;
00448   public:
00449     TorqueConstant();
00450 
00451     virtual ~TorqueConstant();
00452 
00453     void getParameter(double& parameter) const;
00454 
00455     void setParameter(const double parameter);
00456 
00457     void toString(std::string& value);
00458 
00459 
00460   private:
00461     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const {};
00462 
00463     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage) {};
00464 
00465     std::string getName() const {return this->name;};
00466 
00467     ParameterType getType() const {return this->parameterType;};
00468 
00469     double value;
00470 
00471     std::string name;
00472 
00473     ParameterType parameterType;
00474 
00475 };
00476 ///////////////////////////////////////////////////////////////////////////////
00477 /// The maximum velocity used for move to position command when executing a ramp to a position. In sensorless commutation mode the velocity threshold for hallFX. In sensorless commutation mode used as velocity threshold for hallFXTM. Set this value to a realistic velocity which the motor can reach!
00478 ///////////////////////////////////////////////////////////////////////////////
00479 class MaximumPositioningVelocity : public YouBotJointParameter {
00480 friend class YouBotJoint;
00481   public:
00482     MaximumPositioningVelocity();
00483 
00484     virtual ~MaximumPositioningVelocity();
00485 
00486     void getParameter(quantity<angular_velocity>& parameter) const;
00487 
00488     void setParameter(const quantity<angular_velocity>& parameter);
00489 
00490     void toString(std::string& value);
00491 
00492 
00493   private:
00494     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00495 
00496     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00497 
00498     std::string getName() const {return this->name;};
00499 
00500     ParameterType getType() const {return this->parameterType;};
00501 
00502     quantity<angular_velocity> upperLimit;
00503 
00504     quantity<angular_velocity> lowerLimit;
00505 
00506     quantity<angular_velocity> value;
00507 
00508     std::string name;
00509 
00510     ParameterType parameterType;
00511 
00512 };
00513 ///////////////////////////////////////////////////////////////////////////////
00514 /// Acceleration parameter for velocity control and position control
00515 ///////////////////////////////////////////////////////////////////////////////
00516 class MotorAcceleration : public YouBotJointParameter {
00517 friend class YouBotJoint;
00518   public:
00519     MotorAcceleration();
00520 
00521     virtual ~MotorAcceleration();
00522 
00523     void getParameter(quantity<angular_acceleration>& parameter) const;
00524 
00525     void setParameter(const quantity<angular_acceleration>& parameter);
00526 
00527     void toString(std::string& value);
00528 
00529 
00530   private:
00531     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00532 
00533     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00534 
00535     std::string getName() const {return this->name;};
00536 
00537     ParameterType getType() const {return this->parameterType;};
00538 
00539     quantity<angular_acceleration> upperLimit;
00540 
00541     quantity<angular_acceleration> lowerLimit;
00542 
00543     quantity<angular_acceleration> value;
00544 
00545     std::string name;
00546 
00547     ParameterType parameterType;
00548 
00549 };
00550 ///////////////////////////////////////////////////////////////////////////////
00551 /// Switches the ramp generator for speed and position control on and off 
00552 ///////////////////////////////////////////////////////////////////////////////
00553 class RampGeneratorSpeedAndPositionControl : public YouBotJointParameter {
00554 friend class YouBotJoint;
00555   public:
00556     RampGeneratorSpeedAndPositionControl();
00557 
00558     virtual ~RampGeneratorSpeedAndPositionControl();
00559 
00560     void getParameter(bool& parameter) const;
00561 
00562     void setParameter(const bool parameter);
00563 
00564     void toString(std::string& value);
00565 
00566 
00567   private:
00568     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00569 
00570     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00571 
00572     std::string getName() const {return this->name;};
00573 
00574     ParameterType getType() const {return this->parameterType;};
00575 
00576     bool value;
00577 
00578     std::string name;
00579 
00580     ParameterType parameterType;
00581 
00582 };
00583 ///////////////////////////////////////////////////////////////////////////////
00584 /// Switching threshold for position control between the first and second set of parameters. If the velocity threshold is set to zero, the parameter set 2 is used all the time.
00585 ///////////////////////////////////////////////////////////////////////////////
00586 class PositionControlSwitchingThreshold : public YouBotJointParameter {
00587 friend class YouBotJoint;
00588   public:
00589     PositionControlSwitchingThreshold();
00590 
00591     virtual ~PositionControlSwitchingThreshold();
00592 
00593     void getParameter(quantity<angular_velocity>& parameter) const;
00594 
00595     void setParameter(const quantity<angular_velocity>& parameter);
00596 
00597     void toString(std::string& value);
00598 
00599 
00600   private:
00601     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00602 
00603     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00604 
00605     std::string getName() const {return this->name;};
00606 
00607     ParameterType getType() const {return this->parameterType;};
00608 
00609     quantity<angular_velocity> upperLimit;
00610 
00611     quantity<angular_velocity> lowerLimit;
00612 
00613     quantity<angular_velocity> value;
00614 
00615     std::string name;
00616 
00617     ParameterType parameterType;
00618 
00619 };
00620 ///////////////////////////////////////////////////////////////////////////////
00621 /// Adjusts the limit to switch between first velocity PID parameter set and second velocity PID parameter set. If the velocity threshold is set to zero, the parameter set 2 is used all the time.
00622 
00623 ///////////////////////////////////////////////////////////////////////////////
00624 class SpeedControlSwitchingThreshold : public YouBotJointParameter {
00625 friend class YouBotJoint;
00626   public:
00627     SpeedControlSwitchingThreshold();
00628 
00629     virtual ~SpeedControlSwitchingThreshold();
00630 
00631     void getParameter(quantity<angular_velocity>& parameter) const;
00632 
00633     void setParameter(const quantity<angular_velocity>& parameter);
00634 
00635     void toString(std::string& value);
00636 
00637 
00638   private:
00639     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00640 
00641     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00642 
00643     std::string getName() const {return this->name;};
00644 
00645     ParameterType getType() const {return this->parameterType;};
00646 
00647     quantity<angular_velocity> upperLimit;
00648 
00649     quantity<angular_velocity> lowerLimit;
00650 
00651     quantity<angular_velocity> value;
00652 
00653     std::string name;
00654 
00655     ParameterType parameterType;
00656 
00657 };
00658 ///////////////////////////////////////////////////////////////////////////////
00659 /// Velocity to switch from controlled to hallFX mode. Set this value to a realistic velocity which the motor can reach in controlled mode!
00660 ///////////////////////////////////////////////////////////////////////////////
00661 class VelocityThresholdForHallFX : public YouBotJointParameter {
00662 friend class YouBotJoint;
00663   public:
00664     VelocityThresholdForHallFX();
00665 
00666     virtual ~VelocityThresholdForHallFX();
00667 
00668     void getParameter(quantity<angular_velocity>& parameter) const;
00669 
00670     void setParameter(const quantity<angular_velocity>& parameter);
00671 
00672     void toString(std::string& value);
00673 
00674 
00675   private:
00676     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00677 
00678     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00679 
00680     std::string getName() const {return this->name;};
00681 
00682     ParameterType getType() const {return this->parameterType;};
00683 
00684     quantity<angular_velocity> upperLimit;
00685 
00686     quantity<angular_velocity> lowerLimit;
00687 
00688     quantity<angular_velocity> value;
00689 
00690     std::string name;
00691 
00692     ParameterType parameterType;
00693 
00694 };
00695 ///////////////////////////////////////////////////////////////////////////////
00696 /// P-Parameter of PID position regulator (first position parameter set)
00697 ///////////////////////////////////////////////////////////////////////////////
00698 class PParameterFirstParametersPositionControl : public YouBotJointParameter {
00699 friend class YouBotJoint;
00700   public:
00701     PParameterFirstParametersPositionControl();
00702 
00703     virtual ~PParameterFirstParametersPositionControl();
00704 
00705     void getParameter(int& parameter) const;
00706 
00707     void setParameter(const int parameter);
00708 
00709     void toString(std::string& value);
00710 
00711 
00712   private:
00713     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00714 
00715     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00716 
00717     std::string getName() const {return this->name;};
00718 
00719     ParameterType getType() const {return this->parameterType;};
00720 
00721     int upperLimit;
00722 
00723     int lowerLimit;
00724 
00725     int value;
00726 
00727     std::string name;
00728 
00729     ParameterType parameterType;
00730 
00731 };
00732 ///////////////////////////////////////////////////////////////////////////////
00733 /// I-Parameter of PID position regulator (first position parameter set)
00734 ///////////////////////////////////////////////////////////////////////////////
00735 class IParameterFirstParametersPositionControl : public YouBotJointParameter {
00736 friend class YouBotJoint;
00737   public:
00738     IParameterFirstParametersPositionControl();
00739 
00740     virtual ~IParameterFirstParametersPositionControl();
00741 
00742     void getParameter(int& parameter) const;
00743 
00744     void setParameter(const int parameter);
00745 
00746     void toString(std::string& value);
00747 
00748 
00749   private:
00750     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00751 
00752     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00753 
00754     std::string getName() const {return this->name;};
00755 
00756     ParameterType getType() const {return this->parameterType;};
00757 
00758     int upperLimit;
00759 
00760     int lowerLimit;
00761 
00762     int value;
00763 
00764     std::string name;
00765 
00766     ParameterType parameterType;
00767 
00768 };
00769 ///////////////////////////////////////////////////////////////////////////////
00770 /// D-Parameter of PID position regulator (first position parameter set)
00771 ///////////////////////////////////////////////////////////////////////////////
00772 class DParameterFirstParametersPositionControl : public YouBotJointParameter {
00773 friend class YouBotJoint;
00774   public:
00775     DParameterFirstParametersPositionControl();
00776 
00777     virtual ~DParameterFirstParametersPositionControl();
00778 
00779     void getParameter(int& parameter) const;
00780 
00781     void setParameter(const int parameter);
00782 
00783     void toString(std::string& value);
00784 
00785 
00786   private:
00787     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00788 
00789     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00790 
00791     std::string getName() const {return this->name;};
00792 
00793     ParameterType getType() const {return this->parameterType;};
00794 
00795     int upperLimit;
00796 
00797     int lowerLimit;
00798 
00799     int value;
00800 
00801     std::string name;
00802 
00803     ParameterType parameterType;
00804 
00805 };
00806 ///////////////////////////////////////////////////////////////////////////////
00807 /// Adjust in standstill to lowest possible value at which the motor keeps its position. A too high value causes overshooting at positioning mode. (first position parameter set)
00808 ///////////////////////////////////////////////////////////////////////////////
00809 class IClippingParameterFirstParametersPositionControl : public YouBotJointParameter {
00810 friend class YouBotJoint;
00811   public:
00812     IClippingParameterFirstParametersPositionControl();
00813 
00814     virtual ~IClippingParameterFirstParametersPositionControl();
00815 
00816     void getParameter(int& parameter) const;
00817 
00818     void setParameter(const int parameter);
00819 
00820     void toString(std::string& value);
00821 
00822 
00823   private:
00824     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00825 
00826     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00827 
00828     std::string getName() const {return this->name;};
00829 
00830     ParameterType getType() const {return this->parameterType;};
00831 
00832     int upperLimit;
00833 
00834     int lowerLimit;
00835 
00836     int value;
00837 
00838     std::string name;
00839 
00840     ParameterType parameterType;
00841 
00842 };
00843 ///////////////////////////////////////////////////////////////////////////////
00844 /// P-Parameter of PID velocity regulator. This PID parameter set is used at lower velocity. (first velocity parameter set) 
00845 ///////////////////////////////////////////////////////////////////////////////
00846 class PParameterFirstParametersSpeedControl : public YouBotJointParameter {
00847 friend class YouBotJoint;
00848   public:
00849     PParameterFirstParametersSpeedControl();
00850 
00851     virtual ~PParameterFirstParametersSpeedControl();
00852 
00853     void getParameter(int& parameter) const;
00854 
00855     void setParameter(const int parameter);
00856 
00857     void toString(std::string& value);
00858 
00859 
00860   private:
00861     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00862 
00863     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00864 
00865     std::string getName() const {return this->name;};
00866 
00867     ParameterType getType() const {return this->parameterType;};
00868 
00869     int upperLimit;
00870 
00871     int lowerLimit;
00872 
00873     int value;
00874 
00875     std::string name;
00876 
00877     ParameterType parameterType;
00878 
00879 };
00880 ///////////////////////////////////////////////////////////////////////////////
00881 /// I-Parameter of PID velocity regulator. This PID parameter set is used at lower velocity. (first velocity parameter set) 
00882 ///////////////////////////////////////////////////////////////////////////////
00883 class IParameterFirstParametersSpeedControl : public YouBotJointParameter {
00884 friend class YouBotJoint;
00885   public:
00886     IParameterFirstParametersSpeedControl();
00887 
00888     virtual ~IParameterFirstParametersSpeedControl();
00889 
00890     void getParameter(int& parameter) const;
00891 
00892     void setParameter(const int parameter);
00893 
00894     void toString(std::string& value);
00895 
00896 
00897   private:
00898     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00899 
00900     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00901 
00902     std::string getName() const {return this->name;};
00903 
00904     ParameterType getType() const {return this->parameterType;};
00905 
00906     int upperLimit;
00907 
00908     int lowerLimit;
00909 
00910     int value;
00911 
00912     std::string name;
00913 
00914     ParameterType parameterType;
00915 
00916 };
00917 ///////////////////////////////////////////////////////////////////////////////
00918 /// D-Parameter of PID velocity regulator. This PID parameter set is used at lower velocity. (first velocity parameter set) 
00919 ///////////////////////////////////////////////////////////////////////////////
00920 class DParameterFirstParametersSpeedControl : public YouBotJointParameter {
00921 friend class YouBotJoint;
00922   public:
00923     DParameterFirstParametersSpeedControl();
00924 
00925     virtual ~DParameterFirstParametersSpeedControl();
00926 
00927     void getParameter(int& parameter) const;
00928 
00929     void setParameter(const int parameter);
00930 
00931     void toString(std::string& value);
00932 
00933 
00934   private:
00935     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00936 
00937     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00938 
00939     std::string getName() const {return this->name;};
00940 
00941     ParameterType getType() const {return this->parameterType;};
00942 
00943     int upperLimit;
00944 
00945     int lowerLimit;
00946 
00947     int value;
00948 
00949     std::string name;
00950 
00951     ParameterType parameterType;
00952 
00953 };
00954 ///////////////////////////////////////////////////////////////////////////////
00955 /// This PID parameter set is used at lower velocity. (first velocity parameter set)
00956 ///////////////////////////////////////////////////////////////////////////////
00957 class IClippingParameterFirstParametersSpeedControl : public YouBotJointParameter {
00958 friend class YouBotJoint;
00959   public:
00960     IClippingParameterFirstParametersSpeedControl();
00961 
00962     virtual ~IClippingParameterFirstParametersSpeedControl();
00963 
00964     void getParameter(int& parameter) const;
00965 
00966     void setParameter(const int parameter);
00967 
00968     void toString(std::string& value);
00969 
00970 
00971   private:
00972     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
00973 
00974     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
00975 
00976     std::string getName() const {return this->name;};
00977 
00978     ParameterType getType() const {return this->parameterType;};
00979 
00980     int upperLimit;
00981 
00982     int lowerLimit;
00983 
00984     int value;
00985 
00986     std::string name;
00987 
00988     ParameterType parameterType;
00989 
00990 };
00991 ///////////////////////////////////////////////////////////////////////////////
00992 /// P-Parameter of PID position regulator (second position parameter set)
00993 ///////////////////////////////////////////////////////////////////////////////
00994 class PParameterSecondParametersPositionControl : public YouBotJointParameter {
00995 friend class YouBotJoint;
00996   public:
00997     PParameterSecondParametersPositionControl();
00998 
00999     virtual ~PParameterSecondParametersPositionControl();
01000 
01001     void getParameter(int& parameter) const;
01002 
01003     void setParameter(const int parameter);
01004 
01005     void toString(std::string& value);
01006 
01007 
01008   private:
01009     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01010 
01011     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01012 
01013     std::string getName() const {return this->name;};
01014 
01015     ParameterType getType() const {return this->parameterType;};
01016 
01017     int upperLimit;
01018 
01019     int lowerLimit;
01020 
01021     int value;
01022 
01023     std::string name;
01024 
01025     ParameterType parameterType;
01026 
01027 };
01028 ///////////////////////////////////////////////////////////////////////////////
01029 /// I-Parameter of PID position regulator (second position parameter set)
01030 ///////////////////////////////////////////////////////////////////////////////
01031 class IParameterSecondParametersPositionControl : public YouBotJointParameter {
01032 friend class YouBotJoint;
01033   public:
01034     IParameterSecondParametersPositionControl();
01035 
01036     virtual ~IParameterSecondParametersPositionControl();
01037 
01038     void getParameter(int& parameter) const;
01039 
01040     void setParameter(const int parameter);
01041 
01042     void toString(std::string& value);
01043 
01044 
01045   private:
01046     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01047 
01048     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01049 
01050     std::string getName() const {return this->name;};
01051 
01052     ParameterType getType() const {return this->parameterType;};
01053 
01054     int upperLimit;
01055 
01056     int lowerLimit;
01057 
01058     int value;
01059 
01060     std::string name;
01061 
01062     ParameterType parameterType;
01063 
01064 };
01065 ///////////////////////////////////////////////////////////////////////////////
01066 /// D-Parameter of PID position regulator (second position parameter set)
01067 ///////////////////////////////////////////////////////////////////////////////
01068 class DParameterSecondParametersPositionControl : public YouBotJointParameter {
01069 friend class YouBotJoint;
01070   public:
01071     DParameterSecondParametersPositionControl();
01072 
01073     virtual ~DParameterSecondParametersPositionControl();
01074 
01075     void getParameter(int& parameter) const;
01076 
01077     void setParameter(const int parameter);
01078 
01079     void toString(std::string& value);
01080 
01081 
01082   private:
01083     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01084 
01085     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01086 
01087     std::string getName() const {return this->name;};
01088 
01089     ParameterType getType() const {return this->parameterType;};
01090 
01091     int upperLimit;
01092 
01093     int lowerLimit;
01094 
01095     int value;
01096 
01097     std::string name;
01098 
01099     ParameterType parameterType;
01100 
01101 };
01102 ///////////////////////////////////////////////////////////////////////////////
01103 /// Adjust in standstill to lowest possible value at which the motor keeps its position. A too high value causes overshooting at positioning mode. (second position parameter set)
01104 ///////////////////////////////////////////////////////////////////////////////
01105 class IClippingParameterSecondParametersPositionControl : public YouBotJointParameter {
01106 friend class YouBotJoint;
01107   public:
01108     IClippingParameterSecondParametersPositionControl();
01109 
01110     virtual ~IClippingParameterSecondParametersPositionControl();
01111 
01112     void getParameter(int& parameter) const;
01113 
01114     void setParameter(const int parameter);
01115 
01116     void toString(std::string& value);
01117 
01118 
01119   private:
01120     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01121 
01122     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01123 
01124     std::string getName() const {return this->name;};
01125 
01126     ParameterType getType() const {return this->parameterType;};
01127 
01128     int upperLimit;
01129 
01130     int lowerLimit;
01131 
01132     int value;
01133 
01134     std::string name;
01135 
01136     ParameterType parameterType;
01137 
01138 };
01139 ///////////////////////////////////////////////////////////////////////////////
01140 /// P-Parameter of PID velocity regulator (second position parameter set)
01141 ///////////////////////////////////////////////////////////////////////////////
01142 class PParameterSecondParametersSpeedControl : public YouBotJointParameter {
01143 friend class YouBotJoint;
01144   public:
01145     PParameterSecondParametersSpeedControl();
01146 
01147     virtual ~PParameterSecondParametersSpeedControl();
01148 
01149     void getParameter(int& parameter) const;
01150 
01151     void setParameter(const int parameter);
01152 
01153     void toString(std::string& value);
01154 
01155 
01156   private:
01157     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01158 
01159     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01160 
01161     std::string getName() const {return this->name;};
01162 
01163     ParameterType getType() const {return this->parameterType;};
01164 
01165     int upperLimit;
01166 
01167     int lowerLimit;
01168 
01169     int value;
01170 
01171     std::string name;
01172 
01173     ParameterType parameterType;
01174 
01175 };
01176 ///////////////////////////////////////////////////////////////////////////////
01177 /// I-Parameter of PID velocity regulator (second position parameter set)
01178 ///////////////////////////////////////////////////////////////////////////////
01179 class IParameterSecondParametersSpeedControl : public YouBotJointParameter {
01180 friend class YouBotJoint;
01181   public:
01182     IParameterSecondParametersSpeedControl();
01183 
01184     virtual ~IParameterSecondParametersSpeedControl();
01185 
01186     void getParameter(int& parameter) const;
01187 
01188     void setParameter(const int parameter);
01189 
01190     void toString(std::string& value);
01191 
01192 
01193   private:
01194     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01195 
01196     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01197 
01198     std::string getName() const {return this->name;};
01199 
01200     ParameterType getType() const {return this->parameterType;};
01201 
01202     int upperLimit;
01203 
01204     int lowerLimit;
01205 
01206     int value;
01207 
01208     std::string name;
01209 
01210     ParameterType parameterType;
01211 
01212 };
01213 ///////////////////////////////////////////////////////////////////////////////
01214 /// D-Parameter of PID velocity regulator (second position parameter set)
01215 ///////////////////////////////////////////////////////////////////////////////
01216 class DParameterSecondParametersSpeedControl : public YouBotJointParameter {
01217 friend class YouBotJoint;
01218   public:
01219     DParameterSecondParametersSpeedControl();
01220 
01221     virtual ~DParameterSecondParametersSpeedControl();
01222 
01223     void getParameter(int& parameter) const;
01224 
01225     void setParameter(const int parameter);
01226 
01227     void toString(std::string& value);
01228 
01229 
01230   private:
01231     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01232 
01233     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01234 
01235     std::string getName() const {return this->name;};
01236 
01237     ParameterType getType() const {return this->parameterType;};
01238 
01239     int upperLimit;
01240 
01241     int lowerLimit;
01242 
01243     int value;
01244 
01245     std::string name;
01246 
01247     ParameterType parameterType;
01248 
01249 };
01250 ///////////////////////////////////////////////////////////////////////////////
01251 /// I-Clipping Parameter of PID current regulator. This PID parameter set is used at lower velocity. (second position parameter set)
01252 ///////////////////////////////////////////////////////////////////////////////
01253 class IClippingParameterSecondParametersSpeedControl : public YouBotJointParameter {
01254 friend class YouBotJoint;
01255   public:
01256     IClippingParameterSecondParametersSpeedControl();
01257 
01258     virtual ~IClippingParameterSecondParametersSpeedControl();
01259 
01260     void getParameter(int& parameter) const;
01261 
01262     void setParameter(const int parameter);
01263 
01264     void toString(std::string& value);
01265 
01266 
01267   private:
01268     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01269 
01270     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01271 
01272     std::string getName() const {return this->name;};
01273 
01274     ParameterType getType() const {return this->parameterType;};
01275 
01276     int upperLimit;
01277 
01278     int lowerLimit;
01279 
01280     int value;
01281 
01282     std::string name;
01283 
01284     ParameterType parameterType;
01285 
01286 };
01287 ///////////////////////////////////////////////////////////////////////////////
01288 /// P-Parameter of PID current regulator.
01289 ///////////////////////////////////////////////////////////////////////////////
01290 class PParameterCurrentControl : public YouBotJointParameter {
01291 friend class YouBotJoint;
01292   public:
01293     PParameterCurrentControl();
01294 
01295     virtual ~PParameterCurrentControl();
01296 
01297     void getParameter(int& parameter) const;
01298 
01299     void setParameter(const int parameter);
01300 
01301     void toString(std::string& value);
01302 
01303 
01304   private:
01305     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01306 
01307     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01308 
01309     std::string getName() const {return this->name;};
01310 
01311     ParameterType getType() const {return this->parameterType;};
01312 
01313     int upperLimit;
01314 
01315     int lowerLimit;
01316 
01317     int value;
01318 
01319     std::string name;
01320 
01321     ParameterType parameterType;
01322 
01323 };
01324 ///////////////////////////////////////////////////////////////////////////////
01325 /// I-Parameter of PID current regulator.
01326 ///////////////////////////////////////////////////////////////////////////////
01327 class IParameterCurrentControl : public YouBotJointParameter {
01328 friend class YouBotJoint;
01329   public:
01330     IParameterCurrentControl();
01331 
01332     virtual ~IParameterCurrentControl();
01333 
01334     void getParameter(int& parameter) const;
01335 
01336     void setParameter(const int parameter);
01337 
01338     void toString(std::string& value);
01339 
01340 
01341   private:
01342     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01343 
01344     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01345 
01346     std::string getName() const {return this->name;};
01347 
01348     ParameterType getType() const {return this->parameterType;};
01349 
01350     int upperLimit;
01351 
01352     int lowerLimit;
01353 
01354     int value;
01355 
01356     std::string name;
01357 
01358     ParameterType parameterType;
01359 
01360 };
01361 ///////////////////////////////////////////////////////////////////////////////
01362 /// D-Parameter of PID current regulator.
01363 ///////////////////////////////////////////////////////////////////////////////
01364 class DParameterCurrentControl : public YouBotJointParameter {
01365 friend class YouBotJoint;
01366   public:
01367     DParameterCurrentControl();
01368 
01369     virtual ~DParameterCurrentControl();
01370 
01371     void getParameter(int& parameter) const;
01372 
01373     void setParameter(const int parameter);
01374 
01375     void toString(std::string& value);
01376 
01377 
01378   private:
01379     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01380 
01381     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01382 
01383     std::string getName() const {return this->name;};
01384 
01385     ParameterType getType() const {return this->parameterType;};
01386 
01387     int upperLimit;
01388 
01389     int lowerLimit;
01390 
01391     int value;
01392 
01393     std::string name;
01394 
01395     ParameterType parameterType;
01396 
01397 };
01398 ///////////////////////////////////////////////////////////////////////////////
01399 /// I-Clipping Parameter of PID current regulator. 
01400 ///////////////////////////////////////////////////////////////////////////////
01401 class IClippingParameterCurrentControl : public YouBotJointParameter {
01402 friend class YouBotJoint;
01403   public:
01404     IClippingParameterCurrentControl();
01405 
01406     virtual ~IClippingParameterCurrentControl();
01407 
01408     void getParameter(int& parameter) const;
01409 
01410     void setParameter(const int parameter);
01411 
01412     void toString(std::string& value);
01413 
01414 
01415   private:
01416     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01417 
01418     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01419 
01420     std::string getName() const {return this->name;};
01421 
01422     ParameterType getType() const {return this->parameterType;};
01423 
01424     int upperLimit;
01425 
01426     int lowerLimit;
01427 
01428     int value;
01429 
01430     std::string name;
01431 
01432     ParameterType parameterType;
01433 
01434 };
01435 ///////////////////////////////////////////////////////////////////////////////
01436 /// Maximum velocity at which end position can be set. Prevents issuing of end position when the target is passed at high velocity
01437 ///////////////////////////////////////////////////////////////////////////////
01438 class MaximumVelocityToSetPosition : public YouBotJointParameter {
01439 friend class YouBotJoint;
01440   public:
01441     MaximumVelocityToSetPosition();
01442 
01443     virtual ~MaximumVelocityToSetPosition();
01444 
01445     void getParameter(quantity<angular_velocity>& parameter) const;
01446 
01447     void setParameter(const quantity<angular_velocity>& parameter);
01448 
01449     void toString(std::string& value);
01450 
01451 
01452   private:
01453     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01454 
01455     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01456 
01457     std::string getName() const {return this->name;};
01458 
01459     ParameterType getType() const {return this->parameterType;};
01460 
01461     quantity<angular_velocity> upperLimit;
01462 
01463     quantity<angular_velocity> lowerLimit;
01464 
01465     quantity<angular_velocity> value;
01466 
01467     std::string name;
01468 
01469     ParameterType parameterType;
01470 
01471 };
01472 ///////////////////////////////////////////////////////////////////////////////
01473 /// Maximum distance at which the position end flag is set.
01474 ///////////////////////////////////////////////////////////////////////////////
01475 class PositionTargetReachedDistance : public YouBotJointParameter {
01476 friend class YouBotJoint;
01477   public:
01478     PositionTargetReachedDistance();
01479 
01480     virtual ~PositionTargetReachedDistance();
01481 
01482     void getParameter(int& parameter) const;
01483 
01484     void setParameter(const int parameter);
01485 
01486     void toString(std::string& value);
01487 
01488 
01489   private:
01490     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01491 
01492     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01493 
01494     std::string getName() const {return this->name;};
01495 
01496     ParameterType getType() const {return this->parameterType;};
01497 
01498     int upperLimit;
01499 
01500     int lowerLimit;
01501 
01502     int value;
01503 
01504     std::string name;
01505 
01506     ParameterType parameterType;
01507 
01508 };
01509 ///////////////////////////////////////////////////////////////////////////////
01510 /// Clear the flag that indicates that the I2t sum has exceeded the I2t limit.
01511 ///////////////////////////////////////////////////////////////////////////////
01512 class ClearI2tExceededFlag : public YouBotJointParameter {
01513 friend class YouBotJoint;
01514   public:
01515     ClearI2tExceededFlag();
01516 
01517     virtual ~ClearI2tExceededFlag();
01518 
01519     void getParameter() const;
01520 
01521     void setParameter();
01522 
01523     void toString(std::string& value);
01524 
01525 
01526   private:
01527     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01528 
01529     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01530 
01531     std::string getName() const {return this->name;};
01532 
01533     ParameterType getType() const {return this->parameterType;};
01534 
01535     bool value;
01536 
01537     std::string name;
01538 
01539     ParameterType parameterType;
01540 
01541 };
01542 ///////////////////////////////////////////////////////////////////////////////
01543 /// Clear the flag that indicates a communication timeout between the EtherCAT master and the controller.
01544 
01545 ///////////////////////////////////////////////////////////////////////////////
01546 class ClearMotorControllerTimeoutFlag : public YouBotJointParameter {
01547 friend class YouBotJoint;
01548   public:
01549     ClearMotorControllerTimeoutFlag();
01550 
01551     virtual ~ClearMotorControllerTimeoutFlag();
01552 
01553     bool getParameter() const;
01554 
01555     void setParameter();
01556 
01557     void toString(std::string& value);
01558 
01559 
01560   private:
01561     void getYouBotMailboxMsg(YouBotSlaveMailboxMsg& message, TMCLCommandNumber msgType, const YouBotJointStorage& storage) const;
01562 
01563     void setYouBotMailboxMsg(const YouBotSlaveMailboxMsg& message, const YouBotJointStorage& storage);
01564 
01565     std::string getName() const {return this->name;};
01566 
01567     ParameterType getType() const {return this->parameterType;};
01568 
01569     bool value;
01570 
01571     std::string name;
01572 
01573     ParameterType parameterType;
01574 
01575 };
01576 ///////////////////////////////////////////////////////////////////////////////
01577 /// P-Parameter of PID trajectory regulator
01578 ///////////////////////////////////////////////////////////////////////////////
01579 class PParameterTrajectoryControl : public YouBotApiJointParameter {
01580 friend class YouBotJoint;
01581   public:
01582     PParameterTrajectoryControl();
01583 
01584     virtual ~PParameterTrajectoryControl();
01585 
01586     void getParameter(double& parameter) const;
01587 
01588     void setParameter(const double parameter);
01589 
01590     void toString(std::string& value);
01591 
01592 
01593   private:
01594     std::string getName() const {return this->name;};
01595 
01596     ParameterType getType() const {return this->parameterType;};
01597 
01598     double upperLimit;
01599 
01600     double lowerLimit;
01601 
01602     double value;
01603 
01604     std::string name;
01605 
01606     ParameterType parameterType;
01607 
01608 };
01609 ///////////////////////////////////////////////////////////////////////////////
01610 /// I-Parameter of PID trajectory regulator 
01611 ///////////////////////////////////////////////////////////////////////////////
01612 class IParameterTrajectoryControl : public YouBotApiJointParameter {
01613 friend class YouBotJoint;
01614   public:
01615     IParameterTrajectoryControl();
01616 
01617     virtual ~IParameterTrajectoryControl();
01618 
01619     void getParameter(double& parameter) const;
01620 
01621     void setParameter(const double parameter);
01622 
01623     void toString(std::string& value);
01624 
01625 
01626   private:
01627     std::string getName() const {return this->name;};
01628 
01629     ParameterType getType() const {return this->parameterType;};
01630 
01631     double upperLimit;
01632 
01633     double lowerLimit;
01634 
01635     double value;
01636 
01637     std::string name;
01638 
01639     ParameterType parameterType;
01640 
01641 };
01642 ///////////////////////////////////////////////////////////////////////////////
01643 /// D-Parameter of PID trajectory regulator
01644 ///////////////////////////////////////////////////////////////////////////////
01645 class DParameterTrajectoryControl : public YouBotApiJointParameter {
01646 friend class YouBotJoint;
01647   public:
01648     DParameterTrajectoryControl();
01649 
01650     virtual ~DParameterTrajectoryControl();
01651 
01652     void getParameter(double& parameter) const;
01653 
01654     void setParameter(const double parameter);
01655 
01656     void toString(std::string& value);
01657 
01658 
01659   private:
01660     std::string getName() const {return this->name;};
01661 
01662     ParameterType getType() const {return this->parameterType;};
01663 
01664     double upperLimit;
01665 
01666     double lowerLimit;
01667 
01668     double value;
01669 
01670     std::string name;
01671 
01672     ParameterType parameterType;
01673 
01674 };
01675 ///////////////////////////////////////////////////////////////////////////////
01676 /// gives a limit for the I sum part of the trajectory regulator
01677 ///////////////////////////////////////////////////////////////////////////////
01678 class IClippingParameterTrajectoryControl : public YouBotApiJointParameter {
01679 friend class YouBotJoint;
01680   public:
01681     IClippingParameterTrajectoryControl();
01682 
01683     virtual ~IClippingParameterTrajectoryControl();
01684 
01685     void getParameter(double& parameter) const;
01686 
01687     void setParameter(const double parameter);
01688 
01689     void toString(std::string& value);
01690 
01691 
01692   private:
01693     std::string getName() const {return this->name;};
01694 
01695     ParameterType getType() const {return this->parameterType;};
01696 
01697     double upperLimit;
01698 
01699     double lowerLimit;
01700 
01701     double value;
01702 
01703     std::string name;
01704 
01705     ParameterType parameterType;
01706 
01707 };
01708 
01709 } // namespace youbot
01710 #endif
Generated by  doxygen 1.6.3