orca-robotics


INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

REPOSITORY
Interfaces
Components
Libraries
Utilities
Software Map

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard
Wiki
login/pass: orca/orca

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

simulator.h

00001 #ifndef SIMULATOR_H
00002 #define SIMULATOR_H
00003 
00004 #include <hydrosim2d/hydrosim2d.h>
00005 #include <orca/pathfollower2d.h>
00006 #include <orcasim2d/orcasim2d.h>
00007 #include <memory>
00008 #include <orcaifaceimpl/ogmap.h>
00009 
00010 namespace localnav {
00011 
00012 //
00013 // @author Alex Brooks
00014 //
00015 class Simulator
00016 {
00017 
00018 public: 
00019 
00020     struct Config {
00021         double maxLateralAcceleration;
00022         bool   checkLateralAcceleration;
00023         bool   checkDifferentialConstraints;
00024         bool   checkVelocityConstraints;
00025         bool   useRoom;
00026         bool   batchMode;
00027         int    numIterationsBatch;
00028         int    numIterationsLimit;
00029     };
00030 
00031     Simulator( const orcaice::Context         &context,
00032                const hydroogmap::OgMap        &ogMap,
00033                const orca::PathFollower2dData &testPath,
00034                const Config                   &config );
00035 
00036     // This is the trigger to advance the simulator one step.
00037     void act( const hydronavutil::Velocity &cmd );
00038 
00039     void checkProgress( bool &pathCompleted, bool &pathFailed );
00040 
00041     void getObsRanges( std::vector<float> &obsRanges )
00042         { rangeScannerSimulator_->getRangesFromPose( vehicleSimulator_->pose(), obsRanges ); }
00043 
00044     hydronavutil::Pose pose() const
00045         { return vehicleSimulator_->pose(); }
00046     hydronavutil::Velocity velocity() const
00047         { return vehicleSimulator_->velocity(); }
00048 
00049     orca::VehicleDescription vehicleDescription() const
00050         { return vehicleDescr_; }
00051 
00052     const orca::RangeScanner2dDescription& rangeScanner2dDescription() const
00053         { return scannerDescr_; }
00054     
00055     orca::Time time() const;
00056 
00057     const hydrosim2d::VehicleSimulator &vehicleSimulator() const { return *vehicleSimulator_; }
00058     const hydroogmap::OgMap &ogMap() const { return ogMap_; }
00059 
00060 private: 
00061 
00062     void setupInterfaces( const hydrosim2d::VehicleSimulator::Config &vehicleSimConfig,
00063                           const hydrosim2d::RangeScannerSimulator::Config rangeScanSimConfig );
00064 
00065     std::auto_ptr<orcasim2d::PosePublisher>      posePublisher_;
00066     std::auto_ptr<orcasim2d::RangeScanPublisher> rangeScanPublisher_;
00067     orcaifaceimpl::OgMapImplPtr                  ogMapInterface_;
00068 
00069     orca::RangeScanner2dDescription scannerDescr_;
00070     orca::VehicleDescription        vehicleDescr_;
00071 
00072     hydroogmap::OgMap        ogMap_;
00073     orca::PathFollower2dData testPath_;
00074 
00075     int    iterationNum_;
00076     int    wpI_;
00077 
00078     std::auto_ptr<hydrosim2d::VehicleSimulator>      vehicleSimulator_;
00079     std::auto_ptr<hydrosim2d::RangeScannerSimulator> rangeScannerSimulator_;
00080 
00081     const Config config_;
00082 
00083     orcaice::Context context_;
00084 };
00085 
00086 std::string toString( const Simulator::Config &c );
00087 
00088 }
00089 
00090 #endif
 

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


Generated for Orca Robotics by  doxygen 1.4.5