Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

IKJReconfig.h

Go to the documentation of this file.
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