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