Bench-MR
A Motion Planning Benchmark for Wheeled Mobile Robots
ScenarioLoader.h
Go to the documentation of this file.
1#pragma once
2
3#include <iomanip>
4#include <iostream>
5#include <string>
6#include <vector>
7
11struct Scenario {
12 std::string mapName{""};
13 std::string filename{""};
14 unsigned int id{0};
15 unsigned int map_width{0};
16 unsigned int map_height{0};
17 unsigned int start_x{0};
18 unsigned int start_y{0};
19 unsigned int goal_x{0};
20 unsigned int goal_y{0};
21 double optimal_length{0};
22
23 void loadMap();
24
25 inline const std::vector<std::vector<char>> &getMap() {
26 loadMap();
27 return _grid;
28 }
29
30 friend std::ostream &operator<<(std::ostream &stream, const Scenario &s) {
31 return stream << s.filename << " #" << s.id << " (with map " << s.mapName
32 << " " << s.map_width << "x" << s.map_height << " from ["
33 << s.start_x << " " << s.start_y << "] to [" << s.goal_x
34 << " " << s.goal_y << "], opt-l: " << s.optimal_length << ")";
35 }
36
37 private:
38 std::vector<std::vector<char>> _grid;
39};
40
42 public:
43 ScenarioLoader() = default;
44
45 void load(const std::string &fileName);
46
47 inline int version() { return _version; }
48
49 std::vector<Scenario> &scenarios() { return _scenarios; }
50
51 // debug, prints data to terminal
52 inline void printData() {
53 for (const auto &scenario : _scenarios) {
54 std::cout << scenario.id;
55 std::cout << " " << scenario.mapName;
56 std::cout << " " << scenario.map_width;
57 std::cout << " " << scenario.map_height;
58 std::cout << " " << scenario.start_x;
59 std::cout << " " << scenario.start_y;
60 std::cout << " " << scenario.goal_x;
61 std::cout << " " << scenario.goal_y;
62 std::cout << std::fixed << std::setprecision(8) << " "
63 << scenario.optimal_length;
64 std::cout << std::endl;
65 }
66 }
67
68 private:
69 int _version;
70 std::string _fileName;
71 std::vector<Scenario> _scenarios;
72};
Definition: ScenarioLoader.h:41
void load(const std::string &fileName)
Definition: ScenarioLoader.cpp:14
ScenarioLoader()=default
int version()
Definition: ScenarioLoader.h:47
std::vector< Scenario > & scenarios()
Definition: ScenarioLoader.h:49
void printData()
Definition: ScenarioLoader.h:52
Load MovingAI scenario files.
Definition: ScenarioLoader.h:11
friend std::ostream & operator<<(std::ostream &stream, const Scenario &s)
Definition: ScenarioLoader.h:30
unsigned int start_y
Definition: ScenarioLoader.h:18
double optimal_length
Definition: ScenarioLoader.h:21
unsigned int start_x
Definition: ScenarioLoader.h:17
std::string filename
Definition: ScenarioLoader.h:13
unsigned int map_width
Definition: ScenarioLoader.h:15
unsigned int id
Definition: ScenarioLoader.h:14
void loadMap()
Definition: ScenarioLoader.cpp:54
unsigned int goal_y
Definition: ScenarioLoader.h:20
unsigned int goal_x
Definition: ScenarioLoader.h:19
std::string mapName
Definition: ScenarioLoader.h:12
const std::vector< std::vector< char > > & getMap()
Definition: ScenarioLoader.h:25
unsigned int map_height
Definition: ScenarioLoader.h:16