EyeTrackerEyeLink.H

Go to the documentation of this file.
00001 /*!@file Psycho/EyeTrackerEyeLink.H Abstraction for an EyeLink eye tracker */
00002 
00003 // //////////////////////////////////////////////////////////////////// //
00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005   //
00005 // by the University of Southern California (USC) and the iLab at USC.  //
00006 // See http://iLab.usc.edu for information about this project.          //
00007 // //////////////////////////////////////////////////////////////////// //
00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected //
00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency //
00010 // in Visual Environments, and Applications'' by Christof Koch and      //
00011 // Laurent Itti, California Institute of Technology, 2001 (patent       //
00012 // pending; application number 09/912,225 filed July 23, 2001; see      //
00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status).     //
00014 // //////////////////////////////////////////////////////////////////// //
00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit.       //
00016 //                                                                      //
00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can   //
00018 // redistribute it and/or modify it under the terms of the GNU General  //
00019 // Public License as published by the Free Software Foundation; either  //
00020 // version 2 of the License, or (at your option) any later version.     //
00021 //                                                                      //
00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope  //
00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the   //
00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
00025 // PURPOSE.  See the GNU General Public License for more details.       //
00026 //                                                                      //
00027 // You should have received a copy of the GNU General Public License    //
00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write   //
00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,   //
00030 // Boston, MA 02111-1307 USA.                                           //
00031 // //////////////////////////////////////////////////////////////////// //
00032 //
00033 // Primary maintainer for this file: Laurent Itti <itti@usc.edu>
00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Psycho/EyeTrackerEyeLink.H $
00035 // $Id: EyeTrackerEyeLink.H 14176 2010-10-28 04:28:19Z ilink $
00036 //
00037 
00038 #ifndef PSYCHO_EYETRACKEREYELINK_H_DEFINED
00039 #define PSYCHO_EYETRACKEREYELINK_H_DEFINED
00040 
00041 #include "Psycho/EyeTracker.H"
00042 #include "Component/ModelParam.H"
00043 
00044 //! Interface to an EyeLink-II eye-tracker
00045 /*! This requires the EyeLink development kit for Linux, available
00046   only from SR-Research to select registered users. NOTE: If you
00047   encounter an error message like "Cannot open connection, check
00048   TCP/IP settings", this may be due to the way the eyelink library
00049   figures out your host's IP address, which is through resolving your
00050   hostname (nasty!). Since typically you will have two ethernet cards
00051   in your box, one connected to the EyeLink tracker (100.1.1.1) via a
00052   crossover cable, you need your hostname to be associated with your
00053   IP on that network (e.g., your IP will typically be 100.1.1.2).
00054   Check your /etc/nsswich.conf and /etc/hosts to make sure this is the
00055   case. */
00056 class EyeTrackerEyeLink : public EyeTracker
00057 {
00058 public:
00059   //! Constructor
00060   EyeTrackerEyeLink(OptionManager& mgr,
00061                     const std::string& descrName = "Eye Tracker EyeLink",
00062                     const std::string& tagName = "EyeTrackerEyeLink");
00063   //! Destructor
00064   virtual ~EyeTrackerEyeLink();
00065 
00066   //! Calibrate the tracker, full calibration
00067   /*! Here we do a 9-point calibration. */
00068   virtual void calibrate(nub::soft_ref<PsychoDisplay> d);
00069 
00070         virtual void calibrate2(nub::soft_ref<PsychoDisplay> d);
00071 
00072         virtual void setBackgroundColor(nub::soft_ref<PsychoDisplay> d); 
00073 
00074   //! Calibrate the tracker, quick re-calibration
00075   /*! Since there is no quick calibration for ISCAN, this is like a
00076     full calibration. */
00077   virtual void recalibrate(nub::soft_ref<PsychoDisplay> d, int repeats);
00078 
00079   //! Open SDL from eyelink library
00080   virtual void openSDL();
00081 
00082   //! Close SDL from eyelink library
00083   virtual void closeSDL();
00084 
00085   //! Is the subject fixating?
00086   /*! TODO: implement this functionality*/
00087   virtual bool isFixating();
00088 
00089   //! Is the subject in a saccade?
00090   /*! TODO: implement this functionality*/
00091   virtual bool isSaccade();
00092 
00093   //! Get current eye position
00094   virtual Point2D<int> getEyePos() const;
00095 
00096   //! Get current fixation position (eliminates blink, saccades, etc.)
00097   virtual Point2D<int> getFixationPos() const;
00098 
00099         //! mannual drift correction
00100         virtual void manualDriftCorrection(Point2D<double> eyepos, Point2D<double> targetpos);
00101 
00102   //!Get the calibration set
00103   virtual CalibrationTransform::Data getCalibrationSet(nub::soft_ref<PsychoDisplay> d) const;
00104 
00105 protected:
00106   OModelParam<std::string> itsEDFfname;
00107   OModelParam<Dims> itsDims;      //!< SDL screen resolution
00108 
00109         //! Start the tracker
00110   virtual void startTracking();
00111 
00112   //! Stop the tracker
00113   virtual void stopTracking();
00114 
00115   virtual void start1(); //!< get started
00116   virtual void stop1();  //!< get stopped
00117 };
00118 
00119 
00120 // ######################################################################
00121 /* So things look consistent in everyone's emacs... */
00122 /* Local Variables: */
00123 /* mode: c++ */
00124 /* indent-tabs-mode: nil */
00125 /* End: */
00126 
00127 #endif // PSYCHO_EYETRACKEREYELINK_H_DEFINED
Generated on Sun May 8 08:41:13 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3