Revision: 6389
http://playerstage.svn.sourceforge.net/playerstage/?rev=6389&view=rev
Author: gerkey
Date: 2008-04-28 16:38:17 -0700 (Mon, 28 Apr 2008)
Log Message:
-----------
took player structure out of underlying urg lib
Modified Paths:
--------------
code/player/trunk/server/drivers/laser/urg_laser.cc
code/player/trunk/server/drivers/laser/urg_laser.h
code/player/trunk/server/drivers/laser/urglaserdriver.cc
Modified: code/player/trunk/server/drivers/laser/urg_laser.cc
===================================================================
--- code/player/trunk/server/drivers/laser/urg_laser.cc 2008-04-28 22:11:45 UTC
(rev 6388)
+++ code/player/trunk/server/drivers/laser/urg_laser.cc 2008-04-28 23:38:17 UTC
(rev 6389)
@@ -6,11 +6,22 @@
#include <stdlib.h>
#include <fcntl.h>
#include <termios.h>
+#include <math.h>
#include <replace/replace.h>
#include "urg_laser.h"
+// Convert radians to degrees
+#ifndef RTOD
+#define RTOD(r) ((r) * 180 / M_PI)
+#endif
+
+// Convert degrees to radians
+#ifndef DTOR
+#define DTOR(d) ((d) * M_PI / 180)
+#endif
+
///////////////////////////////////////////////////////////////////////////////
// Reads characters (and throws them away) until the nth occurence of char c.
int
@@ -145,7 +156,7 @@
///////////////////////////////////////////////////////////////////////////////
int
- urg_laser::GetSensorConfig (player_laser_config_t *cfg)
+ urg_laser::GetSensorConfig (urg_laser_config_t *cfg)
{
// TODO: look into getting intensity data
cfg->intensity = 0;
@@ -611,6 +622,7 @@
int
urg_laser::GetReadings (urg_laser_readings_t * readings, int min_i, int
max_i)
{
+ int numreadings = -1;
unsigned char Buffer[16];
//memset (Buffer, 0, 11);
assert (readings);
@@ -647,7 +659,10 @@
ReadUntil (file, Buffer, 2, -1);
if (Buffer[0] == '\n' && Buffer[1] == '\n')
+ {
+ numreadings = i;
break;
+ }
else if (Buffer[0] == '\n')
{
@@ -698,7 +713,10 @@
//printf ("[%d of %d] 0x%x 0x%x 0x%x\n", i, MAX_READINGS, Buffer[0],
Buffer[1], Buffer [2]);
if ((Buffer[1] == '\n') && (Buffer[2] == '\n'))
+ {
+ numreadings = i;
break;
+ }
else if (Buffer[2] == '\n')
{
if (ReadUntil(file, &Buffer[1], 2, -1) < 0)
@@ -769,7 +787,10 @@
//printf ("[%d of %d] 0x%x 0x%x 0x%x\n", i, MAX_READINGS, Buffer[0],
Buffer[1], Buffer [2]);
if ((Buffer[1] == '\n') && (Buffer[2] == '\n'))
+ {
+ numreadings = i;
break;
+ }
else if (Buffer[2] == '\n')
{
if (ReadUntil(file, &Buffer[1], 2, -1) < 0)
@@ -810,7 +831,7 @@
}
}
- return (0);
+ return (numreadings);
}
//////////////////////////////////////////////////////////////////////////////
Modified: code/player/trunk/server/drivers/laser/urg_laser.h
===================================================================
--- code/player/trunk/server/drivers/laser/urg_laser.h 2008-04-28 22:11:45 UTC
(rev 6388)
+++ code/player/trunk/server/drivers/laser/urg_laser.h 2008-04-28 23:38:17 UTC
(rev 6389)
@@ -1,5 +1,4 @@
#include <stdio.h>
-#include <libplayercore/playercore.h>
#define MAX_READINGS 1128
@@ -8,6 +7,24 @@
unsigned short Readings[MAX_READINGS];
} urg_laser_readings_t;
+typedef struct urg_laser_config
+{
+ /** Start and end angles for the laser scan [rad].*/
+ float min_angle;
+ /** Start and end angles for the laser scan [rad].*/
+ float max_angle;
+ /** Scan resolution [rad]. */
+ float resolution;
+ /** Maximum range [m] */
+ float max_range;
+ /** Range Resolution [m] */
+ float range_res;
+ /** Enable reflection intensity data. */
+ unsigned char intensity;
+ /** Scanning frequency [Hz] */
+ float scanning_frequency;
+} urg_laser_config_t;
+
class urg_laser
{
public:
@@ -26,7 +43,7 @@
int GetReadings (urg_laser_readings_t * readings, int min_i, int
max_i);
int GetIDInfo ();
float GetMaxRange ();
- int GetSensorConfig (player_laser_config_t *cfg);
+ int GetSensorConfig (urg_laser_config_t *cfg);
int GetSCIPVersion() { return(this->SCIP_Version); }
int GetNumRanges() { return(this->num_ranges); }
Modified: code/player/trunk/server/drivers/laser/urglaserdriver.cc
===================================================================
--- code/player/trunk/server/drivers/laser/urglaserdriver.cc 2008-04-28
22:11:45 UTC (rev 6388)
+++ code/player/trunk/server/drivers/laser/urglaserdriver.cc 2008-04-28
23:38:17 UTC (rev 6389)
@@ -221,8 +221,17 @@
this->SetError(1);
return -1;
}
- Laser.GetSensorConfig (&Conf);
+ urg_laser_config_t ucfg;
+ Laser.GetSensorConfig (&ucfg);
+ Conf.min_angle = ucfg.min_angle;
+ Conf.max_angle = ucfg.max_angle;
+ Conf.resolution = ucfg.resolution;
+ Conf.max_range = ucfg.max_range;
+ Conf.range_res = ucfg.range_res;
+ Conf.intensity = ucfg.intensity;
+ Conf.scanning_frequency = ucfg.scanning_frequency;
+
int half_idx = Laser.GetNumRanges() / 2;
// Solve the min/max angle problem
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit