Quad-SDK
Loading...
Searching...
No Matches
global_body_planner_test_fixture.h
1#ifndef GLOBAL_BODY_PLANNER_TEST_H
2#define GLOBAL_BODY_PLANNER_TEST_H
3
4#include <gtest/gtest.h>
5#include <quad_utils/fast_terrain_map.h>
6#include <quad_utils/ros_utils.h>
7#include <ros/ros.h>
8
9#include <grid_map_core/grid_map_core.hpp>
10#include <grid_map_ros/GridMapRosConverter.hpp>
11#include <grid_map_ros/grid_map_ros.hpp>
12
13#include "global_body_planner/gbpl.h"
14#include "global_body_planner/planner_class.h"
15#include "global_body_planner/planning_utils.h"
16
18
25class GlobalBodyPlannerTestFixture : public ::testing::Test {
26 public:
32 grid_map::GridMap map({"z_inpainted", "z_smooth", "normal_vectors_x",
33 "normal_vectors_y", "normal_vectors_z",
34 "smooth_normal_vectors_x", "smooth_normal_vectors_y",
35 "smooth_normal_vectors_z", "traversability"});
36 map.setGeometry(grid_map::Length(10, 10), 0.05);
38
39 double slope = 0;
40 updateTerrainSlope(slope);
41
42 // Create planner and configuration
43 ros::NodeHandle nh;
45 planner_ = std::make_shared<PlannerClass>(FORWARD, planner_config_);
46 }
47
52 void updateTerrainSlope(double grade) {
53 double slope = atan(grade);
54 Eigen::Vector3d normal_vec;
55 normal_vec << -sin(slope), 0, cos(slope);
56
57 for (grid_map::GridMapIterator it(terrain_grid_map_); !it.isPastEnd();
58 ++it) {
59 grid_map::Position position;
60 terrain_grid_map_.getPosition(*it, position);
61 terrain_grid_map_.at("z_inpainted", *it) = position.x() * grade;
62 terrain_grid_map_.at("z_smooth", *it) =
63 terrain_grid_map_.at("z_inpainted", *it);
64 terrain_grid_map_.at("normal_vectors_x", *it) = normal_vec.x();
65 terrain_grid_map_.at("normal_vectors_y", *it) = normal_vec.y();
66 terrain_grid_map_.at("normal_vectors_z", *it) = normal_vec.z();
67 terrain_grid_map_.at("smooth_normal_vectors_x", *it) = normal_vec.x();
68 terrain_grid_map_.at("smooth_normal_vectors_y", *it) = normal_vec.y();
69 terrain_grid_map_.at("smooth_normal_vectors_z", *it) = normal_vec.z();
70 terrain_grid_map_.at("traversability", *it) = 1.0;
71 }
72
74 planner_config_.terrain = terrain_;
75 planner_config_.terrain_grid_map = terrain_grid_map_;
76 }
77
82 void updateTerrainHeight(double height) {
83 Eigen::Vector3d normal_vec;
84 normal_vec << 0, 0, 0;
85
86 for (grid_map::GridMapIterator it(terrain_grid_map_); !it.isPastEnd();
87 ++it) {
88 grid_map::Position position;
89 terrain_grid_map_.getPosition(*it, position);
90 terrain_grid_map_.at("z_inpainted", *it) = height;
91 terrain_grid_map_.at("z_smooth", *it) =
92 terrain_grid_map_.at("z_inpainted", *it);
93 terrain_grid_map_.at("normal_vectors_x", *it) = normal_vec.x();
94 terrain_grid_map_.at("normal_vectors_y", *it) = normal_vec.y();
95 terrain_grid_map_.at("normal_vectors_z", *it) = normal_vec.z();
96 terrain_grid_map_.at("smooth_normal_vectors_x", *it) = normal_vec.x();
97 terrain_grid_map_.at("smooth_normal_vectors_y", *it) = normal_vec.y();
98 terrain_grid_map_.at("smooth_normal_vectors_z", *it) = normal_vec.z();
99 terrain_grid_map_.at("traversability", *it) = 1.0;
100 }
101
103 planner_config_.terrain = terrain_;
104 planner_config_.terrain_grid_map = terrain_grid_map_;
105 }
106
108 std::shared_ptr<PlannerClass> planner_;
109
112
114 grid_map::GridMap terrain_grid_map_;
115
118};
119
120#endif // GLOBAL_BODY_PLANNER_TEST_H
A terrain map class built for fast and efficient sampling.
Definition fast_terrain_map.h:16
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
A test fixture for the global body planning class.
Definition global_body_planner_test_fixture.h:25
GlobalBodyPlannerTestFixture()
Constructor for GlobalBodyPlannerTestFixture Class.
Definition global_body_planner_test_fixture.h:31
grid_map::GridMap terrain_grid_map_
Flat terrain map.
Definition global_body_planner_test_fixture.h:114
std::shared_ptr< PlannerClass > planner_
Planner class.
Definition global_body_planner_test_fixture.h:108
void updateTerrainSlope(double grade)
Constructor for GlobalBodyPlannerTestFixture Class.
Definition global_body_planner_test_fixture.h:52
void updateTerrainHeight(double height)
Constructor for GlobalBodyPlannerTestFixture Class.
Definition global_body_planner_test_fixture.h:82
FastTerrainMap terrain_
Sloped terrain map.
Definition global_body_planner_test_fixture.h:117
PlannerConfig planner_config_
Planner configuration.
Definition global_body_planner_test_fixture.h:111
Planner Configuration.
Definition planning_utils.h:36
void loadParamsFromServer(ros::NodeHandle nh)
Load the Global Body Planner parameters from ROS server.
Definition planning_utils.h:111