Homepage Demos Overview Downloads Tutorials Reference
Credits
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members | Related Pages | Search

Configuration.h

Go to the documentation of this file.
00001 /*
00002  * Configuration.h -- Contains configuration options for the AIBO Local Map
00003  *   and the AIBO Global Map
00004  *
00005  * Started on 12-13-2002
00006  */
00007 
00008 #ifndef _ALM_CONFIGURATION_H_ // different symbol on purpose
00009 #define _ALM_CONFIGURATION_H_
00010 
00011 /* This macro converts degrees to radians */
00012 #define R(item) ( ((double)(item))*M_PI/180 )
00013 
00014 
00015 /* These constants affect the performance of the local map */
00016   // After each move, we tax the certainty of data that hasn't been
00017   // refreshed by a certain amount.
00018   //   Here's the tax on the spherical depth map (SDM) data
00019 #define ALM_DM_TAX  0.8
00020   //   Here's the tax on the height map (HM) data
00021 #define ALM_HM_TAX  0.9
00022   //   Here's the tax on the global map (GM) data
00023 #define ALM_GM_TAX  0.9
00024 
00025 
00026 /* Dimensions of the spherical depth map (SDM) */
00027   // The spherical depth map is bounded by tilt and pan angles, not
00028   // distances, for obvious reasons. When specifying these constants, it's
00029   // important to consider that they are likely restricted by the physical
00030   // bounds on head motion, and that the tilt dimensions don't really
00031   // correspond to head tilt angles but to vertical angles emanating from the
00032   // tilt pivot on the AIBO's chest. A permissible head tilt angle (e.g
00033   // facing straight downward) might not work when you just move it to
00034   // the chest (because the robot can't look directly at the spot beneath
00035   // it's chest!), so be conservative.
00036   //   Angle units are DEGREES and are oriented and aligned the same way
00037   // as the head joint angles in the Tekkotsu software, Sony documentation,
00038   // etc.
00039 
00040   // Top of the SDM. A shallow angle is recommended because at some pan
00041   // angles, the head can't move as far back as usual.
00042 #define ALM_DM_TOP  R(25.0)
00043   // Bottom of the SDM
00044 #define ALM_DM_BOTTOM R(-75.0)
00045   // Left side of the SDM
00046 #define ALM_DM_LEFT R(85.0)
00047   // Right side of the SDM
00048 #define ALM_DM_RIGHT  R(-85.0)
00049 
00050   // Vertical size of the SDM array
00051 //#define ALM_DM_V_SIZE 301
00052 #define ALM_DM_V_SIZE 51
00053   // Horizontal size of the SDM array
00054 //#define ALM_DM_H_SIZE 539
00055 #define ALM_DM_H_SIZE 89
00056   // These numbers are both odd so there is a row of the array directly along
00057   // the altitude and azimuth zero angles.
00058 
00059 
00060 /* Dimensions of the height map (HM) */
00061   // The height map is a horizontal circular disk emanating from the ground
00062   // point directly beneath the AIBO's tilt joint. While the information in
00063   // the height map is stored in a regular square array, only the disk is
00064   // guaranteed to be updated as the AIBO moves.
00065 
00066   // Radius of the HM in millimeters
00067 //#define ALM_HM_RADIUS 400
00068 #define ALM_HM_RADIUS 600
00069   // Radius of the HM in array elements(when the radius is aligned with the
00070   // axis of the array). Or, half the size of one of the sides of the array.
00071 //#define ALM_HM_SIZE 20
00072 #define ALM_HM_SIZE 40
00073 
00074 
00075 /* Dimensions of the global map (GM) */
00076   // The global map is a horizontal rectangle--it's an allocentric version
00077   // of the HM described above. Coordinates are the same as those used by
00078   // FastSLAM, so usage strategies should reflect the way FastSLAM is use
00079   // in your application.
00080   //   If you're using FastSLAM as glorified Monte Carlo Localization and
00081   // know the positions of all your landmarks, it's probably safe to simply
00082   // place the bounding box, in landmark relative coordinates, around the
00083   // area you expect to drive the AIBO. You should add some margins, but
00084   // not too many.
00085   //   If you're using FastSLAM to truly explore and discover landmarks,
00086   // you should make the GM big enough to enclose the entire area that
00087   // AIBO will explore, understanding that in the course of mapping it may
00088   // rotate and translate the locations of itself and landmarks away
00089   // from the places you originally expected it to find them. Give the
00090   // GM wide margins and some space for rotation.
00091   //   TODO in the future: automatic GM configuration
00092 
00093   // Top Y coordinate of the GM in millimeters
00094 #define AGM_TOP   2000
00095   // Bottom Y coordinate of the GM in millimeters
00096 #define AGM_BOTTOM  -2000
00097   // Left X coordinate of the GM in millimeters
00098 #define AGM_LEFT  -2000
00099   // Right X coordinate of the GM in millimeters
00100 #define AGM_RIGHT 2000
00101 
00102   // Vertical (Y) size of the GM array
00103 #define AGM_V_SIZE  100
00104   // Horizontal (Z) size of the GM array
00105 #define AGM_H_SIZE  100
00106 
00107 
00108 /* Final array sizing. */
00109   // Some defines for shorthand that define the size of the HM, DM, and GM
00110   // arrays. You should not need to change these
00111 #define HM_CELL_COUNT   4*ALM_HM_SIZE*ALM_HM_SIZE
00112 #define DM_CELL_COUNT   ALM_DM_V_SIZE*ALM_DM_H_SIZE
00113 #define GM_CELL_COUNT   AGM_V_SIZE*AGM_H_SIZE
00114 
00115 
00116 /* Number of clusters for K-means uncertainty clustering in all the maps */
00117   // In the DM
00118 #define ALM_DM_NUMCLUSTERS  4
00119   // In the HM
00120 #define ALM_HM_NUMCLUSTERS  4
00121   // In the GM
00122 #define AGM_NUMCLUSTERS   4
00123 /* Number of iterations for K-means uncertainty clustering in all the maps */
00124 #define AM_KMEANS_ITERATIONS  5
00125 
00126 
00127 /* The standard deviation, in DM pixels (bad measure, I know. TODO)
00128  * of IR measurements per millimeter of distance */
00129 #define ALM_IR_SPLAT_STDDEV 3/600
00130 
00131 
00132 /* Ground plane assumption. How confident are we about ground plane assumption
00133  * measurements? */
00134 #define ALM_GPA_CONFIDENCE  0.7
00135 
00136 
00137 /* Physical dimensions of the AIBO */
00138   // The distance from the tilt pivot in the neck to the pan/roll pivot in
00139   // the head (mm):
00140 #define AIBO_NECK_HEIGHT  48.0
00141   // The distance from the pan/roll pivot in the head to the IR depth ranger:
00142 #define AIBO_HEAD_LENGTH  66.6
00143   // The average distance from the ground to the tilt pivot point. Hard to tell
00144   // for certain without a whole motion model.
00145 #define AIBO_TILT_PIVOT_HEIGHT  185.0
00146   // The horizontal FOV of of the AIBO's camera
00147 #define AIBO_CAM_H_FOV    R(57.6)
00148   // The vertical FOV of of the AIBO's camera
00149 #define AIBO_CAM_V_FOV    R(47.8)
00150   // The horizontal distance from the neck joint to the point where AIBO
00151   // pivots when it makes a turning walk (mm)
00152 #define AIBO_TURN_PIVOT_DIST  90.0
00153   // The absolute lowest an overhang can be without impeding the movement
00154   // of the AIBO.
00155 #define AIBO_MIN_CLEARANCE  300
00156   // The absolute highest a bump on the ground can be without impeding
00157   // AIBO movement.
00158 #define AIBO_MAX_BUMP   10
00159   // These constants are calibration constants for the IR sensor. They
00160   // should probably end up in a config file soon.
00161   // The AIBO's IR range measurements deviate linearly from the true
00162   // depths of objects they measure. Calibrate your AIBO with these
00163   // parameters, where
00164   //   true depth = AIBO_IR_CAL_MULTIPLIER * reported depth +
00165   //        AIBO_IR_CAL_OFFSET
00166   // such that true depth reflects the true distance from the nose of
00167   // the AIBO to the object. You'll have to use a program or calculator
00168   // that can do linear regression on the data you collect--the TI-8x
00169   // series calculators and Matlab are all capable of this.
00170 #define AIBO_IR_CAL_MULTIPLIER  0.78807
00171 #define AIBO_IR_CAL_OFFSET  -15.19878
00172 
00173   // More soon
00174 
00175 #endif

Tekkotsu v1.4
Generated Sat Jul 19 00:06:29 2003 by Doxygen 1.3.2