Homepage | Demos | Overview | Downloads | Tutorials | Reference | Credits |
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 |