/* * VelodyneRings.cpp * * Created on: Apr 20, 2010 * Author: duhadway */ #include "velodyne_rings.h" #include #define NUM_SAMPLES 1000 #define EPSILON 0.000000001 #define MAX_RANGE 70.0 namespace dgc { float eval_function( float factor, sample_t *samples, int num_samples ) { int i; double v, sum=0.0; for (i=0; iEPSILON) { test_plus = eval_function( fac+stepsize, samples, num_samples ); test_minus = eval_function( fac-stepsize, samples, num_samples ); if (test_plusvert_angle[i]; ring[i].h_angle = config->rot_angle[i]; ring[i].h_offset = (int) (VELO_NUM_TICKS*(-ring[i].h_angle/(2*M_PI))); ring[i].fac = 0; min_h_offset = std::min(min_h_offset, ring[i].h_offset); } qsort( ring, NUM_LASER_BEAMS, sizeof(velodyne_ring_settings_t), ringCompare ); sample_t sample[NUM_SAMPLES]; /* beam 0 is highest laser - beam 63 is lowest laser */ for (int i=0; i0 && dist