00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef GEOMETRY_DRIVER_H
00023 #define GEOMETRY_DRIVER_H
00024 #include <sine.h>
00025 #include <primitive_driver.h>
00026 #include <point.h>
00027 #include <opid.h>
00029
00050 class Geometry_Driver : public Primitive_Driver
00051 {
00052 public:
00053 friend void task_local_vector_driver(void*);
00054
00055
00057
00070 Geometry_Driver(IOLINE Pencoder, IOLINE Sencoder, IOLINE f,PORT ,IOLINE tpu,
00071 IOLINE Pencoder,IOLINE Sencoder, IOLINE rf,PORT rfp, IOLINE rtpu, uint8 subclass=0);
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 void travel(MOTION idir,ENCODER_TYPE s, ENCODER_TYPE radius, FIXED_RADIAN idirection, FIXED_RADIAN c);
00086 void travel(MOTION idir,ENCODER_TYPE EU_s, const point& P2, FIXED_RADIAN Fidirection);
00088 void travel(MOTION idir,ENCODER_TYPE EU_s, MILLIMETER idistance);
00090 void travel(MOTION idir);
00092 void travel(MOTION idir, SPEED speed, const point& P1, const point& P2, int weight);
00094
00097 void heading(ENCODER_TYPE s, FIXED_RADIAN destination);
00099
00100 void keep_straight(void);
00102 int offset(void);
00104 DEGREE face(void);
00105
00106
00107
00109 void linear_path(int&, int&,oPID&,bool&,bool&);
00111 bool complete();
00113 void control_points(const point& p1, const point& p2);
00115 #ifdef DOS
00116
00117 static MILLIMETER distance(void);
00118 static MILLIMETER get_actual_speed(void);
00119 static MILLIMETER x0();
00120 static MILLIMETER y0();
00121 static MILLIMETER current_distance();
00122 static RADIAN get_stop(void);
00123 static MILLIMETER get_global_speed(void);
00124
00125 void WSwrite(void);
00126 int Label;
00127 protected:
00128 ENCODER_TYPE EU_distance;
00129 #endif
00130 FIXED_RADIAN F_STOP;
00131 bool _complete;
00132 ENCODER_TYPE EU_global_speed;
00133 MILLIMETER MM_current_distance;
00134 point _p1;
00135 point _p2;
00136 float _weight;
00137 FIXED_METER FM_offset;
00138 ENCODER_TYPE EU_centerx;
00139 ENCODER_TYPE EU_centery;
00140 ENCODER_TYPE EU_distance2go;
00141 Geometry_Driver(void);
00142 FIXED_RADIAN F_Tradian;
00143 ENCODER_TYPE EU_x0;
00144 ENCODER_TYPE EU_y0;
00145 static foo2 callback(void);
00146 private:
00147 void prestuff(ENCODER_TYPE EU_S);
00148 void poststuff(MOTION idir, ENCODER_TYPE EU_left, ENCODER_TYPE EU_right);
00149 };
00151 typedef Geometry_Driver Local_Vector_Driver;
00152 #endif