|
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 Project Download Mailing lists
|
simulator.h00001 #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)
1.4.5