7#include <nlohmann/json.hpp> 
   32  unsigned int seed()
 const { 
return _seed; }
 
   34  bool empty()
 const { 
return _empty; }
 
   38  inline bool occupied(
unsigned int index)
 const { 
return _grid[index]; }
 
   42    if (x < 0 || y < 0 || x > 
width() || y > 
height()) {
 
   65    return _grid[yi * _voxels_x + xi];
 
   72  inline double distance(
double x, 
double y)
 override {
 
   83    return _distances[index];
 
   90  inline double distance(
unsigned int xi, 
unsigned int yi) {
 
   92    return _distances[yi * _voxels_x + xi];
 
   96    for (
unsigned int y = 0; y < m._voxels_y; ++y) {
 
   97      for (
unsigned int x = 0; x < m._voxels_x; ++x) {
 
   98        if (std::round(m.
_goal.
x) == x && std::round(m.
_goal.
y) == y)
 
  100        else if (std::round(m.
_start.
x) == x && std::round(m.
_start.
y) == y)
 
  119  void mapData(
unsigned char *data, 
double resolution = 1.);
 
  123  std::vector<Rectangle> 
obstacles() 
const;
 
  124  std::vector<Rectangle> 
obstacles(
double x1, 
double y1, 
double x2,
 
  127  bool collides(
double x, 
double y) 
override;
 
  132      double obsRatio = 0.3, 
unsigned int seed = (
unsigned int)time(
nullptr),
 
  136      double radius = 2, 
int branches = 30,
 
  137      unsigned int seed = (
unsigned int)time(
nullptr), 
int borderSize = 1);
 
  153      const std::string &filename, 
double occupancy_threshold = 0.5,
 
  157  static GridMaze *loadFromXml(std::string filename);
 
  160  void publish(ros::NodeHandle &nodeHandle) 
const;
 
  166  unsigned int cells()
 const { 
return _voxels_x * _voxels_y; }
 
  168  unsigned int voxels_x()
 const { 
return _voxels_x; }
 
  169  unsigned int voxels_y()
 const { 
return _voxels_y; }
 
  171  std::string 
name()
 const override { 
return _name; }
 
  172  std::string &
name() { 
return _name; }
 
  193    j[
"distance_computation_method"] =
 
  200  inline unsigned int coord2key(
double x, 
double y)
 const {
 
  202        0., 
std::min(std::round(y), _voxels_y - 1.) * _voxels_x +
 
  203                std::min(std::round(x), _voxels_x - 1.));
 
  205  void fill(
double x, 
double y, 
bool value);
 
  220  bool *_grid{
nullptr};
 
  222  unsigned int _voxels_x{0};
 
  223  unsigned int _voxels_y{0};
 
  225  double *_distances{
nullptr};
 
  226  double _voxelSize{1.0};
 
  228  unsigned int _seed{0};
 
  229  std::string _type{
"undefined"};
 
  230  std::string _name{
"grid"};
 
Definition: Environment.h:8
 
double goalTheta() const
Definition: Environment.h:111
 
double width() const
Definition: Environment.h:34
 
Stopwatch _collision_timer
Definition: Environment.h:139
 
double startTheta() const
Definition: Environment.h:110
 
double height() const
Definition: Environment.h:35
 
Point _goal
Definition: Environment.h:132
 
Point _start
Definition: Environment.h:131
 
const Point & goal() const
Definition: Environment.h:17
 
const Point & start() const
Definition: Environment.h:14
 
Definition: GridMaze.h:20
 
distance_computation::Method distanceComputationMethod() const
Definition: GridMaze.h:209
 
void fillBorder(bool value, int size=1)
Definition: GridMaze.cpp:89
 
std::string mapString() const
Definition: GridMaze.cpp:707
 
static std::shared_ptr< GridMaze > createSimple()
Definition: GridMaze.cpp:565
 
friend std::ostream & operator<<(std::ostream &stream, const GridMaze &m)
Definition: GridMaze.h:95
 
unsigned int coord2key(double x, double y) const
Definition: GridMaze.h:200
 
Stopwatch _collision_timer
Definition: Environment.h:139
 
bool saveSbplConfigFile(const std::string &filename) const
Writes cfg file for planners based on sbpl.
Definition: GridMaze.cpp:667
 
bool collides(double x, double y) override
Definition: GridMaze.cpp:355
 
unsigned int voxels_y() const
Definition: GridMaze.h:169
 
std::vector< double > mapDistances()
Definition: GridMaze.cpp:716
 
static std::shared_ptr< GridMaze > createRandomCorridor(unsigned int width=DefaultWidth, unsigned int height=DefaultHeight, double radius=2, int branches=30, unsigned int seed=(unsigned int) time(nullptr), int borderSize=1)
Definition: GridMaze.cpp:97
 
std::vector< Rectangle > obstacles() const
Definition: GridMaze.cpp:399
 
bool empty() const
Definition: GridMaze.h:34
 
void fill(double x, double y, bool value)
Definition: GridMaze.cpp:75
 
std::string generatorType() const
Definition: GridMaze.cpp:665
 
double distance(double x, double y) override
Computes distances field if necessary, and returns the distance to the nearest obstacle.
Definition: GridMaze.h:72
 
bool occupied(double x, double y)
Definition: GridMaze.h:39
 
static std::shared_ptr< GridMaze > createRandom(unsigned int width=DefaultWidth, unsigned int height=DefaultHeight, double obsRatio=0.3, unsigned int seed=(unsigned int) time(nullptr), int borderSize=1)
Definition: GridMaze.cpp:182
 
std::string & name()
Definition: GridMaze.h:172
 
double voxelSize() const
Definition: GridMaze.h:36
 
std::string name() const override
Definition: GridMaze.h:171
 
unsigned int seed() const
Definition: GridMaze.h:32
 
unsigned int voxels_x() const
Definition: GridMaze.h:168
 
static std::shared_ptr< GridMaze > createFromMovingAiScenario(Scenario &scenario)
Definition: GridMaze.cpp:575
 
bool occupiedCell(unsigned int xi, unsigned int yi) const
Definition: GridMaze.h:64
 
void computeDistances()
Brute-force, quadratic in the number of cells, algorithm to compute the distance field,...
Definition: GridMaze.cpp:422
 
~GridMaze()
Definition: GridMaze.cpp:70
 
static std::shared_ptr< GridMaze > createFromObstacles(const std::vector< Rectangle > &obstacles, unsigned int width=DefaultWidth, unsigned int height=DefaultHeight, int borderSize=1)
Definition: GridMaze.cpp:216
 
void mapData(unsigned char *data, double resolution=1.)
Definition: GridMaze.cpp:688
 
static std::shared_ptr< GridMaze > createFromImage(const std::string &filename, double occupancy_threshold=0.5, int width=0, int height=0)
Creates a map from a grayscale image where tones below the occupancy threshold are considered obstacl...
Definition: GridMaze.cpp:605
 
double obstacleRatio() const
Definition: GridMaze.cpp:657
 
double distance(unsigned int index)
Computes distances field if necessary, and returns the distance to the nearest obstacle.
Definition: GridMaze.h:81
 
double distance(unsigned int xi, unsigned int yi)
Computes distances field if necessary, and returns the distance to the nearest obstacle.
Definition: GridMaze.h:90
 
unsigned int cells() const
Definition: GridMaze.h:166
 
bool occupied(unsigned int index) const
Definition: GridMaze.h:38
 
static const unsigned int DefaultHeight
Definition: GridMaze.h:30
 
void to_json(nlohmann::json &j) override
Definition: GridMaze.h:181
 
static const unsigned int DefaultWidth
Definition: GridMaze.h:29
 
double stop()
Stops the timer.
Definition: Stopwatch.hpp:32
 
void resume()
Continues the stop watch from when it was stopped.
Definition: Stopwatch.hpp:51
 
std::string to_string(Method m)
Definition: PlannerSettings.h:32
 
Method
Definition: PlannerSettings.h:31
 
@ BRUTE_FORCE
Definition: PlannerSettings.h:31
 
@ DEAD_RECKONING
Definition: PlannerSettings.h:31
 
double max(const std::vector< double > &values)
Definition: PathStatistics.hpp:79
 
double min(const std::vector< double > &values)
Definition: PathStatistics.hpp:73
 
Property< distance_computation::Method > distance_computation_method
Definition: PlannerSettings.h:235
 
double x
Definition: Primitives.h:43
 
double y
Definition: Primitives.h:43
 
Definition: Primitives.h:145
 
Definition: Primitives.h:19
 
Load MovingAI scenario files.
Definition: ScenarioLoader.h:11
 
static PlannerSettings::GlobalSettings settings
Definition: PlannerSettings.h:699