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