INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

NONFRAMEWORK CODE
Driver Interfaces
Drivers
Libraries
Utilities

FRAMEWORK CODE
Interfaces
Components
Libraries
Utilities

Full Software Listings

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

lineextractor.h

00001 /*
00002  * Orca-Robotics Project: Components for robotics 
00003  *               http://orca-robotics.sf.net/
00004  * Copyright (c) 2004-2009 Alex Brooks
00005  *
00006  * This copy of Orca is licensed to you under the terms described in
00007  * the LICENSE file included in this distribution.
00008  *
00009  */
00010 #ifndef HYDROLFEXTRACT_LINEEXTRACTOR__H
00011 #define HYDROLFEXTRACT_LINEEXTRACTOR__H
00012 
00013 #include <hydrofeatureobs/features.h>
00014 #include <hydroscanutil/scanutil.h>
00015 #include <hydrolaserfeatureextract/annotatedlines.h>
00016 #include <hydroutil/context.h>
00017 #include <assert.h>
00018 
00019 namespace hydrolfextract {
00020 
00022 
00028 class LineExtractor
00029 {
00030 
00031 public: 
00032 
00033     struct Config {
00034         Config( const hydroscanutil::ScannerConfig &scannerCfg )
00035             : scannerConfig(scannerCfg),
00036               maxDeltaRangeInCluster(0.5),
00037               maxDeltaInLine(0.2),
00038               minPointsInLine(6),
00039               minLineLengthForVisibleEndpoints(0.5)
00040             {}
00041 
00042         hydroscanutil::ScannerConfig scannerConfig;
00043 
00044         // config
00045         double maxDeltaRangeInCluster;
00046         double maxDeltaInLine;
00047         int    minPointsInLine;
00048         double minLineLengthForVisibleEndpoints;
00049 
00050         bool isSane() const;
00051     };
00052 
00054 
00055     LineExtractor( const Config &config,
00056                    const hydroutil::Context &context )
00057         : config_(config),
00058           context_(context)
00059         { assert( config.isSane() ); }
00060 
00061     AnnotatedLines extractLines( const std::vector<float> &ranges ) const;
00062 
00063     const Config &config() const { return config_; }
00064 
00065 private:
00066 
00067     Config             config_;
00068     hydroutil::Context context_;
00069 };
00070 
00072 
00073 class LineFeatureExtractor {
00074 public:
00075 
00076     LineFeatureExtractor( double minLineLength,
00077                           double rangeSd,
00078                           double bearingSd,
00079                           double pFalsePositive,
00080                           double pTruePositive )
00081         : minLineLength_(minLineLength),
00082           rangeSd_(rangeSd),
00083           bearingSd_(bearingSd),
00084           pFalsePositive_(pFalsePositive),
00085           pTruePositive_(pTruePositive)
00086         {}
00087 
00088     std::vector<hydrofeatureobs::LineFeatureObs*> extractFeatures( const AnnotatedLines &annLines ) const;
00089 
00090 private:
00091 
00092     double minLineLength_;
00093     double rangeSd_;
00094     double bearingSd_;
00095     double pFalsePositive_;
00096     double pTruePositive_;
00097 };
00098 
00099 class CornerFeatureExtractor {
00100 public:
00101 
00102     CornerFeatureExtractor( double rangeSd,
00103                             double bearingSd,
00104                             double pFalsePositive,
00105                             double pTruePositive )
00106         : rangeSd_(rangeSd),
00107           bearingSd_(bearingSd),
00108           pFalsePositive_(pFalsePositive),
00109           pTruePositive_(pTruePositive)
00110         {}
00111 
00112     std::vector<hydrofeatureobs::PointFeatureObs*> extractFeatures( const AnnotatedLines &annLines ) const;
00113 
00114 private:
00115 
00116     double rangeSd_;
00117     double bearingSd_;
00118     double pFalsePositive_;
00119     double pTruePositive_;
00120 };
00121 }
00122 
00123 #endif
 

Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)


Generated for Orca Robotics by  doxygen 1.4.5