MOOS 0.2375
/home/toby/moos-ivp/MOOS-2375-Oct0611/NavigationAndControl/MOOSTaskLib/OrbitTask.h
Go to the documentation of this file.
00001 
00002 //
00003 //   MOOS - Mission Oriented Operating Suite
00004 //
00005 //   A suit of Applications and Libraries for Mobile Robotics Research
00006 //   Copyright (C) 2001-2005 Massachusetts Institute of Technology and
00007 //   Oxford University.
00008 //
00009 //   This software was written by Paul Newman and others
00010 //   at MIT 2001-2002 and Oxford University 2003-2005.
00011 //   email: pnewman@robots.ox.ac.uk.
00012 //
00013 //   This file is part of a  MOOS Basic (Common) Application.
00014 //
00015 //   This program is free software; you can redistribute it and/or
00016 //   modify it under the terms of the GNU General Public License as
00017 //   published by the Free Software Foundation; either version 2 of the
00018 //   License, or (at your option) any later version.
00019 //
00020 //   This program is distributed in the hope that it will be useful,
00021 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00023 //   General Public License for more details.
00024 //
00025 //   You should have received a copy of the GNU General Public License
00026 //   along with this program; if not, write to the Free Software
00027 //   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
00028 //   02111-1307, USA.
00029 //
00031 // OrbitTask.h: interface for the COrbitTask class.
00032 //
00034 
00035 #if !defined(AFX_ORBITTASK_H__A4BB872D_3EF5_422A_83C6_078DF279763B__INCLUDED_)
00036 #define AFX_ORBITTASK_H__A4BB872D_3EF5_422A_83C6_078DF279763B__INCLUDED_
00037 
00038 #if _MSC_VER > 1000
00039 #pragma once
00040 #endif // _MSC_VER > 1000
00041 
00042 #include <MOOSGenLib/MOOSGenLib.h>
00043 #include "MOOSBehaviour.h"
00044 #include <vector>
00045 
00046 #define ORBIT_MAX_TOTAL_REPETITION 50
00047 #define ORBIT_DEFAULT_TOTAL_REPETITION 25
00048 
00049 #define ORBIT_MAX_TOTAL_POSITIONS 30
00050 #define ORBIT_DEFAULT_TOTAL_POSITIONS 6
00051 #define CW      1
00052 #define CCW -1
00053 
00054 class COrbitTask : public CMOOSBehaviour
00055 {
00056 public:
00057     typedef vector<CXYPoint> POSITION_DATA;
00058     POSITION_DATA m_XYPoints;
00059 
00060     double m_dfPositionRadius;
00061 
00062     int m_nRepCounter;
00063     int m_nTotalRepetitions;
00064     int m_nTotalPositions;
00065     int m_nCurrentPosition;
00066     int m_nOrbitDirection;
00067 
00068     bool SetParam(string sParam, string sVal);
00069     COrbitTask();
00070     virtual ~COrbitTask();
00071     virtual bool GetRegistrations(STRING_LIST &List);
00072             bool OnNewMail(MOOSMSG_LIST &NewMail);
00073             bool Run(CPathAction &DesiredAction);
00074     virtual bool RegularMailDelivery(double dfTimeNow);
00075 
00076 
00077     bool m_bInitialised;
00078     bool m_bPositionSet;
00079     bool m_bThrustSet;
00080 
00081     ControlledDOF m_YawDOF;
00082     ControlledDOF m_XDOF;
00083     ControlledDOF m_YDOF;
00084 
00085     ControlledDOF m_XOrbitCenter;
00086     ControlledDOF m_YOrbitCenter;
00087 
00088     double m_dfVicinityRadius;
00089     double m_dfThrust;
00090     string m_sLocation;
00091 
00092 
00093 protected:
00094 
00095 
00096     bool ValidData();
00097     bool Initialise();
00098 
00099 private:
00100     void SetNextPointInOrbit();
00101 };
00102 
00103 #endif // !defined(AFX_ORBITTASK_H__A4BB872D_3EF5_422A_83C6_078DF279763B__INCLUDED_)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines