00001 /** 00002 \file Robots/LoBot/misc/LoRegistry.H 00003 00004 \brief This file acts as a central repository for the names of 00005 different locust models, integartion algorithms, etc. supported by the 00006 Lobot/Robolocust project. 00007 */ 00008 00009 // //////////////////////////////////////////////////////////////////// // 00010 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005 // 00011 // by the University of Southern California (USC) and the iLab at USC. // 00012 // See http://iLab.usc.edu for information about this project. // 00013 // //////////////////////////////////////////////////////////////////// // 00014 // Major portions of the iLab Neuromorphic Vision Toolkit are protected // 00015 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency // 00016 // in Visual Environments, and Applications'' by Christof Koch and // 00017 // Laurent Itti, California Institute of Technology, 2001 (patent // 00018 // pending; application number 09/912,225 filed July 23, 2001; see // 00019 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status). // 00020 // //////////////////////////////////////////////////////////////////// // 00021 // This file is part of the iLab Neuromorphic Vision C++ Toolkit. // 00022 // // 00023 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can // 00024 // redistribute it and/or modify it under the terms of the GNU General // 00025 // Public License as published by the Free Software Foundation; either // 00026 // version 2 of the License, or (at your option) any later version. // 00027 // // 00028 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope // 00029 // that it will be useful, but WITHOUT ANY WARRANTY; without even the // 00030 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // 00031 // PURPOSE. See the GNU General Public License for more details. // 00032 // // 00033 // You should have received a copy of the GNU General Public License // 00034 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write // 00035 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, // 00036 // Boston, MA 02111-1307 USA. // 00037 // //////////////////////////////////////////////////////////////////// // 00038 // 00039 // Primary maintainer for this file: mviswana usc edu 00040 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Robots/LoBot/misc/LoRegistry.H $ 00041 // $Id: LoRegistry.H 14305 2010-12-08 21:17:33Z mviswana $ 00042 // 00043 00044 #ifndef LOBOT_REGISTRY_DOT_H 00045 #define LOBOT_REGISTRY_DOT_H 00046 00047 //------------------------ LOCUST MODEL NAMES --------------------------- 00048 00049 #ifndef LOLM_GABBIANI 00050 #define LOLM_GABBIANI "gabbiani" 00051 #endif 00052 00053 #ifndef LOLM_STAFFORD 00054 #define LOLM_STAFFORD "stafford" 00055 #endif 00056 00057 //-------------------------- ROBOT PLATFORMS ---------------------------- 00058 00059 // The Robolocust controller provides support for multiple robot 00060 // platforms. Since each different platform will have a different set of 00061 // sensorimotor primitives, we will need to create appropriate robot 00062 // interface objects for controlling the robot's motors and retrieving 00063 // its sensors. This section names the different robot platforms 00064 // supported by Robolocust. 00065 00066 // The original Robolocust platform was a hacked R/C car with a mini-ITX 00067 // Debian box, a Propeller board and a Sabertooth motor driver. 00068 #ifndef LORP_LOBOT 00069 #define LORP_RC_CAR "rc_car" 00070 #endif 00071 00072 // The Robolocust controller may also be run on an appropriately equipped 00073 // iRobot Create/Roomba. The following name is for a Create/Roomba 00074 // equipped with the iRobot Command Module. 00075 #ifndef LORP_ROOMBA_CM 00076 #define LORP_ROOMBA_CM "roomba_cm" 00077 #endif 00078 00079 //------------------------- ROBOT BEHAVIOURS ---------------------------- 00080 00081 // This behaviour drives the robot forward at the configured cruising 00082 // speed. 00083 #ifndef LOBE_FORWARD 00084 #define LOBE_FORWARD "forward" 00085 #endif 00086 00087 // This behaviour stops the robot when it senses things are too close for 00088 // comfort. 00089 #ifndef LOBE_EMERGENCY_STOP 00090 #define LOBE_EMERGENCY_STOP "emergency_stop" 00091 #endif 00092 00093 // This behaviour gets the robot unstuck once the emergency stop 00094 // behaviour has ground it to a halt. 00095 #ifndef LOBE_EXTRICATE 00096 #define LOBE_EXTRICATE "extricate" 00097 #endif 00098 00099 // This behaviour gets the robot unstuck by spinning the robot around to 00100 // face the direction corresponding to minimal LGMD spiking activity. 00101 #ifndef LOBE_LGMD_EXTRICATE_SIMPLE 00102 #define LOBE_LGMD_EXTRICATE_SIMPLE "lgmd_extricate_sim" 00103 #endif 00104 00105 // This behaviour gets the robot unstuck by running the LGMD spikes 00106 // through an array of elementary motion detectors. 00107 #ifndef LOBE_LGMD_EXTRICATE_EMD 00108 #define LOBE_LGMD_EXTRICATE_EMD "lgmd_extricate_emd" 00109 #endif 00110 00111 // This behaviour gets the robot unstuck by applying the virtual force 00112 // field concept to the LGMD spikes rather than relying on the distance 00113 // measurements made by the laser range finder. 00114 #ifndef LOBE_LGMD_EXTRICATE_VFF 00115 #define LOBE_LGMD_EXTRICATE_VFF "lgmd_extricate_vff" 00116 #endif 00117 00118 // This behaviour gets the robot unstuck by applying the virtual force 00119 // field concept to distance "readings" derived from time-to-impact 00120 // estimates based on LGMD spikes. 00121 #ifndef LOBE_LGMD_EXTRICATE_TTI 00122 #define LOBE_LGMD_EXTRICATE_TTI "lgmd_extricate_tti" 00123 #endif 00124 00125 // A purely computational, off-line task for computing the sensor model 00126 // required by the lgmd_extricate_tti behaviour. 00127 #ifndef LOBE_CALIBRATE_LET 00128 #define LOBE_CALIBRATE_LET "calibrate_lgmd_extricate_tti" 00129 #endif 00130 00131 // This behaviour steers the robot towards the most open path that can 00132 // accommodate the robot's width given the current distance measurements 00133 // made by the laser range finder. 00134 #ifndef LOBE_OPEN_PATH 00135 #define LOBE_OPEN_PATH "open_path" 00136 #endif 00137 00138 // This behaviour implements a SLAM algorithm to obtain an occupancy map 00139 // of the robot's surroundings and to localize the robot within that map. 00140 #ifndef LOBE_SURVEY 00141 #define LOBE_SURVEY "survey" 00142 #endif 00143 00144 // This behaviour uses the localization module to implement goal seeking. 00145 #ifndef LOBE_GOAL 00146 #define LOBE_GOAL "goal" 00147 #endif 00148 00149 // This behaviour uses the localization module to maintain a history of 00150 // robot poses and periodically dump that to a file. 00151 #ifndef LOBE_TRACK 00152 #define LOBE_TRACK "track" 00153 #endif 00154 00155 // This behaviour simply logs bump events. 00156 #ifndef LOBE_BUMP_COUNTER 00157 #define LOBE_BUMP_COUNTER "bump_counter" 00158 #endif 00159 00160 // This behaviour monitors the danger zone and takes some user-specified 00161 // action after the danger zone has been penetrated for some 00162 // preconfigured duration. 00163 #ifndef LOBE_MONITOR_DZONE 00164 #define LOBE_MONITOR_DZONE "monitor_danger_zone" 00165 #endif 00166 00167 // This behaviour quits the high-level controller after some 00168 // user-specified amount of time has elapsed since the robot started 00169 // operating. 00170 #ifndef LOBE_COUNTDOWN 00171 #define LOBE_COUNTDOWN "countdown" 00172 #endif 00173 00174 // This behaviour collects various performance metrics and other useful 00175 // data from other behaviours and periodically dumps this info to a file. 00176 #ifndef LOBE_METRICS 00177 #define LOBE_METRICS "metrics" 00178 #endif 00179 00180 // This behaviour renders the robot's trajectory and other such info 00181 // collected in a results file (which is output by the lomet dataset 00182 // analysis program) so we can take screenshots to include in papers, 00183 // etc. 00184 #ifndef LOBE_RENDER_RESULTS 00185 #define LOBE_RENDER_RESULTS "render_results" 00186 #endif 00187 00188 // This behaviour tests Robolocust's laser range finder scan matching 00189 // algorithm using some test data. 00190 #ifndef LOBE_TEST_SCAN_MATCHING 00191 #define LOBE_TEST_SCAN_MATCHING "test_scan_matching" 00192 #endif 00193 00194 // This behaviour uses the vector field histogram concept for guiding 00195 // robot away from obstacles. 00196 #ifndef LOBE_VFH 00197 #define LOBE_VFH "vfh" 00198 #endif 00199 00200 // This behaviour can be used to manually control the robot. 00201 // 00202 // NOTE: It only works for the iRobot Roomba/Create, i.e., the 00203 // "roomba_cm" platform. 00204 #ifndef LOBE_REMOTE_CONTROL 00205 #define LOBE_REMOTE_CONTROL "remote_control" 00206 #endif 00207 00208 //----------------------------------------------------------------------- 00209 00210 #endif 00211 00212 /* So things look consistent in everyone's emacs... */ 00213 /* Local Variables: */ 00214 /* indent-tabs-mode: nil */ 00215 /* End: */