00001 00002 // 00003 // Title : IKJReconfig.h 00004 // Project : OSCAR 00005 // Created : Thu Nov 30 07:52:08 1995 00006 // Author : Chetan Kapoor & Peter March 00007 // Platforms : All 00026 // Access : Company Confidential 00027 // Purpose : 00028 // 00029 //---------------------------------------------------------------------------- 00030 // 00031 // Classes: 00032 // <none> 00033 // 00034 // Global Functions: 00035 // <none> 00036 // 00037 // Global Variables: 00038 // <none> 00039 // 00040 //---------------------------------------------------------------------------- 00041 // 00042 // $Revisions$ 00043 // 00044 // $Log: IKJReconfig.h,v $ 00045 // Revision 1.10 2007/02/09 22:47:56 chetan 00046 // Some methods were not declared virtual 00047 // 00048 // Revision 1.9 2005/03/14 21:53:32 pmarch 00049 // Added to namespace OSCAR and removed "RR" from front of class names. 00050 // 00051 // Revision 1.8 2005/01/11 16:08:10 pmarch 00052 // Set default template parameter to FKJacobian and added additional commenting. 00053 // 00054 // Revision 1.7 2005/01/10 18:54:00 chetan 00055 // Fixed documentation 00056 // 00057 // Revision 1.6 2005/01/10 17:36:00 pmarch 00058 // Added template parameter to IKJacobian-based objects to allow user to supply custom forward kinematics object. 00059 // 00060 // Revision 1.5 2004/07/27 16:43:27 chetan 00061 // Made changes to compile with Warning Level 4 and also under the latest C++ standard. Also made compilable with VC extensions turned off. Mostly carriage returns at the end of a file. 00062 // 00063 // Revision 1.4 2004/07/23 22:20:28 chetan 00064 // Made changes to compile with Warning Level 4 and also under the latest C++ standard 00065 // 00066 // Revision 1.3 2004/05/26 20:15:33 pmarch 00067 // Added /defgroup and /ingroup tags. 00068 // 00069 // Revision 1.2 2004/04/22 18:08:20 eswint 00070 // - Changed constructor of IKJacobian to take const JointVector, reflected in changes to constructors for IKJReconfig & IKJAvoidLimits and IJKAvoidLimits::computeWeightingMatrix 00071 // 00072 // Revision 1.1 2003/08/18 21:04:03 mtisius 00073 // Initial commit of inverse kinematics 00074 // 00075 // 00077 #ifndef IKJReconfig_hpp 00078 #define IKJReconfig_hpp 00079 00080 #include "InverseKinematics/IKJacobian.h" 00081 00083 namespace OSCAR { 00097 template <class JacobianType=FKJacobian> 00098 class IKJReconfig : public IKJacobian<JacobianType> 00099 { 00100 public: 00101 00129 IKJReconfig(const JointVector& initialJointPosition, JacobianType* fkJacobian, 00130 OSCARError& err = DUMMY_ERROR(noError), 00131 EqnSolver* solver = 0, double maxError = 0.1, 00132 double rtScale = 1000.0); 00133 00141 IKJReconfig(const IKJReconfig& rhs); 00142 00162 virtual bool GetJointPosition(const Xform& desiredHandMatrix, JointVector& jointPosition); 00163 00186 virtual bool GetJointPosition(const HandPose& desiredHand, JointVector& jointPosition); 00187 00205 virtual bool GetJointVelocity(const HandPose& handVelocity, JointVector& jointVelocitySolution); 00206 00207 00222 bool SetWeights(const Matrix& W); 00223 00230 void ClearWeights() const; 00231 00232 00240 IKJReconfig& operator=(const IKJReconfig& rhs); 00241 00247 virtual ~IKJReconfig(); 00248 00249 protected: 00250 00251 virtual bool inverse(); 00252 virtual void updateKinematicState(JointVector& jointPosition); 00253 virtual double calculateErrorMagnitude(const Xform& desired, 00254 const Xform* current, 00255 HandPose& error); 00256 bool getJointPosition(const Xform& desiredHandMatrix, JointVector& jointPosition, bool activeFlag); 00257 00258 }; 00259 #include "InverseKinematics/IKJReconfig.ipp" 00260 00261 } 00262 #endif // IKJacobian_hpp 00263 00264 00265
| RRG Homepage | OSCAR Overview | OSCAR Tutorials | Simulations |