Update of /cvsroot/playerstage/code/player/utils/pmap
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30928/utils/pmap
Modified Files:
logfile.cpp logfile.h pmap_test.cpp
Log Message:
aplpied patch
[ 1850791 ] generalizing pmap
Index: pmap_test.cpp
===================================================================
RCS file: /cvsroot/playerstage/code/player/utils/pmap/pmap_test.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** pmap_test.cpp 5 May 2007 11:53:08 -0000 1.3
--- pmap_test.cpp 15 Feb 2008 09:06:18 -0000 1.4
***************
*** 178,182 ****
static int opt_laser_index = 0;
static double opt_scale = 0.025;
! static double opt_range_max = 8.0;
static double opt_range_res = 0.10;
static pose2_t opt_robot_pose;
--- 178,182 ----
static int opt_laser_index = 0;
static double opt_scale = 0.025;
! static double opt_range_max = -1.0;
static double opt_range_res = 0.10;
static pose2_t opt_robot_pose;
***************
*** 190,193 ****
--- 190,201 ----
static int opt_fine_max = 100;
+ // configuration data, read from logfile
+ static int laser_range_count;
+ static double laser_range_max;
+ static double laser_angle_min;
+ static double laser_angle_max;
+ static double laser_angle_step;
+
+
// GUI settings
static int win;
***************
*** 219,222 ****
--- 227,231 ----
static void process();
static void save();
+ static void process_init();
static int process_coarse();
static void save_coarse();
***************
*** 429,432 ****
--- 438,476 ----
}
+ // recover configuration data from logfile
+ void process_init()
+ {
+ while (1)
+ {
+ int logresult = logfile_read(logfile);
+ if (logresult < 0)
+ {
+ fprintf(stderr, "\n");
+ return;
+ }
+ else if(logresult > 0)
+ continue;
+
+ // wait for first laser scan
+ if (strcmp(logfile->interface, "laser") == 0 &&
+ logfile->index == opt_laser_index)
+ {
+ // save data
+ laser_range_count = logfile->laser_range_count;
+ laser_range_max = logfile->laser_range_max;
+ laser_angle_min = logfile->laser_angle_min;
+ laser_angle_max = logfile->laser_angle_max;
+ laser_angle_step = logfile->laser_angle_step;
+
+ fprintf(stderr, "range_count = %d\n", laser_range_count);
+ fprintf(stderr, "range_max = %f\n", laser_range_max);
+ fprintf(stderr, "angle_min = %f\n", laser_angle_min);
+ fprintf(stderr, "angle_max = %f\n", laser_angle_max);
+ fprintf(stderr, "angle_step = %f\n", laser_angle_step);
+
+ return;
+ }
+ }
+ }
// Coarse map generation (process log file)
***************
*** 470,480 ****
logfile->index == opt_laser_index)
{
- if (logfile->laser_range_count != 181)
- {
- fprintf(stderr, "incorrect range count; expecting %d, got %d",
- lodo->num_ranges, logfile->laser_range_count);
- exit(-1);
- }
-
// Update the local pose estimate (corrected odometry)
lodo_pose = lodo_add_scan(lodo, odom_pose,
--- 514,517 ----
***************
*** 799,805 ****
if (!logfile)
return -1;
// Create lodo handle
! lodo = lodo_alloc(181, opt_range_max, opt_range_res, -M_PI / 2, M_PI / 180);
if (!lodo)
return -1;
--- 836,852 ----
if (!logfile)
return -1;
+
+ //aquire laser configuration data
+ process_init();
+
+ if (opt_range_max > 0)
+ laser_range_max = opt_range_max; // override maximum laser range if
specified in command line
+
+ // restart logreader
+ logfile_free(logfile);
+ logfile = logfile_alloc(opt_filename);
// Create lodo handle
! lodo = lodo_alloc(laser_range_count, laser_range_max, opt_range_res,
laser_angle_min, laser_angle_step);
if (!lodo)
return -1;
***************
*** 809,814 ****
// Create pmap handle
! pmap = pmap_alloc(181, opt_range_max, -M_PI / 2, M_PI / 180,
! opt_num_samples, opt_grid_width, opt_grid_height,
opt_grid_scale);
if (!pmap)
return -1;
--- 856,861 ----
// Create pmap handle
! pmap = pmap_alloc(laser_range_count, laser_range_max, laser_angle_min,
laser_angle_step,
! opt_num_samples, opt_grid_width, opt_grid_height,
opt_grid_scale);
if (!pmap)
return -1;
***************
*** 822,833 ****
// Create rmap handle
! rmap = rmap_alloc(181, opt_range_max, -M_PI / 2, M_PI / 180,
! opt_grid_width, opt_grid_height);
if (!rmap)
return -1;
// Create omap handle
! omap = omap_alloc(181, opt_range_max, -M_PI / 2, M_PI / 180,
! opt_grid_width, opt_grid_height, opt_grid_scale);
if (!rmap)
return -1;
--- 869,880 ----
// Create rmap handle
! rmap = rmap_alloc(laser_range_count, laser_range_max, laser_angle_min,
laser_angle_step,
! opt_grid_width, opt_grid_height);
if (!rmap)
return -1;
// Create omap handle
! omap = omap_alloc(laser_range_count, laser_range_max, laser_angle_min,
laser_angle_step,
! opt_grid_width, opt_grid_height, opt_grid_scale);
if (!rmap)
return -1;
Index: logfile.cpp
===================================================================
RCS file: /cvsroot/playerstage/code/player/utils/pmap/logfile.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** logfile.cpp 24 Jan 2007 18:22:55 -0000 1.3
--- logfile.cpp 15 Feb 2008 09:06:18 -0000 1.4
***************
*** 39,42 ****
--- 39,49 ----
}
+ void logfile_free(logfile_t *self)
+ {
+ fclose(self->file);
+ delete self->line;
+ delete self;
+ }
+
// Read a line from the log file
***************
*** 126,129 ****
--- 133,140 ----
assert(self->token_count >= 13);
self->laser_range_count = atoi(self->tokens[12]);
+ self->laser_range_max = atof(self->tokens[11]);
+ self->laser_angle_min = atof(self->tokens[8]);
+ self->laser_angle_max = atof(self->tokens[9]);
+ self->laser_angle_step = atof(self->tokens[10]);
assert(self->token_count >= 13 + self->laser_range_count * 2);
Index: logfile.h
===================================================================
RCS file: /cvsroot/playerstage/code/player/utils/pmap/logfile.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** logfile.h 25 Apr 2006 19:24:41 -0000 1.1
--- logfile.h 15 Feb 2008 09:06:18 -0000 1.2
***************
*** 42,46 ****
/// Laser data
int laser_range_count;
! double laser_ranges[181];
} logfile_t;
--- 42,50 ----
/// Laser data
int laser_range_count;
! double laser_angle_min;
! double laser_angle_max;
! double laser_angle_step;
! double laser_range_max;
! double laser_ranges[2048];
} logfile_t;
***************
*** 54,57 ****
--- 58,63 ----
int logfile_read(logfile_t *self);
+ /// @brief Close Logfile and Delete logfile reader
+ void logfile_free(logfile_t *self);
#endif
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit