00001 #ifndef LinkBase_h 00002 #define LinkBase_h 1 00003 00004 #ifdef _MSC_VER 00005 #pragma warning( disable : 4786 ) 00006 #endif 00007 00008 #include "universe\NamedElement.h" 00009 #include "geometry\ObjectBase.h" 00010 #include "Kinematics\FrameManager.h" 00011 #include <set> 00012 #include <vector> 00013 00014 00015 class DH_Link; 00016 class IfstreamWithComments; 00017 00018 using std::ostream ; 00019 using std::istream ; 00020 00021 class LinkBase : public NamedElement 00022 { 00023 public: 00024 virtual ~LinkBase(); 00025 00026 virtual void UpdateFrames () const = 0; 00027 00028 //## Operation: SetBaseFrame%924379573 00029 void SetBaseFrame (const unsigned int frame); 00030 00031 //## Operation: BaseFrameNum%924379575 00032 unsigned int BaseFrameNum () const; 00033 00034 //## Operation: Clone%924739819 00035 virtual LinkBase* Clone () const = 0; 00036 00037 //## Operation: SetFrameManager%924978290 00038 void SetFrameManager (FrameManager* frameManager); 00039 00040 //## Operation: SetJointVariable%925420851 00041 virtual void SetJointVariable (const double newValue) = 0; 00042 00043 //## Operation: JointMax%928194468 00044 double JointMax () const; 00045 00046 //## Operation: JointMin%928194469 00047 double JointMin () const; 00048 00049 //## Operation: JointWraps%928194470 00050 bool JointWraps () const; 00051 00052 //## Operation: SetJointMax%928263336 00053 void SetJointMax (const double jointMax); 00054 00055 //## Operation: SetJointMin%928263337 00056 void SetJointMin (const double jointMin); 00057 00058 //## Operation: SetJointLimits%928263338 00059 void SetJointLimits (const double limit1, const double limit2); 00060 00061 //## Operation: DoesLinkControlFrame%928263348 00062 virtual bool DoesLinkControlFrame (const unsigned int frameNum) const = 0; 00063 00064 //## Operation: Serialize%933801285 00065 virtual void Serialize (ostream& os) const; 00066 00067 //## Operation: DeSerializeAbstract%935084509 00068 static LinkBase* DeSerializeAbstract (IfstreamWithComments& is, FrameManager* frameManager); 00069 00070 //## Operation: SetPositioningFrame%969569781 00071 void SetPositioningFrame (const Matrix4x4& positioningFrame); 00072 00073 //## Operation: DeSerialize%935084510 00074 virtual bool DeSerialize (IfstreamWithComments& is); 00075 00076 // Data Members for Class Attributes 00077 00078 //## Attribute: directlyDependantObjects%3755D91603AC 00079 //## begin LinkBase::directlyDependantObjects%3755D91603AC.attr preserve=no public: std::set< unsigned int> {UA} 00080 std::set< unsigned int> directlyDependantObjects; 00081 //## end LinkBase::directlyDependantObjects%3755D91603AC.attr 00082 00083 //## Attribute: indirectlyDependantObjects%3755D93602EA 00084 //## begin LinkBase::indirectlyDependantObjects%3755D93602EA.attr preserve=no public: std::set< unsigned int > {UA} 00085 std::set< unsigned int > indirectlyDependantObjects; 00086 //## end LinkBase::indirectlyDependantObjects%3755D93602EA.attr 00087 00088 //## Attribute: objects%3755E8E50148 00089 //## begin LinkBase::objects%3755E8E50148.attr preserve=no public: std::vector< ObjectBase* > {UA} 00090 std::vector< ObjectBase* > objects; 00091 //## end LinkBase::objects%3755E8E50148.attr 00092 00093 //## Attribute: controlledFrames%377446700387 00094 //## begin LinkBase::controlledFrames%377446700387.attr preserve=no public: std::vector< unsigned int > {UA} 00095 std::vector< unsigned int > controlledFrames; 00096 //## end LinkBase::controlledFrames%377446700387.attr 00097 00098 protected: 00099 //## Constructors (specified) 00100 //## Operation: LinkBase%924391853 00101 LinkBase (FrameManager* frameManager); 00102 00103 //## Operation: LinkBase%925178922 00104 LinkBase (const LinkBase& right); 00105 00106 // Data Members for Class Attributes 00107 00108 //## Attribute: baseFrame%37191CD50302 00109 //## begin LinkBase::baseFrame%37191CD50302.attr preserve=no protected: unsigned int {UA} 00110 unsigned int baseFrame; 00111 //## end LinkBase::baseFrame%37191CD50302.attr 00112 00113 //## Attribute: jointMax%37531F7602D7 00114 //## begin LinkBase::jointMax%37531F7602D7.attr preserve=no protected: double {UA} 00115 double jointMax; 00116 //## end LinkBase::jointMax%37531F7602D7.attr 00117 00118 //## Attribute: jointMin%37531F800097 00119 //## begin LinkBase::jointMin%37531F800097.attr preserve=no protected: double {UA} 00120 double jointMin; 00121 //## end LinkBase::jointMin%37531F800097.attr 00122 00123 //## Attribute: jointWraps%37531F8B02C3 00124 //## begin LinkBase::jointWraps%37531F8B02C3.attr preserve=no protected: bool {UA} 00125 bool jointWraps; 00126 //## end LinkBase::jointWraps%37531F8B02C3.attr 00127 00128 //## Attribute: positioningFrame%39CA7CBD004F 00129 //## begin LinkBase::positioningFrame%39CA7CBD004F.attr preserve=no protected: Matrix4x4 {UA} 00130 Matrix4x4 positioningFrame; 00131 //## end LinkBase::positioningFrame%39CA7CBD004F.attr 00132 00133 // Data Members for Associations 00134 00135 //## Association: Kinematics::<unnamed>%37191A2B0258 00136 //## Role: LinkBase::frameManager%37191A2C005A 00137 //## begin LinkBase::frameManager%37191A2C005A.role preserve=no protected: FrameManager { -> 1RHAN} 00138 FrameManager* frameManager; 00139 //## end LinkBase::frameManager%37191A2C005A.role 00140 00141 private: 00142 // Additional Private Declarations 00143 //## begin LinkBase%3707C4E603CA.private preserve=yes 00144 //## end LinkBase%3707C4E603CA.private 00145 00146 private: //## implementation 00147 // Additional Implementation Declarations 00148 //## begin LinkBase%3707C4E603CA.implementation preserve=yes 00149 //## end LinkBase%3707C4E603CA.implementation 00150 00151 }; 00152 00153 //## begin LinkBase%3707C4E603CA.postscript preserve=yes 00154 std::ostream & operator<<( std::ostream &os, const LinkBase& v ) ; 00155 std::istream & operator>>( std::istream &is, LinkBase& v ) ; 00156 //## end LinkBase%3707C4E603CA.postscript 00157 00158 // Class LinkBase 00159 00160 //## begin module%3707C4E603CA.epilog preserve=yes 00161 //## end module%3707C4E603CA.epilog 00162 00163 00164 #endif