universalservo.h

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * Copyright (C) 2005 by Robot Group Leipzig * 00003 * martius@informatik.uni-leipzig.de * 00004 * fhesse@informatik.uni-leipzig.de * 00005 * der@informatik.uni-leipzig.de * 00006 * * 00007 * This program is free software; you can redistribute it and/or modify * 00008 * it under the terms of the GNU General Public License as published by * 00009 * the Free Software Foundation; either version 2 of the License, or * 00010 * (at your option) any later version. * 00011 * * 00012 * This program is distributed in the hope that it will be useful, * 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00015 * GNU General Public License for more details. * 00016 * * 00017 * You should have received a copy of the GNU General Public License * 00018 * along with this program; if not, write to the * 00019 * Free Software Foundation, Inc., * 00020 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 00021 * * 00022 * $Log: universalservo.h,v $ 00023 * Revision 1.2 2006/07/14 12:23:32 martius 00024 * selforg becomes HEAD 00025 * 00026 * Revision 1.1.2.2 2006/02/07 15:51:56 martius 00027 * axis, setpower 00028 * 00029 * Revision 1.1.2.1 2005/12/20 17:53:42 martius 00030 * changed to Joints from joint.h 00031 * new servos for universal and hinge2 00032 * 00033 * * 00034 ***************************************************************************/ 00035 #ifndef __UNIVERSALSERVO_H 00036 #define __UNIVERSALSERVO_H 00037 00038 #include "pid.h" 00039 #include "joint.h" 00040 00041 namespace lpzrobots { 00042 00043 /** PID Servo motor for universal joints. 00044 */ 00045 class UniversalServo { 00046 public: 00047 /** min and max values are understood as travel bounds. 00048 power is the power of the servo 00049 */ 00050 UniversalServo(UniversalJoint* joint, double min1, double max1, double power1, 00051 double min2, double max2, double power2); 00052 00053 /** sets the set point of the servo. 00054 Position must be between -1 and 1. It is scaled to fit into min, max 00055 */ 00056 void set(double position1, double position2); 00057 /** returns the position of the hinge in ranges [-1, 1] (scaled by min, max)*/ 00058 double get1(); 00059 /** returns the position of the hinge in ranges [-1, 1] (scaled by min, max)*/ 00060 double get2(); 00061 /** returns the position of the hinge in ranges [-1, 1] (scaled by min, max)*/ 00062 void get(double& p1, double& p2); 00063 00064 /* adjusts the power of the two servos*/ 00065 void setPower(double power1, double power2); 00066 00067 private: 00068 PID pid1; 00069 PID pid2; 00070 double min1; 00071 double max1; 00072 double min2; 00073 double max2; 00074 UniversalJoint* joint; 00075 }; 00076 00077 } 00078 00079 #endif

Generated on Tue Jan 16 02:14:38 2007 for Robotsystem of the Robot Group Leipzig by doxygen 1.3.8