1#ifndef FAST_TERRAIN_MAP_H
2#define FAST_TERRAIN_MAP_H
4#include <quad_utils/function_timer.h>
8#include <eigen3/Eigen/Eigen>
9#include <grid_map_core/grid_map_core.hpp>
40 void loadData(
int x_size,
int y_size, std::vector<double> x_data,
41 std::vector<double> y_data,
42 std::vector<std::vector<double>> z_data,
43 std::vector<std::vector<double>> nx_data,
44 std::vector<std::vector<double>> ny_data,
45 std::vector<std::vector<double>> nz_data,
46 std::vector<std::vector<double>> z_data_filt,
47 std::vector<std::vector<double>> nx_data_filt,
48 std::vector<std::vector<double>> ny_data_filt,
49 std::vector<std::vector<double>> nz_data_filt);
89 bool isInRange(
const double x,
const double y)
const;
105 std::array<double, 3>
getSurfaceNormal(
const double x,
const double y)
const;
122 const double y)
const;
131 const double y)
const;
140 Eigen::Vector3d
projectToMap(
const Eigen::Vector3d point,
141 const Eigen::Vector3d direction);
147 std::vector<double>
getXData()
const;
153 std::vector<double>
getYData()
const;
A terrain map class built for fast and efficient sampling.
Definition fast_terrain_map.h:16
double y_diff_
Distance between nodes in y.
Definition fast_terrain_map.h:192
std::vector< std::vector< double > > z_data_
The nested vector of z data at each [x,y] location.
Definition fast_terrain_map.h:201
void loadFlatElevated(double height)
Load in a default terrain map 10x10m, four corners with elevated terrain.
Definition fast_terrain_map.cpp:60
bool isEmpty() const
Determine if the map is empty.
Definition fast_terrain_map.cpp:468
int getYIndex(const double y) const
Return the y index.
Definition fast_terrain_map.h:177
double getGroundHeightFiltered(const double x, const double y) const
Return the filtered ground height at a requested location.
Definition fast_terrain_map.cpp:278
std::vector< double > getXData() const
Return the vector of x_data of the map.
Definition fast_terrain_map.cpp:464
std::array< double, 3 > getSurfaceNormal(const double x, const double y) const
Return the surface normal at a requested location.
Definition fast_terrain_map.cpp:302
void loadStep(double height)
Load in a terrain map with a step at x = 0.
Definition fast_terrain_map.cpp:108
std::vector< std::vector< double > > nz_data_
Definition fast_terrain_map.h:213
void loadData(int x_size, int y_size, std::vector< double > x_data, std::vector< double > y_data, std::vector< std::vector< double > > z_data, std::vector< std::vector< double > > nx_data, std::vector< std::vector< double > > ny_data, std::vector< std::vector< double > > nz_data, std::vector< std::vector< double > > z_data_filt, std::vector< std::vector< double > > nx_data_filt, std::vector< std::vector< double > > ny_data_filt, std::vector< std::vector< double > > nz_data_filt)
Load data from a grid_map::GridMap object into a FastTerrainMap object.
Definition fast_terrain_map.cpp:8
int y_size_
The number of elements in the y direction.
Definition fast_terrain_map.h:186
Eigen::Vector3d projectToMap(const Eigen::Vector3d point, const Eigen::Vector3d direction)
Return the (approximate) intersection of the height map and a vector. Returned point lies exactly on ...
Definition fast_terrain_map.cpp:431
std::array< double, 3 > getSurfaceNormalFiltered(const double x, const double y) const
Return the filtered surface normal at a requested location.
Definition fast_terrain_map.cpp:345
void loadSlope(double grade)
Load in a default terrain map 10x10m, four corners with sloped terrain.
Definition fast_terrain_map.cpp:82
std::vector< std::vector< double > > nx_data_filt_
Definition fast_terrain_map.h:220
double getGroundHeight(const double x, const double y) const
Return the ground height at a requested location.
Definition fast_terrain_map.cpp:255
std::vector< std::vector< double > > ny_data_
Definition fast_terrain_map.h:209
std::vector< double > x_data_
The vector of x data.
Definition fast_terrain_map.h:195
bool isInRange(const double x, const double y) const
Check if map data is defined at a requested location.
Definition fast_terrain_map.cpp:245
int x_size_
The number of elements in the x direction.
Definition fast_terrain_map.h:183
FastTerrainMap()
Constructor for FastTerrainMap Class.
Definition fast_terrain_map.cpp:6
double x_diff_
Distance between nodes in x.
Definition fast_terrain_map.h:189
void loadFlat()
Load in a default terrain map 10x10m, four corners with flat terrain.
Definition fast_terrain_map.cpp:39
std::vector< double > y_data_
The vector of y data.
Definition fast_terrain_map.h:198
std::vector< std::vector< double > > nx_data_
Definition fast_terrain_map.h:205
std::vector< double > getYData() const
Return the vector of y_data of the map.
Definition fast_terrain_map.cpp:466
std::vector< std::vector< double > > z_data_filt_
The nested vector of filtered z data at each [x,y] location.
Definition fast_terrain_map.h:216
std::vector< std::vector< double > > ny_data_filt_
Definition fast_terrain_map.h:224
Eigen::Vector3d getSurfaceNormalFilteredEigen(const double x, const double y) const
Return the filtered surface normal at a requested location.
Definition fast_terrain_map.cpp:388
std::vector< std::vector< double > > nz_data_filt_
Definition fast_terrain_map.h:228
int getXIndex(const double x) const
Return the x index.
Definition fast_terrain_map.h:167
void loadDataFromGridMap(const grid_map::GridMap map)
Load data from a grid_map::GridMap object into a FastTerrainMap object.
Definition fast_terrain_map.cpp:158