MRSL JPS3D Library  1.1
An implementaion of Jump Point Search on 3D voxel map
read_map.hpp
1 #include <yaml-cpp/yaml.h>
2 #include <iostream>
3 #include <fstream>
4 
5 template <class Ti, class Tf>
6 class MapReader {
7  public:
8  MapReader(const std::string& file, bool verbose = false) {
9  try {
10  YAML::Node config = YAML::LoadFile(file);
11 
12  if( !config[0]["start"] || !config[1]["goal"] || !config[2]["origin"] || !config[3]["dim"] || !config[4]["resolution"] || !config[5]["data"]) {
13  printf("Check input format!\n" );
14  return;
15  }
16 
17  const std::vector<double>& start = config[0]["start"].as<std::vector<double>>();
18  for(unsigned int i = 0; i < start.size(); i++)
19  start_(i) = start[i];
20  if(verbose)
21  std::cout << "start: " << start_.transpose() << std::endl;
22 
23  const std::vector<double>& goal = config[1]["goal"].as<std::vector<double>>();
24  for(unsigned int i = 0; i < goal.size(); i++)
25  goal_(i) = goal[i];
26  if(verbose)
27  std::cout << "goal: " << goal_.transpose() << std::endl;
28 
29  const std::vector<double>& origin_vec = config[2]["origin"].as<std::vector<double>>();
30  for(unsigned int i = 0; i < origin_vec.size(); i++)
31  origin_(i) = origin_vec[i];
32  if(verbose)
33  std::cout << "origin: " << origin_.transpose() << std::endl;
34 
35  const std::vector<int>& dim_vec = config[3]["dim"].as<std::vector<int>>();
36  for(unsigned int i = 0; i < dim_vec.size(); i++)
37  dim_(i) = dim_vec[i];
38  if(verbose)
39  std::cout << "dim: " << dim_.transpose() << std::endl;
40 
41  resolution_ = config[4]["resolution"].as<double>();
42  if(verbose)
43  std::cout << "resolution: " << resolution_ << std::endl;
44 
45  const std::vector<int>& data = config[5]["data"].as<std::vector<int>>();
46  data_.resize(data.size());
47  for(unsigned int i = 0; i < data.size(); i++)
48  data_[i] = data[i] > 0 ? 1 : 0;
49 
50  exist_ = true;
51  } catch (YAML::ParserException& e) {
52  //std::cout << e.what() << "\n";
53  exist_ = false;
54  }
55  }
56 
57  bool exist() { return exist_; }
58  Tf origin() { return origin_; }
59  Ti dim() { return dim_; }
60  double start(int i) { return start_(i); }
61  double goal(int i) { return goal_(i); }
62  double resolution() { return resolution_; }
63  std::vector<signed char> data() { return data_; }
64  private:
65  Tf start_;
66  Tf goal_;
67  Tf origin_;
68  Ti dim_;
69  double resolution_;
70  std::vector<signed char> data_;
71 
72  bool exist_ = false;
73 };
Definition: read_map.hpp:6