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

Reply via email to