Revision dd065971
Fixed sonar out of range bug. Max range now at 9.144 m.
scout/scoutsim/src/scout.cpp | ||
---|---|---|
268 | 268 |
if (d_x < 0 || d_x >= walls_image.GetWidth() || |
269 | 269 |
d_y < 0 || d_y >= walls_image.GetHeight()) |
270 | 270 |
{ |
271 |
return d;
|
|
271 |
break;
|
|
272 | 272 |
} |
273 | 273 |
|
274 | 274 |
// Max range |
275 |
if (d > scoutsim::SONAR_MAX_RANGE) |
|
275 |
if (d > scoutsim::SONAR_MAX_RANGE_PIX)
|
|
276 | 276 |
{ |
277 |
return d;
|
|
277 |
break;
|
|
278 | 278 |
} |
279 | 279 |
|
280 | 280 |
// Get the sonar reading at the current position of the sonar |
... | ... | |
284 | 284 |
|
285 | 285 |
reading = rgb_to_grey(r, g, b); |
286 | 286 |
|
287 |
|
|
288 | 287 |
d++; |
289 | 288 |
} |
290 | 289 |
/// @todo Consider using different cutoffs for different features |
... | ... | |
324 | 323 |
} |
325 | 324 |
|
326 | 325 |
// Convert from pixels to mm and return |
327 |
return (unsigned int) (1000 * d / PIX_PER_METER);
|
|
326 |
return (unsigned int) ((1000 / PIX_PER_METER) * d);
|
|
328 | 327 |
} |
329 | 328 |
|
330 | 329 |
// x and y is current position of the sonar |
scout/scoutsim/src/scout_constants.h | ||
---|---|---|
76 | 76 |
// @todo Inaccurate. Update |
77 | 77 |
const float ENCODER_TICKS_PER_METER = 363.78; |
78 | 78 |
|
79 |
const unsigned int SONAR_MAX_RANGE = 255; |
|
79 |
// @todo Update this |
|
80 |
const float SONAR_MAX_RANGE_M = 9.144; |
|
81 |
const unsigned int SONAR_MAX_RANGE_PIX = (unsigned int) |
|
82 |
(SONAR_MAX_RANGE_M * PIX_PER_METER); |
|
80 | 83 |
|
81 | 84 |
// Time it takes for the sonar to spin from position 0 to position 23 |
82 | 85 |
const float SONAR_HALF_SPIN_TIME = 0.5; |
Also available in: Unified diff