Revision: 8173
          http://playerstage.svn.sourceforge.net/playerstage/?rev=8173&view=rev
Author:   gbiggs
Date:     2009-08-04 07:25:00 +0000 (Tue, 04 Aug 2009)

Log Message:
-----------
Added a min_range value to the ranger interface (apparently people actually use 
the feature request tracker).

Modified Paths:
--------------
    code/player/trunk/client_libs/libplayerc/dev_ranger.c
    code/player/trunk/client_libs/libplayerc/playerc.h
    code/player/trunk/client_libs/libplayerc++/playerc++.h
    code/player/trunk/client_libs/libplayerc++/rangerproxy.cc
    code/player/trunk/libplayerinterface/interfaces/062_ranger.def
    code/player/trunk/server/drivers/ranger/hokuyo_aist.cc
    code/player/trunk/utils/playerv/pv_dev_ranger.c

Modified: code/player/trunk/client_libs/libplayerc/dev_ranger.c
===================================================================
--- code/player/trunk/client_libs/libplayerc/dev_ranger.c       2009-08-04 
03:48:04 UTC (rev 8172)
+++ code/player/trunk/client_libs/libplayerc/dev_ranger.c       2009-08-04 
07:25:00 UTC (rev 8173)
@@ -378,14 +378,15 @@
 // Ranger set config
 int playerc_ranger_set_config(playerc_ranger_t *device, double min_angle,
                               double max_angle, double angular_res,
-                              double max_range, double range_res,
-                              double frequency)
+                              double min_range, double max_range,
+                              double range_res, double frequency)
 {
   player_ranger_config_t config, *resp;
 
   config.min_angle = min_angle;
   config.max_angle = max_angle;
   config.angular_res = angular_res;
+  config.min_range = min_range;
   config.max_range = max_range;
   config.range_res = range_res;
   config.frequency = frequency;
@@ -403,8 +404,8 @@
 // Ranger get config
 int playerc_ranger_get_config(playerc_ranger_t *device, double *min_angle,
                               double *max_angle, double *angular_res,
-                              double *max_range, double *range_res,
-                              double *frequency)
+                              double *min_range, double *max_range,
+                              double *range_res, double *frequency)
 {
   player_ranger_config_t *config;
 
@@ -421,6 +422,8 @@
     *max_angle = device->max_angle;
   if (angular_res != NULL)
     *angular_res = device->angular_res;
+  if (min_range != NULL)
+    *min_range = device->min_range;
   if (max_range != NULL)
     *max_range = device->max_range;
   if (range_res != NULL)

Modified: code/player/trunk/client_libs/libplayerc/playerc.h
===================================================================
--- code/player/trunk/client_libs/libplayerc/playerc.h  2009-08-04 03:48:04 UTC 
(rev 8172)
+++ code/player/trunk/client_libs/libplayerc/playerc.h  2009-08-04 07:25:00 UTC 
(rev 8173)
@@ -3030,6 +3030,9 @@
   double max_angle;
   /** Scan resolution [rad]. May be unfilled. */
   double angular_res;
+  /** Minimum range [m]. Values below this are typically errors and should
+  usually not be treated as valid data. May be unfilled. */
+  double min_range;
   /** Maximum range [m]. May be unfilled. */
   double max_range;
   /** Range resolution [m]. May be unfilled. */
@@ -3111,8 +3114,8 @@
 @param frequency Scanning frequency [Hz]. */
 PLAYERC_EXPORT int playerc_ranger_set_config(playerc_ranger_t *device, double 
min_angle,
                               double max_angle, double angular_res,
-                              double max_range, double range_res,
-                              double frequency);
+                              double min_range, double max_range,
+                              double range_res, double frequency);
 
 /** @brief Get the ranger device's configuration. Not all values may be filled.
 
@@ -3124,8 +3127,8 @@
 @param frequency Scanning frequency [Hz]. */
 PLAYERC_EXPORT int playerc_ranger_get_config(playerc_ranger_t *device, double 
*min_angle,
                               double *max_angle, double *angular_res,
-                              double *max_range, double *range_res,
-                              double *frequency);
+                              double *min_range, double *max_range,
+                              double *range_res, double *frequency);
 
 /** @} */
 /**************************************************************************/

Modified: code/player/trunk/client_libs/libplayerc++/playerc++.h
===================================================================
--- code/player/trunk/client_libs/libplayerc++/playerc++.h      2009-08-04 
03:48:04 UTC (rev 8172)
+++ code/player/trunk/client_libs/libplayerc++/playerc++.h      2009-08-04 
07:25:00 UTC (rev 8173)
@@ -2261,11 +2261,12 @@
 
     /// Configure the ranger scan pattern. Angles @p aMinAngle and
     /// @p aMaxAngle are measured in radians. @p aResolution is measured in
-    /// radians. @p aMaxRange and @p aRangeRes is measured in metres.
+    /// radians. @p aMinRange, @p aMaxRange and @p aRangeRes is measured in 
metres.
     /// @p aFrequency is measured in Hz.
     void Configure(double aMinAngle,
                    double aMaxAngle,
                    double aAngularRes,
+                   double aMinRange,
                    double aMaxRange,
                    double aRangeRes,
                    double aFrequency);
@@ -2283,6 +2284,9 @@
     /// Angular resolution of a scan (configured value)
     double GetAngularRes() const { return GetVar(mDevice->angular_res); };
 
+    /// Minimum detectable range of a scan (configured value)
+    double GetMinRange() const { return GetVar(mDevice->min_range); };
+
     /// Maximum detectable range of a scan (configured value)
     double GetMaxRange() const { return GetVar(mDevice->max_range); };
 

Modified: code/player/trunk/client_libs/libplayerc++/rangerproxy.cc
===================================================================
--- code/player/trunk/client_libs/libplayerc++/rangerproxy.cc   2009-08-04 
03:48:04 UTC (rev 8172)
+++ code/player/trunk/client_libs/libplayerc++/rangerproxy.cc   2009-08-04 
07:25:00 UTC (rev 8173)
@@ -126,18 +126,19 @@
 }
 
 void RangerProxy::Configure(double aMinAngle, double aMaxAngle, double 
aAngularRes,
-                            double aMaxRange, double aRangeRes, double 
aFrequency)
+                            double aMinRange, double aMaxRange, double 
aRangeRes,
+                            double aFrequency)
 {
   scoped_lock_t lock(mPc->mMutex);
   if (0 != playerc_ranger_set_config(mDevice, aMinAngle, aMaxAngle, 
aAngularRes,
-                                     aMaxRange, aRangeRes, aFrequency))
+                                     aMinRange, aMaxRange, aRangeRes, 
aFrequency))
     throw PlayerError("RangerProxy::Configure()", "error setting config");
 }
 
 void RangerProxy::RequestConfigure()
 {
   scoped_lock_t lock(mPc->mMutex);
-  if (0 != playerc_ranger_get_config(mDevice, NULL, NULL, NULL, NULL, NULL, 
NULL))
+  if (0 != playerc_ranger_get_config(mDevice, NULL, NULL, NULL, NULL, NULL, 
NULL, NULL))
     throw PlayerError("RangerProxy::RequestConfigure()", "error getting 
config");
 }
 
@@ -165,6 +166,12 @@
          size.sw << ", " << size.sl << ", " << size.sh << ")" << endl;
     }
   }
+  os << "Configuration: " << endl;
+  os << "Minimum angle: " << c.GetMinAngle () << "\tMaximum angle: " << 
c.GetMaxAngle () <<
+        "\tAngular resolution: " << c.GetAngularRes () << endl;
+  os << "Minimum range: " << c.GetMinRange () << "\tMaximum range: " << 
c.GetMaxRange () <<
+        "Range resolution: " << c.GetRangeRes () << endl;
+  os << "Scanning frequency: " << c.GetFrequency () << endl;
   if (c.GetRangeCount() > 0)
   {
     os << c.GetRangeCount() << " range readings:" << endl << "  [";

Modified: code/player/trunk/libplayerinterface/interfaces/062_ranger.def
===================================================================
--- code/player/trunk/libplayerinterface/interfaces/062_ranger.def      
2009-08-04 03:48:04 UTC (rev 8172)
+++ code/player/trunk/libplayerinterface/interfaces/062_ranger.def      
2009-08-04 07:25:00 UTC (rev 8173)
@@ -73,6 +73,9 @@
   double max_angle;
   /** Scan resolution [rad]. May be unfilled. */
   double angular_res;
+  /** Minimum range [m]. Values below this are typically errors and should
+  usually not be treated as valid data. May be unfilled. */
+  double min_range;
   /** Maximum range [m]. May be unfilled. */
   double max_range;
   /** Range resolution [m]. May be unfilled. */

Modified: code/player/trunk/server/drivers/ranger/hokuyo_aist.cc
===================================================================
--- code/player/trunk/server/drivers/ranger/hokuyo_aist.cc      2009-08-04 
03:48:04 UTC (rev 8172)
+++ code/player/trunk/server/drivers/ranger/hokuyo_aist.cc      2009-08-04 
07:25:00 UTC (rev 8173)
@@ -435,6 +435,7 @@
                rangerConfig.min_angle = _minAngle; // These two are 
user-configurable
                rangerConfig.max_angle = _maxAngle;
                rangerConfig.angular_res = info.resolution;
+               rangerConfig.min_range = info.minRange / 1000.0;
                rangerConfig.max_range = info.maxRange / 1000.0;
                rangerConfig.range_res = 0.001; // 1mm
                rangerConfig.frequency = info.speed / 60.0;

Modified: code/player/trunk/utils/playerv/pv_dev_ranger.c
===================================================================
--- code/player/trunk/utils/playerv/pv_dev_ranger.c     2009-08-04 03:48:04 UTC 
(rev 8172)
+++ code/player/trunk/utils/playerv/pv_dev_ranger.c     2009-08-04 07:25:00 UTC 
(rev 8173)
@@ -115,7 +115,7 @@
         PRINT_ERR1("libplayerc error: %s", playerc_error_str());
 
       // Request the device config for min angle and resolution
-      if (playerc_ranger_get_config(ranger->proxy, NULL, NULL, NULL, NULL, 
NULL, NULL) != 0)
+      if (playerc_ranger_get_config(ranger->proxy, NULL, NULL, NULL, NULL, 
NULL, NULL, NULL) != 0)
       {
         PRINT_ERR1("libplayerc error: %s", playerc_error_str());
         ranger->start_angle = 0.0f;


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to