Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages | Examples

ArRobotTypes.cpp

00001 /*
00002 MobileRobots Advanced Robotics Interface for Applications (ARIA)
00003 Copyright (C) 2004, 2005 ActivMedia Robotics LLC
00004 Copyright (C) 2006, 2007 MobileRobots Inc.
00005 
00006      This program is free software; you can redistribute it and/or modify
00007      it under the terms of the GNU General Public License as published by
00008      the Free Software Foundation; either version 2 of the License, or
00009      (at your option) any later version.
00010 
00011      This program is distributed in the hope that it will be useful,
00012      but WITHOUT ANY WARRANTY; without even the implied warranty of
00013      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014      GNU General Public License for more details.
00015 
00016      You should have received a copy of the GNU General Public License
00017      along with this program; if not, write to the Free Software
00018      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020 If you wish to redistribute ARIA under different terms, contact 
00021 MobileRobots for information about a commercial version of ARIA at 
00022 robots@mobilerobots.com or 
00023 MobileRobots Inc, 19 Columbia Drive, Amherst, NH 03031; 800-639-9481
00024 */
00025 
00026 #include "ArExport.h"
00027 #include "ariaOSDef.h"
00028 #include "ArRobotTypes.h"
00029 #include "ArLog.h"
00030 
00033 // Generic robot class
00034 
00035 AREXPORT ArRobotGeneric::ArRobotGeneric(const char *dir)
00036 {
00037 }
00038 
00039 // AmigoBot robot class
00040 
00041 AREXPORT ArRobotAmigo::ArRobotAmigo(const char *dir)
00042 {
00043   sprintf(mySubClass, "amigo");
00044   myRobotRadius = 180;
00045   myRobotDiagonal = 120;
00046   myAbsoluteMaxRVelocity = 300;
00047   myAbsoluteMaxVelocity = 1000;
00048   myDistConvFactor = 0.5083;
00049   myVelConvFactor = 0.6154;
00050   myRangeConvFactor = 1.0;
00051   myDiffConvFactor = 0.011;
00052   myVel2Divisor = 20;
00053   myRobotWidth = 279;
00054   myRobotLength = 330;
00055   myRobotLengthFront = 160;
00056   myRobotLengthRear = 170;
00057 
00058   myNumSonar = 8;
00059   internalSetSonar(0, 76, 100, 90);
00060   internalSetSonar(1, 125, 75, 41);
00061   internalSetSonar(2, 150, 30, 15);
00062   internalSetSonar(3, 150, -30, -15);
00063   internalSetSonar(4, 125, -75, -41);
00064   internalSetSonar(5, 76, -100, -90);
00065   internalSetSonar(6, -140, -58, -145);
00066   internalSetSonar(7, -140, 58, 145);
00067 
00068   myLaserPort[0] = '\0';
00069 }
00070 
00071 // AmigoBot robot class
00072 
00073 AREXPORT ArRobotAmigoSh::ArRobotAmigoSh(const char *dir)
00074 {
00075   sprintf(mySubClass, "amigo-sh");
00076   myRobotRadius = 180;
00077   myRobotDiagonal = 120;
00078   myAbsoluteMaxRVelocity = 300;
00079   myAbsoluteMaxVelocity = 1000;
00080   myDistConvFactor = 1;
00081   myVelConvFactor = 1.0;
00082   myRangeConvFactor = 1.0;
00083   myDiffConvFactor = 0.011;
00084   myVel2Divisor = 20;
00085   myRobotWidth = 279;
00086   myRobotLength = 330;
00087   myRobotLengthFront = 160;
00088   myRobotLengthRear = 170;
00089 
00090   myNumSonar = 8;
00091   internalSetSonar(0, 70, 100, 90);
00092   internalSetSonar(1, 125, 75, 41);
00093   internalSetSonar(2, 144, 30, 15);
00094   internalSetSonar(3, 144, -30, -15);
00095   internalSetSonar(4, 120, -75, -41);
00096   internalSetSonar(5, 70, -100, -90);
00097   internalSetSonar(6, -146, -58, -145);
00098   internalSetSonar(7, -146, 58, 145);
00099 
00100   myLaserPort[0] = '\0';
00101 }
00102 
00103 // P2AT robot class
00104 
00105 AREXPORT ArRobotP2AT::ArRobotP2AT(const char *dir)
00106 {
00107   sprintf(mySubClass, "p2at");
00108   myRobotRadius = 500;
00109   myRobotDiagonal = 120;
00110   myAbsoluteMaxRVelocity = 300; 
00111   myAbsoluteMaxVelocity = 1200;
00112   myDistConvFactor = 1.32;
00113   myRangeConvFactor = 0.268;
00114   myDiffConvFactor = 0.0034;
00115   myRobotWidth = 505;
00116   myRobotLength = 626;
00117   myRobotLengthFront = 313;
00118   myRobotLengthRear = 313;
00119 
00120   myNumSonar = 16;
00121   internalSetSonar(0, 147, 136, 90);
00122   internalSetSonar(1, 193, 119, 50);
00123   internalSetSonar(2, 227, 79, 30);
00124   internalSetSonar(3, 245, 27, 10);
00125   internalSetSonar(4, 245, -27, -10);
00126   internalSetSonar(5, 227, -79, -30);
00127   internalSetSonar(6, 193, -119, -50);
00128   internalSetSonar(7, 147, -136, -90);
00129 
00130   internalSetSonar(8, -144, -136, -90);
00131   internalSetSonar(9, -189, -119, -130);
00132   internalSetSonar(10, -223, -79, -150);
00133   internalSetSonar(11, -241, -27, -170);
00134   internalSetSonar(12, -241, 27, 170);
00135   internalSetSonar(13, -223, 79, 150);
00136   internalSetSonar(14, -189, 119, 130);
00137   internalSetSonar(15, -144, 136, 90);
00138 
00139   myLaserX = 160;
00140   myLaserY = 7;
00141 }
00142 
00143 // P2AT8 robot class
00144 
00145 AREXPORT ArRobotP2AT8::ArRobotP2AT8(const char *dir)
00146 {
00147   sprintf(mySubClass, "p2at8");
00148   myRobotRadius = 500;
00149   myRobotDiagonal = 120;
00150   myAbsoluteMaxRVelocity = 300;
00151   myAbsoluteMaxVelocity = 1200;
00152   myDistConvFactor = 1.32;
00153   myRangeConvFactor = 1.0;
00154   myDiffConvFactor = 0.0034;
00155   myRobotWidth = 505;
00156   myRobotLength = 626;
00157   myRobotLengthFront = 313;
00158   myRobotLengthRear = 313;
00159 
00160   myNumSonar = 16;
00161   internalSetSonar(0, 147, 136, 90);
00162   internalSetSonar(1, 193, 119, 50);
00163   internalSetSonar(2, 227, 79, 30);
00164   internalSetSonar(3, 245, 27, 10);
00165   internalSetSonar(4, 245, -27, -10);
00166   internalSetSonar(5, 227, -79, -30);
00167   internalSetSonar(6, 193, -119, -50);
00168   internalSetSonar(7, 147, -136, -90);
00169 
00170   internalSetSonar(8, -144, -136, -90);
00171   internalSetSonar(9, -189, -119, -130);
00172   internalSetSonar(10, -223, -79, -150);
00173   internalSetSonar(11, -241, -27, -170);
00174   internalSetSonar(12, -241, 27, 170);
00175   internalSetSonar(13, -223, 79, 150);
00176   internalSetSonar(14, -189, 119, 130);
00177   internalSetSonar(15, -144, 136, 90);
00178 
00179   myLaserX = 160;
00180   myLaserY = 7;
00181 }
00182 
00183 
00184 // P2IT robot class
00185 
00186 AREXPORT ArRobotP2IT::ArRobotP2IT(const char *dir)
00187 {
00188   sprintf(mySubClass, "p2it");
00189   myRobotRadius = 500;
00190   myRobotDiagonal = 120;
00191   myAbsoluteMaxRVelocity = 300;
00192   myAbsoluteMaxVelocity = 1200;
00193   myDistConvFactor = 1.136;
00194   myRangeConvFactor = 0.268;
00195   myDiffConvFactor = 0.0032;
00196   myRobotWidth = 505;
00197   myRobotLength = 626;
00198   myRobotLengthFront = 313;
00199   myRobotLengthRear = 313;
00200 
00201   myNumSonar = 16;
00202   internalSetSonar(0, 147, 136, 90);
00203   internalSetSonar(1, 193, 119, 50);
00204   internalSetSonar(2, 227, 79, 30);
00205   internalSetSonar(3, 245, 27, 10);
00206   internalSetSonar(4, 245, -27, -10);
00207   internalSetSonar(5, 227, -79, -30);
00208   internalSetSonar(6, 193, -119, -50);
00209   internalSetSonar(7, 147, -136, -90);
00210 
00211   internalSetSonar(8, -144, -136, -90);
00212   internalSetSonar(9, -189, -119, -130);
00213   internalSetSonar(10, -223, -79, -150);
00214   internalSetSonar(11, -241, -27, -170);
00215   internalSetSonar(12, -241, 27, 170);
00216   internalSetSonar(13, -223, 79, 150);
00217   internalSetSonar(14, -189, 119, 130);
00218   internalSetSonar(15, -144, 136, 90);
00219   myLaserX = 160;
00220   myLaserY = 7;
00221 }
00222 
00223 
00224 // P2DX robot class
00225 
00226 AREXPORT ArRobotP2DX::ArRobotP2DX(const char *dir)
00227 {
00228   sprintf(mySubClass, "p2dx");
00229   myRobotRadius = 250;
00230   myRobotDiagonal = 120;
00231   myAbsoluteMaxRVelocity = 500;
00232   myAbsoluteMaxVelocity = 2200;
00233   myDistConvFactor = 0.84;
00234   myRangeConvFactor = 0.268;
00235   myDiffConvFactor = 0.0056;
00236   myRobotWidth = 425;
00237   myRobotLength = 511;
00238   myRobotLengthFront = 210;
00239   myRobotLengthRear = 301;
00240 
00241   myNumSonar = 16;
00242   internalSetSonar(0, 69, 136, 90);
00243   internalSetSonar(1, 114, 119, 50);
00244   internalSetSonar(2, 148, 78, 30);
00245   internalSetSonar(3, 166, 27, 10);
00246   internalSetSonar(4, 166, -27, -10);
00247   internalSetSonar(5, 148, -78, -30);
00248   internalSetSonar(6, 114, -119, -50);
00249   internalSetSonar(7, 69, -136, -90);
00250 
00251   internalSetSonar(8, -157, -136, -90);
00252   internalSetSonar(9, -203, -119, -130);
00253   internalSetSonar(10, -237, -78, -150);
00254   internalSetSonar(11, -255, -27, -170);
00255   internalSetSonar(12, -255, 27, 170);
00256   internalSetSonar(13, -237, 78, 150);
00257   internalSetSonar(14, -203, 119, 130);
00258   internalSetSonar(15, -157, 136, 90);
00259 
00260   myLaserX = 17;
00261   myLaserY = 8;
00262 }
00263 
00264 // P2DXe robot class
00265 
00266 AREXPORT ArRobotP2DXe::ArRobotP2DXe(const char *dir)
00267 {
00268   sprintf(mySubClass, "p2de");
00269   myRobotRadius = 250;
00270   myRobotDiagonal = 120;
00271   myAbsoluteMaxRVelocity = 500;
00272   myAbsoluteMaxVelocity = 2200;
00273   myDistConvFactor = 0.969;
00274   myRangeConvFactor = 0.268;
00275   myDiffConvFactor = 0.0056;
00276   myRobotWidth = 425;
00277   myRobotLength = 511;
00278   myRobotLengthFront = 210;
00279   myRobotLengthRear = 301;
00280 
00281   myNumSonar = 16;
00282   internalSetSonar(0, 69, 136, 90);
00283   internalSetSonar(1, 114, 119, 50);
00284   internalSetSonar(2, 148, 78, 30);
00285   internalSetSonar(3, 166, 27, 10);
00286   internalSetSonar(4, 166, -27, -10);
00287   internalSetSonar(5, 148, -78, -30);
00288   internalSetSonar(6, 114, -119, -50);
00289   internalSetSonar(7, 69, -136, -90);
00290 
00291   internalSetSonar(8, -157, -136, -90);
00292   internalSetSonar(9, -203, -119, -130);
00293   internalSetSonar(10, -237, -78, -150);
00294   internalSetSonar(11, -255, -27, -170);
00295   internalSetSonar(12, -255, 27, 170);
00296   internalSetSonar(13, -237, 78, 150);
00297   internalSetSonar(14, -203, 119, 130);
00298   internalSetSonar(15, -157, 136, 90);
00299 
00300   myLaserX = 17;
00301   myLaserY = 8;
00302 }
00303 
00304 // P2DF robot class
00305 
00306 AREXPORT ArRobotP2DF::ArRobotP2DF(const char *dir)
00307 {
00308   sprintf(mySubClass, "p2df");
00309   myRobotRadius = 250;
00310   myRobotDiagonal = 120;
00311   myAbsoluteMaxRVelocity = 500;
00312   myAbsoluteMaxVelocity = 2200;
00313   myDistConvFactor = 0.485;
00314   myRangeConvFactor = 0.268;
00315   myDiffConvFactor = .0060;
00316   myRobotWidth = 425;
00317   myRobotLength = 511;
00318   myRobotLengthFront = 210;
00319   myRobotLengthRear = 301;
00320 
00321   myNumSonar = 16;
00322   internalSetSonar(0, 69, 136, 90);
00323   internalSetSonar(1, 114, 119, 50);
00324   internalSetSonar(2, 148, 78, 30);
00325   internalSetSonar(3, 166, 27, 10);
00326   internalSetSonar(4, 166, -27, -10);
00327   internalSetSonar(5, 148, -78, -30);
00328   internalSetSonar(6, 114, -119, -50);
00329   internalSetSonar(7, 69, -136, -90);
00330 
00331   internalSetSonar(8, -157, -136, -90);
00332   internalSetSonar(9, -203, -119, -130);
00333   internalSetSonar(10, -237, -78, -150);
00334   internalSetSonar(11, -255, -27, -170);
00335   internalSetSonar(12, -255, 27, 170);
00336   internalSetSonar(13, -237, 78, 150);
00337   internalSetSonar(14, -203, 119, 130);
00338   internalSetSonar(15, -157, 136, 90);
00339 
00340   myLaserX = 17;
00341   myLaserY = 8;
00342 }
00343 
00344 // P2D8 robot class
00345 
00346 AREXPORT ArRobotP2D8::ArRobotP2D8(const char *dir)
00347 {
00348   sprintf(mySubClass, "p2d8");
00349   myRobotRadius = 250;
00350   myRobotDiagonal = 120;
00351   myAbsoluteMaxRVelocity = 500;
00352   myAbsoluteMaxVelocity = 2200;
00353   myDistConvFactor = 0.485;
00354   myRangeConvFactor = 1.0;
00355   myDiffConvFactor = 0.0056;
00356   myRobotWidth = 425;
00357   myRobotLength = 511;
00358   myRobotLengthFront = 210;
00359   myRobotLengthRear = 301;
00360 
00361   myNumSonar = 16;
00362   internalSetSonar(0, 69, 136, 90);
00363   internalSetSonar(1, 114, 119, 50);
00364   internalSetSonar(2, 148, 78, 30);
00365   internalSetSonar(3, 166, 27, 10);
00366   internalSetSonar(4, 166, -27, -10);
00367   internalSetSonar(5, 148, -78, -30);
00368   internalSetSonar(6, 114, -119, -50);
00369   internalSetSonar(7, 69, -136, -90);
00370 
00371   internalSetSonar(8, -157, -136, -90);
00372   internalSetSonar(9, -203, -119, -130);
00373   internalSetSonar(10, -237, -78, -150);
00374   internalSetSonar(11, -255, -27, -170);
00375   internalSetSonar(12, -255, 27, 170);
00376   internalSetSonar(13, -237, 78, 150);
00377   internalSetSonar(14, -203, 119, 130);
00378   internalSetSonar(15, -157, 136, 90);
00379 
00380   myLaserX = 18;
00381   myLaserY = 0;
00382 }
00383 
00384 
00385 
00386 // P2CE robot class
00387 
00388 AREXPORT ArRobotP2CE::ArRobotP2CE(const char *dir)
00389 {
00390   sprintf(mySubClass, "p2ce");
00391   myRobotRadius = 250;
00392   myRobotDiagonal = 120;
00393   myAbsoluteMaxRVelocity = 500;
00394   myAbsoluteMaxVelocity = 2200;
00395   myDistConvFactor = 0.826;
00396   myRangeConvFactor = 0.268;
00397   myDiffConvFactor = 0.0057;
00398   myRobotWidth = 425;
00399   myRobotLength = 511;
00400   myRobotLengthFront = 210;
00401   myRobotLengthRear = 301;
00402 
00403   myNumSonar = 16;
00404   internalSetSonar(0, 69, 136, 90);
00405   internalSetSonar(1, 114, 119, 50);
00406   internalSetSonar(2, 148, 78, 30);
00407   internalSetSonar(3, 166, 27, 10);
00408   internalSetSonar(4, 166, -27, -10);
00409   internalSetSonar(5, 148, -78, -30);
00410   internalSetSonar(6, 114, -119, -50);
00411   internalSetSonar(7, 69, -136, -90);
00412 
00413   internalSetSonar(8, -157, -136, -90);
00414   internalSetSonar(9, -203, -119, -130);
00415   internalSetSonar(10, -237, -78, -150);
00416   internalSetSonar(11, -255, -27, -170);
00417   internalSetSonar(12, -255, 27, 170);
00418   internalSetSonar(13, -237, 78, 150);
00419   internalSetSonar(14, -203, 119, 130);
00420   internalSetSonar(15, -157, 136, 90);
00421 
00422   myLaserPort[0] = '\0';
00423 }
00424 
00425 
00426 // P2PP robot class
00427 
00428 AREXPORT ArRobotP2PP::ArRobotP2PP(const char *dir)
00429 {
00430   sprintf(mySubClass, "p2pp");
00431   myRobotRadius = 300;
00432   myRobotDiagonal = 120;
00433   myAbsoluteMaxRVelocity = 500;
00434   myAbsoluteMaxVelocity = 2200;
00435   myDistConvFactor = 0.485;
00436   myRangeConvFactor = 0.268;
00437   myDiffConvFactor = 0.0060;
00438   myRobotWidth = 425;
00439   myRobotLength = 513;
00440 
00441   myTableSensingIR = true;
00442   myNewTableSensingIR = false;
00443   myFrontBumpers = true;
00444   myRearBumpers = true;
00445 
00446   myNumSonar = 24;
00447   internalSetSonar(0, 69, 136, 90);
00448   internalSetSonar(1, 114, 119, 50);
00449   internalSetSonar(2, 148, 78, 30);
00450   internalSetSonar(3, 166, 27, 10);
00451   internalSetSonar(4, 166, -27, -10);
00452   internalSetSonar(5, 148, -78, -30);
00453   internalSetSonar(6, 114, -119, -50);
00454   internalSetSonar(7, 69, -136, -90);
00455 
00456   internalSetSonar(8, -20, 136, 90);
00457   internalSetSonar(9, 24, 119, 50);
00458   internalSetSonar(10, 58, 78, 30);
00459   internalSetSonar(11, 77, 27, 10);
00460   internalSetSonar(12, 77, -27, -10);
00461   internalSetSonar(13, 58, -78, -30);
00462   internalSetSonar(14, 24, -119, -50);
00463   internalSetSonar(15, -20, -136, -90);
00464 
00465   internalSetSonar(16, -157, -136, -90);
00466   internalSetSonar(17, -203, -119, -130);
00467   internalSetSonar(18, -237, -78, -150);
00468   internalSetSonar(19, -255, -27, -170);
00469   internalSetSonar(20, -255, 27, 170);
00470   internalSetSonar(21, -237, 78, 150);
00471   internalSetSonar(22, -203, 119, 130);
00472   internalSetSonar(23, -157, 136, 90);
00473 
00474   myLaserX = 16;
00475   myLaserY = 1;
00476 }
00477 
00478 // P2PB robot class
00479 
00480 AREXPORT ArRobotP2PB::ArRobotP2PB(const char *dir)
00481 {
00482   sprintf(mySubClass, "p2pb");
00483   myRobotRadius = 300;
00484   myRobotDiagonal = 120;
00485   myAbsoluteMaxRVelocity = 500;
00486   myAbsoluteMaxVelocity = 2200;
00487   myDistConvFactor = 0.424;
00488   myRangeConvFactor = 0.268;
00489   myDiffConvFactor = 0.0056;
00490   myFrontBumpers = true;
00491   myRearBumpers = true;
00492   myRobotWidth = 425;
00493   myRobotLength = 513;
00494   
00495   myNumSonar = 24;
00496   internalSetSonar(0, 69, 136, 90);
00497   internalSetSonar(1, 114, 119, 50);
00498   internalSetSonar(2, 148, 78, 30);
00499   internalSetSonar(3, 166, 27, 10);
00500   internalSetSonar(4, 166, -27, -10);
00501   internalSetSonar(5, 148, -78, -30);
00502   internalSetSonar(6, 114, -119, -50);
00503   internalSetSonar(7, 69, -136, -90);
00504 
00505   internalSetSonar(8, -20, 136, 90);
00506   internalSetSonar(9, 24, 119, 50);
00507   internalSetSonar(10, 58, 78, 30);
00508   internalSetSonar(11, 77, 27, 10);
00509   internalSetSonar(12, 77, -27, -10);
00510   internalSetSonar(13, 58, -78, -30);
00511   internalSetSonar(14, 24, -119, -50);
00512   internalSetSonar(15, -20, -136, -90);
00513 
00514   internalSetSonar(16, -157, -136, -90);
00515   internalSetSonar(17, -203, -119, -130);
00516   internalSetSonar(18, -237, -78, -150);
00517   internalSetSonar(19, -255, -27, -170);
00518   internalSetSonar(20, -255, 27, 170);
00519   internalSetSonar(21, -237, 78, 150);
00520   internalSetSonar(22, -203, 119, 130);
00521   internalSetSonar(23, -157, 136, 90);
00522 
00523   myLaserX = 17;
00524   myLaserY = 8;
00525 }
00526 
00527 // PerfPB robot class
00528 
00529 AREXPORT ArRobotPerfPB::ArRobotPerfPB(const char *dir)
00530 {
00531   sprintf(mySubClass, "perfpb");
00532   myRobotRadius = 340;
00533   myRobotDiagonal = 120; 
00534   myAbsoluteMaxRVelocity = 500;
00535   myAbsoluteMaxVelocity = 2200;
00536   myDistConvFactor = 0.485;
00537   myRangeConvFactor = 1.0;
00538   myDiffConvFactor = 0.006;
00539 
00540   myRequestIOPackets = true;
00541   myTableSensingIR = true;
00542   myNewTableSensingIR = true;
00543   myFrontBumpers = true;
00544   myRearBumpers = true;
00545   myRobotWidth = 425;
00546   myRobotLength = 513;
00547 
00548   myNumIR = 4;
00549   internalSetIR(0, 1, 2, 333, -233);
00550   internalSetIR(1, 1, 2, 333, 233);
00551   internalSetIR(2, 1, 2, -2, -116);
00552   internalSetIR(3, 1, 2, -2, 116);
00553 
00554   myNumSonar = 32;
00555 
00556   internalSetSonar(0, 69, 136, 90);
00557   internalSetSonar(1, 114, 119, 50);
00558   internalSetSonar(2, 148, 78, 30);
00559   internalSetSonar(3, 166, 27, 10);
00560   internalSetSonar(4, 166, -27, -10);
00561   internalSetSonar(5, 148, -78, -30);
00562   internalSetSonar(6, 114, -119, -50);
00563   internalSetSonar(7, 69, -136, -90);
00564 
00565   internalSetSonar(8, -20, 136, 90);
00566   internalSetSonar(9, 24, 119, 50);
00567   internalSetSonar(10, 58, 78, 30);
00568   internalSetSonar(11, 77, 27, 10);
00569   internalSetSonar(12, 77, -27, -10);
00570   internalSetSonar(13, 58, -78, -30);
00571   internalSetSonar(14, 24, -119, -50);
00572   internalSetSonar(15, -20, -136, -90);
00573 
00574   internalSetSonar(16, -157, -136, -90);
00575   internalSetSonar(17, -203, -119, -130);
00576   internalSetSonar(18, -237, -78, -150);
00577   internalSetSonar(19, -255, -27, -170);
00578   internalSetSonar(20, -255, 27, 170);
00579   internalSetSonar(21, -237, 78, 150);
00580   internalSetSonar(22, -203, 119, 130);
00581   internalSetSonar(23, -157, 136, 90);
00582 
00583   internalSetSonar(24, -191, -136, -90);
00584   internalSetSonar(25, -237, -119, -130);
00585   internalSetSonar(26, -271, -78, -150);
00586   internalSetSonar(27, -290, -27, -170);
00587   internalSetSonar(28, -290, 27, 170);
00588   internalSetSonar(29, -271, 78, 150);
00589   internalSetSonar(30, -237, 119, 130);
00590   internalSetSonar(31, -191, 136, 90);
00591 
00592   myLaserX = 21;
00593   myLaserY = 0;
00594 }
00595 
00596 
00597 
00598 AREXPORT ArRobotPion1M::ArRobotPion1M(const char *dir)
00599 {
00600   sprintf(mySubClass, "pion1m");
00601   myRobotRadius = 220;
00602   myRobotDiagonal = 90;
00603   myAbsoluteMaxRVelocity = 100;
00604   myAbsoluteMaxVelocity = 400;
00605   myHaveMoveCommand = 0;
00606   mySwitchToBaudRate = 0;
00607 
00608   myAngleConvFactor = 0.0061359;
00609   myDistConvFactor = 0.05066;
00610   myVelConvFactor = 2.5332;
00611   myRangeConvFactor = 0.1734;
00612   myDiffConvFactor = 1.0/300.0;
00613   myVel2Divisor = 4;
00614 
00615   myNumFrontBumpers = 0;
00616   myNumRearBumpers = 0;
00617   
00618   myNumSonar = 7;
00619   internalSetSonar(0, 100, 100, 90);
00620   internalSetSonar(1, 120, 80, 30);
00621   internalSetSonar(2, 130, 40, 15);
00622   internalSetSonar(3, 130, 0, 0);
00623   internalSetSonar(4, 130, -40, -15);
00624   internalSetSonar(5, 120, -80, -30);
00625   internalSetSonar(6, 100, -100, -90);
00626 
00627   myLaserPort[0] = '\0';
00628 
00629   myTransVelMax = 400;
00630   myRotVelMax = 100;
00631   mySettableAccsDecs = false;
00632 }
00633 
00634 AREXPORT ArRobotPsos1M::ArRobotPsos1M(const char *dir)
00635 {
00636   sprintf(mySubClass, "psos1m");
00637   myRobotRadius = 220;
00638   myRobotDiagonal = 90;
00639   myAbsoluteMaxRVelocity = 100;
00640   myAbsoluteMaxVelocity = 400;
00641   myHaveMoveCommand = 0;
00642   mySwitchToBaudRate = 0;
00643 
00644   myAngleConvFactor = 0.0061359;
00645   myDistConvFactor = 0.05066;
00646   myVelConvFactor = 2.5332;
00647   myRangeConvFactor = 0.1734;
00648   myDiffConvFactor = 1.0/300.0;
00649   myVel2Divisor = 4;
00650 
00651   myNumFrontBumpers = 0;
00652   myNumRearBumpers = 0;
00653   
00654   myNumSonar = 7;
00655   internalSetSonar(0, 100, 100, 90);
00656   internalSetSonar(1, 120, 80, 30);
00657   internalSetSonar(2, 130, 40, 15);
00658   internalSetSonar(3, 130, 0, 0);
00659   internalSetSonar(4, 130, -40, -15);
00660   internalSetSonar(5, 120, -80, -30);
00661   internalSetSonar(6, 100, -100, -90);
00662 
00663   myLaserPort[0] = '\0';
00664 
00665   myTransVelMax = 400;
00666   myRotVelMax = 100;
00667   mySettableAccsDecs = false;
00668 }
00669 
00670 AREXPORT ArRobotPsos43M::ArRobotPsos43M(const char *dir)
00671 {
00672   sprintf(mySubClass, "psos43m");
00673   myRobotRadius = 220;
00674   myRobotDiagonal = 90;
00675   myAbsoluteMaxRVelocity = 100;
00676   myAbsoluteMaxVelocity = 400;
00677   myHaveMoveCommand = 0;
00678   mySwitchToBaudRate = 0;
00679 
00680   myAngleConvFactor = 0.0061359;
00681   myDistConvFactor = 0.05066;
00682   myVelConvFactor = 2.5332;
00683   myRangeConvFactor = 0.1734;
00684   myDiffConvFactor = 1.0/300.0;
00685   myVel2Divisor = 4;
00686 
00687   myNumFrontBumpers = 0;
00688   myNumRearBumpers = 0;
00689   
00690   myNumSonar = 7;
00691   internalSetSonar(0, 100, 100, 90);
00692   internalSetSonar(1, 120, 80, 30);
00693   internalSetSonar(2, 130, 40, 15);
00694   internalSetSonar(3, 130, 0, 0);
00695   internalSetSonar(4, 130, -40, -15);
00696   internalSetSonar(5, 120, -80, -30);
00697   internalSetSonar(6, 100, -100, -90);
00698 
00699   myLaserPort[0] = '\0';
00700 
00701   myTransVelMax = 400;
00702   myRotVelMax = 100;
00703   mySettableAccsDecs = false;
00704 }
00705 
00706 
00707 // PionAT robot class
00708 
00709 AREXPORT ArRobotPionAT::ArRobotPionAT(const char *dir)
00710 {
00711   sprintf(mySubClass, "pionat");
00712   myRobotRadius = 330;
00713   myRobotDiagonal = 120;
00714   myAbsoluteMaxRVelocity = 100;
00715   myAbsoluteMaxVelocity = 500;
00716   myHaveMoveCommand = 0;
00717   mySwitchToBaudRate = 0;
00718 
00719   myAngleConvFactor = 0.0061359;
00720   myDistConvFactor = 0.07;
00721   myVelConvFactor = 2.5332;
00722   myRangeConvFactor = 0.1734;
00723   myDiffConvFactor = 1.0/300.0;
00724   myVel2Divisor = 4;
00725 
00726   myNumFrontBumpers = 0;
00727   myNumRearBumpers = 0;
00728   
00729   myNumSonar = 7;
00730   internalSetSonar(0, 100, 100, 90);
00731   internalSetSonar(1, 120, 80, 30);
00732   internalSetSonar(2, 130, 40, 15);
00733   internalSetSonar(3, 130, 0, 0);
00734   internalSetSonar(4, 130, -40, -15);
00735   internalSetSonar(5, 120, -80, -30);
00736   internalSetSonar(6, 100, -100, -90);
00737 
00738   myLaserPort[0] = '\0';
00739 
00740   myTransVelMax = 400;
00741   myRotVelMax = 100;
00742   mySettableAccsDecs = false;
00743 }
00744 
00745 
00746 AREXPORT ArRobotPion1X::ArRobotPion1X(const char *dir)
00747 {
00748   sprintf(mySubClass, "pion1x");
00749   myRobotRadius = 220;
00750   myRobotDiagonal = 90;
00751   myAbsoluteMaxRVelocity = 100;
00752   myAbsoluteMaxVelocity = 400;
00753   myHaveMoveCommand = 0;
00754   mySwitchToBaudRate = 0;
00755 
00756   myAngleConvFactor = 0.0061359;
00757   myDistConvFactor = 0.05066;
00758   myVelConvFactor = 2.5332;
00759   myRangeConvFactor = 0.1734;
00760   myDiffConvFactor = 1.0/300.0;
00761   myVel2Divisor = 4;
00762 
00763   myNumFrontBumpers = 0;
00764   myNumRearBumpers = 0;
00765   
00766   myNumSonar = 7;
00767   internalSetSonar(0, 100, 100, 90);
00768   internalSetSonar(1, 120, 80, 30);
00769   internalSetSonar(2, 130, 40, 15);
00770   internalSetSonar(3, 130, 0, 0);
00771   internalSetSonar(4, 130, -40, -15);
00772   internalSetSonar(5, 120, -80, -30);
00773   internalSetSonar(6, 100, -100, -90);
00774 
00775   myLaserPort[0] = '\0';
00776 
00777   myTransVelMax = 400;
00778   myRotVelMax = 100;
00779   mySettableAccsDecs = false;
00780 }
00781 
00782 AREXPORT ArRobotPsos1X::ArRobotPsos1X(const char *dir)
00783 {
00784   sprintf(mySubClass, "psos1x");
00785   myRobotRadius = 220;
00786   myRobotDiagonal = 90;
00787   myAbsoluteMaxRVelocity = 100;
00788   myAbsoluteMaxVelocity = 400;
00789   myHaveMoveCommand = 0;
00790   mySwitchToBaudRate = 0;
00791 
00792   myAngleConvFactor = 0.0061359;
00793   myDistConvFactor = 0.05066;
00794   myVelConvFactor = 2.5332;
00795   myRangeConvFactor = 0.1734;
00796   myDiffConvFactor = 1.0/300.0;
00797   myVel2Divisor = 4;
00798 
00799   myNumFrontBumpers = 0;
00800   myNumRearBumpers = 0;
00801   
00802   myNumSonar = 7;
00803   internalSetSonar(0, 100, 100, 90);
00804   internalSetSonar(1, 120, 80, 30);
00805   internalSetSonar(2, 130, 40, 15);
00806   internalSetSonar(3, 130, 0, 0);
00807   internalSetSonar(4, 130, -40, -15);
00808   internalSetSonar(5, 120, -80, -30);
00809   internalSetSonar(6, 100, -100, -90);
00810 
00811   myLaserPort[0] = '\0';
00812 
00813   myTransVelMax = 400;
00814   myRotVelMax = 100;
00815   mySettableAccsDecs = false;
00816 }
00817 
00818 
00819 AREXPORT ArRobotMapper::ArRobotMapper(const char *dir)
00820 {
00821   sprintf(mySubClass, "mappr");
00822   myRobotRadius = 180;
00823   myRobotDiagonal = 120;
00824   myAbsoluteMaxRVelocity = 0;
00825   myAbsoluteMaxVelocity = 0;
00826   myHaveMoveCommand = false;
00827   myDistConvFactor = 1.00;
00828   //myDistConvFactor = 6.77; // solid foam tires
00829   // myDistConvFactor = 7.39; // pneumatic tires at 40 psi
00830   myRangeConvFactor = 1.0;
00831   myDiffConvFactor = .011;
00832   myGyroScaler = 1.626; // the default used on Pioneers
00833   myVelConvFactor = 0.615400;
00834   mySwitchToBaudRate = 0;
00835   mySettableAccsDecs = false;
00836   mySettableVelMaxes = false;
00837   
00838   myLaserPossessed = true;
00839   myLaserFlipped = false; // the normal configuration
00840   //myLaserFlipped = true; // for low-inverted and high configurations
00841   myLaserPowerControlled = false;
00842   myNumFrontBumpers = 0;
00843   myNumRearBumpers = 0;
00844   myLaserX = 312; // the normal laser low position
00845   //myLaserX = 237; // the high laser position
00846   myLaserY = 0;
00847   myLaserTh = 0;
00848 }
00849 
00850 // PowerBot robot class
00851 
00852 AREXPORT ArRobotPowerBot::ArRobotPowerBot(const char *dir)
00853 {
00854 
00855   sprintf(mySubClass, "powerbot");
00856   myRobotRadius = 550;
00857   myRobotDiagonal = 240; 
00858   myAbsoluteMaxRVelocity = 360;
00859   myAbsoluteMaxVelocity = 2000;
00860   myDistConvFactor = 0.5813;
00861   myRangeConvFactor = 1.0;
00862   myDiffConvFactor = .00373;
00863   myRobotWidth = 680;
00864   myRobotLength = 911;
00865   myRobotLengthFront = 369;
00866   myRobotLengthRear = 542;
00867   
00868   myFrontBumpers = true;
00869   myNumFrontBumpers = 7;
00870   myRearBumpers = true;
00871   myNumRearBumpers = 5;
00872   myNumSonar = 32;
00873   internalSetSonar(0, 152, 278, 90);
00874   internalSetSonar(1, 200, 267, 65);
00875   internalSetSonar(2, 241, 238, 45);
00876   internalSetSonar(3, 274, 200, 35);
00877   internalSetSonar(4, 300, 153, 25);
00878   internalSetSonar(5, 320, 96, 15);
00879   internalSetSonar(6, 332, 33, 5);
00880   internalSetSonar(7, 0, 0, -180);
00881 
00882   internalSetSonar(8, 332, -33, -5);
00883   internalSetSonar(9, 320, -96, -15);
00884   internalSetSonar(10, 300, -153, -25);
00885   internalSetSonar(11, 274, -200, -35);
00886   internalSetSonar(12, 241, -238, -45);
00887   internalSetSonar(13, 200, -267, -65);
00888   internalSetSonar(14, 152, -278, -90);
00889   internalSetSonar(15, 0, 0, -180);
00890 
00891   internalSetSonar(16, -298, -278, -90);
00892   internalSetSonar(17, -347, -267, -115);
00893   internalSetSonar(18, -388, -238, -135);
00894   internalSetSonar(19, -420, -200, -145);
00895   internalSetSonar(20, -447, -153, -155);
00896   internalSetSonar(21, -467, -96, -165);
00897   internalSetSonar(22, -478, -33, -175);
00898   internalSetSonar(23, 0, 0, -180);
00899 
00900   internalSetSonar(24, -478, 33, 175);
00901   internalSetSonar(25, -467, 96, 165);
00902   internalSetSonar(26, -447, 153, 155);
00903   internalSetSonar(27, -420, 200, 145);
00904   internalSetSonar(28, -388, 238, 135);
00905   internalSetSonar(29, -347, 267, 115);
00906   internalSetSonar(30, -298, 278, 90);
00907 
00908   sprintf(myLaserPort, "COM2");
00909   myLaserFlipped = true;
00910   myLaserX = 251;
00911   myLaserY = 0;
00912 }
00913 
00914 AREXPORT ArRobotP2D8Plus::ArRobotP2D8Plus(const char *dir)
00915 {
00916   sprintf(mySubClass, "p2d8+");
00917   myRobotRadius = 250;
00918   myRobotDiagonal = 120;
00919   myAbsoluteMaxRVelocity = 500;
00920   myAbsoluteMaxVelocity = 2200;
00921   myDistConvFactor = 0.485;
00922   myRangeConvFactor = 1.0;
00923   myDiffConvFactor = .0056;
00924   myRobotWidth = 425;
00925   myRobotLength = 511;
00926   myRobotLengthFront = 210;
00927   myRobotLengthRear = 301;
00928 
00929   myNumSonar = 16;
00930   internalSetSonar(0, 69, 136, 90);
00931   internalSetSonar(1, 114, 119, 50);
00932   internalSetSonar(2, 148, 78, 30);
00933   internalSetSonar(3, 166, 27, 10);
00934   internalSetSonar(4, 166, -27, -10);
00935   internalSetSonar(5, 148, -78, -30);
00936   internalSetSonar(6, 114, -119, -50);
00937   internalSetSonar(7, 69, -136, -90);
00938 
00939   internalSetSonar(8, -157, -136, -90);
00940   internalSetSonar(9, -203, -119, -130);
00941   internalSetSonar(10, -237, -78, -150);
00942   internalSetSonar(11, -255, -27, -170);
00943   internalSetSonar(12, -255, 27, 170);
00944   internalSetSonar(13, -237, 78, 150);
00945   internalSetSonar(14, -203, 119, 130);
00946   internalSetSonar(15, -157, 136, 90);
00947 
00948   myLaserX = 18;
00949   myLaserY = 0;
00950 }
00951 
00952 
00953 AREXPORT ArRobotP2AT8Plus::ArRobotP2AT8Plus(const char *dir)
00954 {
00955   sprintf(mySubClass, "p2at8+");
00956   myRobotRadius = 500;
00957   myRobotDiagonal = 120;
00958   myAbsoluteMaxRVelocity = 300;
00959   myAbsoluteMaxVelocity = 1200;
00960   myDistConvFactor = 0.465;
00961   myRangeConvFactor = 1.0;
00962   myDiffConvFactor = .0034;
00963   myRobotWidth = 505;
00964   myRobotLength = 626;
00965   myRobotLengthFront = 313;
00966   myRobotLengthRear = 313;
00967 
00968   myNumSonar = 16;
00969   internalSetSonar(0, 147, 136, 90);
00970   internalSetSonar(1, 193, 119, 50);
00971   internalSetSonar(2, 227, 79, 30);
00972   internalSetSonar(3, 245, 27, 10);
00973   internalSetSonar(4, 245, -27, -10);
00974   internalSetSonar(5, 227, -79, -30);
00975   internalSetSonar(6, 193, -119, -50);
00976   internalSetSonar(7, 147, -136, -90);
00977 
00978   internalSetSonar(8, -144, -136, -90);
00979   internalSetSonar(9, -189, -119, -130);
00980   internalSetSonar(10, -223, -79, -150);
00981   internalSetSonar(11, -241, -27, -170);
00982   internalSetSonar(12, -241, 27, 170);
00983   internalSetSonar(13, -223, 79, 150);
00984   internalSetSonar(14, -189, 119, 130);
00985   internalSetSonar(15, -144, 136, 90);
00986 
00987   myLaserX = 160;
00988   myLaserY = 7;
00989 }
00990 
00991 AREXPORT ArRobotP3AT::ArRobotP3AT(const char *dir)
00992 {
00993   sprintf(mySubClass, "p3at");
00994   myRobotRadius = 500;
00995   myRobotDiagonal = 120;
00996   myAbsoluteMaxRVelocity = 300;
00997   myAbsoluteMaxVelocity = 1200;
00998   myDistConvFactor = 0.465;
00999   myRangeConvFactor = 1.0;
01000   myDiffConvFactor = .0034;
01001   myRobotWidth = 505;
01002   myRobotLength = 626;
01003   myRobotLengthFront = 313;
01004   myRobotLengthRear = 313;
01005 
01006   myNumSonar = 16;
01007   internalSetSonar(0, 147, 136, 90);
01008   internalSetSonar(1, 193, 119, 50);
01009   internalSetSonar(2, 227, 79, 30);
01010   internalSetSonar(3, 245, 27, 10);
01011   internalSetSonar(4, 245, -27, -10);
01012   internalSetSonar(5, 227, -79, -30);
01013   internalSetSonar(6, 193, -119, -50);
01014   internalSetSonar(7, 147, -136, -90);
01015 
01016   internalSetSonar(8, -144, -136, -90);
01017   internalSetSonar(9, -189, -119, -130);
01018   internalSetSonar(10, -223, -79, -150);
01019   internalSetSonar(11, -241, -27, -170);
01020   internalSetSonar(12, -241, 27, 170);
01021   internalSetSonar(13, -223, 79, 150);
01022   internalSetSonar(14, -189, 119, 130);
01023   internalSetSonar(15, -144, 136, 90);
01024 
01025   myLaserX = 160;
01026   myLaserY = 0;
01027 }
01028 
01029 
01030 AREXPORT ArRobotP3DX::ArRobotP3DX(const char *dir)
01031 {
01032   sprintf(mySubClass, "p3dx");
01033   myRobotRadius = 250;
01034   myRobotDiagonal = 120;
01035   myAbsoluteMaxRVelocity = 500;
01036   myAbsoluteMaxVelocity = 2200;
01037   myDistConvFactor = 0.485;
01038   myRangeConvFactor = 1.0;
01039   myDiffConvFactor = 0.0056;
01040   myRobotWidth = 425;
01041   myRobotLength = 511;
01042   myRobotLengthFront = 210;
01043   myRobotLengthRear = 301;
01044 
01045   myNumSonar = 16;
01046   internalSetSonar(0, 69, 136, 90);
01047   internalSetSonar(1, 114, 119, 50);
01048   internalSetSonar(2, 148, 78, 30);
01049   internalSetSonar(3, 166, 27, 10);
01050   internalSetSonar(4, 166, -27, -10);
01051   internalSetSonar(5, 148, -78, -30);
01052   internalSetSonar(6, 114, -119, -50);
01053   internalSetSonar(7, 69, -136, -90);
01054 
01055   internalSetSonar(8, -157, -136, -90);
01056   internalSetSonar(9, -203, -119, -130);
01057   internalSetSonar(10, -237, -78, -150);
01058   internalSetSonar(11, -255, -27, -170);
01059   internalSetSonar(12, -255, 27, 170);
01060   internalSetSonar(13, -237, 78, 150);
01061   internalSetSonar(14, -203, 119, 130);
01062   internalSetSonar(15, -157, 136, 90);
01063 
01064 
01065   myLaserX = 18;
01066   myLaserY = 0;
01067 }
01068 
01069 
01070 AREXPORT ArRobotPerfPBPlus::ArRobotPerfPBPlus(const char *dir)
01071 {
01072   sprintf(mySubClass, "perfpb+");
01073   myRobotRadius = 340;
01074   myRobotDiagonal = 120;
01075   myAbsoluteMaxRVelocity = 500;
01076   myAbsoluteMaxVelocity = 2200;
01077   myRequestIOPackets = true;
01078   myDistConvFactor = 0.485;
01079   myRangeConvFactor = 1.0;
01080   myDiffConvFactor = .006;
01081   myRobotWidth = 425;
01082   myRobotLength = 511;
01083   myRobotLengthFront = 210;
01084   myRobotLengthRear = 301;
01085   
01086   myRequestIOPackets = true;
01087   myTableSensingIR = true;
01088   myNewTableSensingIR = true;
01089   myFrontBumpers = true;
01090   myRearBumpers = true;
01091 
01092   myNumIR = 4;
01093   internalSetIR(0, 1, 2, 333, -233);
01094   internalSetIR(1, 1, 2, 333, 233);
01095   internalSetIR(2, 1, 2, -2, -116);
01096   internalSetIR(3, 1, 2, -2, 116);
01097 
01098   myNumSonar = 32;
01099   internalSetSonar(0, 69, 136, 90);
01100   internalSetSonar(1, 114, 119, 50);
01101   internalSetSonar(2, 148, 78, 30);
01102   internalSetSonar(3, 166, 27, 10);
01103   internalSetSonar(4, 166, -27, -10);
01104   internalSetSonar(5, 148, -78, -30);
01105   internalSetSonar(6, 114, -119, -50);
01106   internalSetSonar(7, 69, -136, -90);
01107 
01108   internalSetSonar(8, -20, 136, 90);
01109   internalSetSonar(9, 24, 119, 50);
01110   internalSetSonar(10, 58, 78, 30);
01111   internalSetSonar(11, 77, 27, 10);
01112   internalSetSonar(12, 77, -27, -10);
01113   internalSetSonar(13, 58, -78, -30);
01114   internalSetSonar(14, 24, -119, -50);
01115   internalSetSonar(15, -20, -136, -90);
01116 
01117   internalSetSonar(16, -157, -136, -90);
01118   internalSetSonar(17, -203, -119, -130);
01119   internalSetSonar(18, -237, -78, -150);
01120   internalSetSonar(19, -255, -27, -170);
01121   internalSetSonar(20, -255, 27, 170);
01122   internalSetSonar(21, -237, 78, 150);
01123   internalSetSonar(22, -203, 119, 130);
01124   internalSetSonar(23, -157, 136, 90);
01125 
01126   internalSetSonar(24, -191, -136, -90);
01127   internalSetSonar(25, -237, -119, -130);
01128   internalSetSonar(26, -271, -78, -150);
01129   internalSetSonar(27, -290, -27, -170);
01130   internalSetSonar(28, -290, 27, 170);
01131   internalSetSonar(29, -271, 78, 150);
01132   internalSetSonar(30, -237, 119, 130);
01133   internalSetSonar(31, -191, 136, 90);
01134 
01135 
01136   myLaserX = 21;
01137   myLaserY = 0;
01138 }
01139 
01140 
01141 AREXPORT ArRobotP3DXSH::ArRobotP3DXSH(const char *dir)
01142 {
01143   sprintf(mySubClass, "p3dx-sh");
01144   myRobotRadius = 250;
01145   myRobotDiagonal = 120;
01146   myAbsoluteMaxRVelocity = 500;
01147   myAbsoluteMaxVelocity = 2200;
01148   myDistConvFactor = 1.0;
01149   myRangeConvFactor = 1.0;
01150   myDiffConvFactor = 0.0056;
01151   myRobotWidth = 425;
01152   myRobotLength = 511;
01153   myRobotLengthFront = 210;
01154   myRobotLengthRear = 301;
01155 
01156   myNumSonar = 16;
01157   internalSetSonar(0, 69, 136, 90);
01158   internalSetSonar(1, 114, 119, 50);
01159   internalSetSonar(2, 148, 78, 30);
01160   internalSetSonar(3, 166, 27, 10);
01161   internalSetSonar(4, 166, -27, -10);
01162   internalSetSonar(5, 148, -78, -30);
01163   internalSetSonar(6, 114, -119, -50);
01164   internalSetSonar(7, 69, -136, -90);
01165 
01166   internalSetSonar(8, -157, -136, -90);
01167   internalSetSonar(9, -203, -119, -130);
01168   internalSetSonar(10, -237, -78, -150);
01169   internalSetSonar(11, -255, -27, -170);
01170   internalSetSonar(12, -255, 27, 170);
01171   internalSetSonar(13, -237, 78, 150);
01172   internalSetSonar(14, -203, 119, 130);
01173   internalSetSonar(15, -157, 136, 90);
01174 
01175   myLaserX = 18;
01176   myLaserY = 0;
01177 }
01178 
01179 
01180 AREXPORT ArRobotP3ATSH::ArRobotP3ATSH(const char *dir)
01181 {
01182   sprintf(mySubClass, "p3at-sh");
01183   myRobotRadius = 500;
01184   myRobotDiagonal = 120;
01185   myAbsoluteMaxRVelocity = 300;
01186   myAbsoluteMaxVelocity = 1200;
01187   myDistConvFactor = 1.0;
01188   myRangeConvFactor = 1.0;
01189   myDiffConvFactor = .0034;
01190   myRobotWidth = 505;
01191   myRobotLength = 626;
01192   myRobotLengthFront = 313;
01193   myRobotLengthRear = 313;
01194 
01195   myNumSonar = 16;
01196   internalSetSonar(0, 147, 136, 90);
01197   internalSetSonar(1, 193, 119, 50);
01198   internalSetSonar(2, 227, 79, 30);
01199   internalSetSonar(3, 245, 27, 10);
01200   internalSetSonar(4, 245, -27, -10);
01201   internalSetSonar(5, 227, -79, -30);
01202   internalSetSonar(6, 193, -119, -50);
01203   internalSetSonar(7, 147, -136, -90);
01204 
01205   internalSetSonar(8, -144, -136, -90);
01206   internalSetSonar(9, -189, -119, -130);
01207   internalSetSonar(10, -223, -79, -150);
01208   internalSetSonar(11, -241, -27, -170);
01209   internalSetSonar(12, -241, 27, 170);
01210   internalSetSonar(13, -223, 79, 150);
01211   internalSetSonar(14, -189, 119, 130);
01212   internalSetSonar(15, -144, 136, 90);
01213 
01214   myLaserX = 125;
01215   myLaserY = 0;
01216 }
01217 
01218 
01219 AREXPORT ArRobotP3ATIWSH::ArRobotP3ATIWSH(const char *dir)
01220 {
01221   sprintf(mySubClass, "p3atiw-sh");
01222   myRobotRadius = 500;
01223   myRobotDiagonal = 120;
01224   myAbsoluteMaxRVelocity = 300;
01225   myAbsoluteMaxVelocity = 1200;
01226   myDistConvFactor = 1.0;
01227   myRangeConvFactor = 1.0;
01228   myDiffConvFactor = .0034;
01229   myRobotWidth = 490;
01230   myRobotLength = 626;
01231   myRobotLengthFront = 313;
01232   myRobotLengthRear = 313;
01233 
01234   myNumSonar = 16;
01235   internalSetSonar(0, 147, 136, 90);
01236   internalSetSonar(1, 193, 119, 50);
01237   internalSetSonar(2, 227, 79, 30);
01238   internalSetSonar(3, 245, 27, 10);
01239   internalSetSonar(4, 245, -27, -10);
01240   internalSetSonar(5, 227, -79, -30);
01241   internalSetSonar(6, 193, -119, -50);
01242   internalSetSonar(7, 147, -136, -90);
01243 
01244   internalSetSonar(8, -144, -136, -90);
01245   internalSetSonar(9, -189, -119, -130);
01246   internalSetSonar(10, -223, -79, -150);
01247   internalSetSonar(11, -241, -27, -170);
01248   internalSetSonar(12, -241, 27, 170);
01249   internalSetSonar(13, -223, 79, 150);
01250   internalSetSonar(14, -189, 119, 130);
01251   internalSetSonar(15, -144, 136, 90);
01252 
01253   myLaserX = 125;
01254   myLaserY = 0;
01255 }
01256 
01257 
01258 AREXPORT ArRobotPatrolBotSH::ArRobotPatrolBotSH(const char *dir)
01259 {
01260   sprintf(mySubClass, "patrolbot-sh");
01261   myRobotRadius = 250;
01262   myRobotDiagonal = 120;
01263   myAbsoluteMaxRVelocity = 500;
01264   myAbsoluteMaxVelocity = 2200;
01265   myDistConvFactor = 1.0;
01266   myRangeConvFactor = 1.0;
01267   myDiffConvFactor = 0.0056;
01268   myRobotWidth = 425;
01269   myRobotLength = 510;
01270   myRobotLengthFront = 255;
01271   myRobotLengthRear = 255;
01272 
01273   myFrontBumpers = true;
01274   myNumFrontBumpers = 6;
01275   myRearBumpers = true;
01276   myNumRearBumpers = 6;
01277 
01278   myNumSonar = 16;
01279   internalSetSonar(0, 83, 229, 90);
01280   internalSetSonar(1, 169, 202, 55);
01281   internalSetSonar(2, 232, 134, 30);
01282   internalSetSonar(3, 263, 46, 10);
01283   internalSetSonar(4, 263, -46, -10);
01284   internalSetSonar(5, 232, -134, -30);
01285   internalSetSonar(6, 169, -202, -55);
01286   internalSetSonar(7, 83, -229, -90);
01287 
01288   internalSetSonar(8, -83, -229, -90);
01289   internalSetSonar(9, -169, -202, -125);
01290   internalSetSonar(10, -232, -134, -150);
01291   internalSetSonar(11, -263, -46, -170);
01292   internalSetSonar(12, -263, 46, 170);
01293   internalSetSonar(13, -232, 134, 150);
01294   internalSetSonar(14, -169, 202, 125);
01295   internalSetSonar(15, -83, 229, 90);
01296 
01297   myLaserFlipped = true;
01298   myLaserPowerControlled = true;
01299   myLaserX = 37;
01300   myLaserY = 0;
01301   myLaserTh = 0.0;
01302   strcpy(myLaserIgnore, "73 74 75 -73 -74 -75");
01303 
01304   myRequestIOPackets = true;
01305 }
01306 
01307 
01308 AREXPORT ArRobotPeopleBotSH::ArRobotPeopleBotSH(const char *dir)
01309 {
01310   sprintf(mySubClass, "peoplebot-sh");
01311   myRobotRadius = 340;
01312   myRobotDiagonal = 120;
01313   myAbsoluteMaxRVelocity = 500;
01314   myAbsoluteMaxVelocity = 2200;
01315   myRequestIOPackets = true;
01316   myDistConvFactor = 1.0;
01317   myRangeConvFactor = 1.0;
01318   myDiffConvFactor = .006;
01319   myRobotWidth = 425;
01320   myRobotLength = 513;
01321   
01322   myRequestIOPackets = true;
01323   myTableSensingIR = true;
01324   myNewTableSensingIR = true;
01325   myFrontBumpers = true;
01326   myRearBumpers = true;
01327 
01328   myNumIR = 4;
01329   internalSetIR(0, 1, 2, 333, -233);
01330   internalSetIR(1, 1, 2, 333, 233);
01331   internalSetIR(2, 1, 2, -2, -116);
01332   internalSetIR(3, 1, 2, -2, 116);
01333 
01334   myNumSonar = 32;
01335   internalSetSonar(0, 69, 136, 90);
01336   internalSetSonar(1, 114, 119, 50);
01337   internalSetSonar(2, 148, 78, 30);
01338   internalSetSonar(3, 166, 27, 10);
01339   internalSetSonar(4, 166, -27, -10);
01340   internalSetSonar(5, 148, -78, -30);
01341   internalSetSonar(6, 114, -119, -50);
01342   internalSetSonar(7, 69, -136, -90);
01343 
01344   internalSetSonar(8, -157, -136, -90);
01345   internalSetSonar(9, -203, -119, -130);
01346   internalSetSonar(10, -237, -78, -150);
01347   internalSetSonar(11, -255, -27, -170);
01348   internalSetSonar(12, -255, 27, 170);
01349   internalSetSonar(13, -237, 78, 150);
01350   internalSetSonar(14, -203, 119, 130);
01351   internalSetSonar(15, -157, 136, 90);
01352 
01353   internalSetSonar(16, -20, 136, 90);
01354   internalSetSonar(17, 24, 119, 50);
01355   internalSetSonar(18, 58, 78, 30);
01356   internalSetSonar(19, 77, 27, 10);
01357   internalSetSonar(20, 77, -27, -10);
01358   internalSetSonar(21, 58, -78, -30);
01359   internalSetSonar(22, 24, -119, -50);
01360   internalSetSonar(23, -20, -136, -90);
01361 
01362   internalSetSonar(24, -191, -136, -90);
01363   internalSetSonar(25, -237, -119, -130);
01364   internalSetSonar(26, -271, -78, -150);
01365   internalSetSonar(27, -290, -27, -170);
01366   internalSetSonar(28, -290, 27, 170);
01367   internalSetSonar(29, -271, 78, 150);
01368   internalSetSonar(30, -237, 119, 130);
01369   internalSetSonar(31, -191, 136, 90);
01370 
01371   myLaserX = 21;
01372   myLaserY = 0;
01373 }
01374 
01375 
01376 AREXPORT ArRobotPowerBotSH::ArRobotPowerBotSH(const char *dir)
01377 {
01378 
01379   sprintf(mySubClass, "powerbot-sh");
01380   myRobotRadius = 550;
01381   myRobotDiagonal = 240; 
01382   myAbsoluteMaxRVelocity = 360;
01383   myAbsoluteMaxVelocity = 2000;
01384   myDistConvFactor = 1.0;
01385   myRangeConvFactor = 1.0;
01386   myDiffConvFactor = .00373;
01387   myRobotWidth = 680;
01388   myRobotLength = 911;
01389   myRobotLengthFront = 369;
01390   myRobotLengthRear = 542;
01391 
01392   myFrontBumpers = true;
01393   myNumFrontBumpers = 7;
01394   myRearBumpers = true;
01395   myNumRearBumpers = 5;
01396   myNumSonar = 32;
01397   internalSetSonar(0, 152, 278, 90);
01398   internalSetSonar(1, 200, 267, 65);
01399   internalSetSonar(2, 241, 238, 45);
01400   internalSetSonar(3, 274, 200, 35);
01401   internalSetSonar(4, 300, 153, 25);
01402   internalSetSonar(5, 320, 96, 15);
01403   internalSetSonar(6, 332, 33, 5);
01404   internalSetSonar(7, 0, 0, -180);
01405 
01406   internalSetSonar(8, 332, -33, -5);
01407   internalSetSonar(9, 320, -96, -15);
01408   internalSetSonar(10, 300, -153, -25);
01409   internalSetSonar(11, 274, -200, -35);
01410   internalSetSonar(12, 241, -238, -45);
01411   internalSetSonar(13, 200, -267, -65);
01412   internalSetSonar(14, 152, -278, -90);
01413   internalSetSonar(15, 0, 0, -180);
01414 
01415   internalSetSonar(16, -298, -278, -90);
01416   internalSetSonar(17, -347, -267, -115);
01417   internalSetSonar(18, -388, -238, -135);
01418   internalSetSonar(19, -420, -200, -145);
01419   internalSetSonar(20, -447, -153, -155);
01420   internalSetSonar(21, -467, -96, -165);
01421   internalSetSonar(22, -478, -33, -175);
01422   internalSetSonar(23, 0, 0, -180);
01423 
01424   internalSetSonar(24, -478, 33, 175);
01425   internalSetSonar(25, -467, 96, 165);
01426   internalSetSonar(26, -447, 153, 155);
01427   internalSetSonar(27, -420, 200, 145);
01428   internalSetSonar(28, -388, 238, 135);
01429   internalSetSonar(29, -347, 267, 115);
01430   internalSetSonar(30, -298, 278, 90);
01431   internalSetSonar(31, 0, 0, -180);
01432 
01433   sprintf(myLaserPort, "COM2");
01434   myLaserFlipped = true;
01435   myLaserX = 251;
01436   myLaserY = 0;
01437 }
01438 
01439 
01440 AREXPORT ArRobotWheelchairSH::ArRobotWheelchairSH(const char *dir)
01441 {
01442   sprintf(mySubClass, "wheelchair-sh");
01443   myRobotRadius = 550;
01444   myRobotDiagonal = 300; 
01445   myAbsoluteMaxRVelocity = 360;
01446   myAbsoluteMaxVelocity = 2000;
01447   myDistConvFactor = 1.0;
01448   myRangeConvFactor = 1.0;
01449   myDiffConvFactor = .00373;
01450   myRobotWidth = 680;
01451   myRobotLength = 1340;
01452   
01453   myFrontBumpers = true;
01454   myNumFrontBumpers = 4;
01455   myRearBumpers = true;
01456   myNumRearBumpers = 3;
01457   myNumSonar = 0;
01458 
01459   sprintf(myLaserPort, "COM2");
01460   myLaserPossessed = true;
01461   myLaserFlipped = true;
01462   myLaserPowerControlled = true;
01463   myLaserX = -418;
01464   myLaserY = 0;
01465 
01466   mySettableAccsDecs = true;
01467   mySettableVelMaxes = false;
01468   myTransVelMax = 0;
01469   myRotVelMax = 0;
01470   myTransAccel = 0;
01471   myTransDecel = 0;
01472   myRotAccel = 0;
01473   myRotDecel = 0;
01474 }
01475 

Generated on Tue Feb 20 10:51:41 2007 for Aria by  doxygen 1.4.0