Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
pure_pursuit_test.cpp
Go to the documentation of this file.
1
#include "
lateral_controller/pure_pursuit.hpp
"
2
3
#include <gtest/gtest.h>
4
5
#include <fstream>
6
#include <sstream>
7
#include <string>
8
#include <vector>
9
10
#include "
ros_node/ros_node.hpp
"
11
12
using namespace
common_lib::structures
;
13
14
class
PurePursuitTestFixture
:
public
::testing::Test {
15
protected
:
16
std::shared_ptr<PurePursuit>
lat_controller_
;
17
ControlParameters
params_
;
18
19
void
SetUp
()
override
{
20
// LPF with alpha=1.0 means no filtering
21
params_
.pure_pursuit_lpf_alpha_ = 1.0;
22
params_
.pure_pursuit_lpf_initial_value_ = 0.0;
23
lat_controller_
= std::make_shared<PurePursuit>(
params_
);
24
}
25
};
26
31
TEST_F
(
PurePursuitTestFixture
, Test_calculate_alpha_1) {
32
Position
vehicle_cg =
Position
(5, 4.46);
33
Position
vehicle_rear_wheel =
Position
(6, 2);
34
Position
lookahead_point =
Position
(1, 4);
35
double
rear_wheel_2_c_g = 2.655484889;
36
37
double
alpha = lat_controller_->calculate_alpha(vehicle_rear_wheel, vehicle_cg, lookahead_point,
38
rear_wheel_2_c_g);
39
EXPECT_NEAR(0.804, alpha, 0.001);
40
}
41
46
TEST_F
(
PurePursuitTestFixture
, Test_calculate_alpha_2) {
47
Position
vehicle_cg =
Position
(3, 3);
48
Position
vehicle_rear_wheel =
Position
(3, 5);
49
Position
lookahead_point =
Position
(5, 1);
50
double
rear_wheel_2_c_g = 2;
51
52
double
alpha = lat_controller_->calculate_alpha(vehicle_rear_wheel, vehicle_cg, lookahead_point,
53
rear_wheel_2_c_g);
54
55
EXPECT_NEAR(0.463, alpha, 0.001);
56
}
57
62
TEST_F
(
PurePursuitTestFixture
, Test_calculate_alpha_3) {
63
Position
vehicle_cg =
Position
(3, 3);
64
Position
vehicle_rear_wheel =
Position
(3, 5);
65
Position
lookahead_point =
Position
(5, 5);
66
double
rear_wheel_2_c_g = 2;
67
68
double
alpha = lat_controller_->calculate_alpha(vehicle_rear_wheel, vehicle_cg, lookahead_point,
69
rear_wheel_2_c_g);
70
71
EXPECT_NEAR(1.570, alpha, 0.001);
72
}
73
78
TEST_F
(
PurePursuitTestFixture
, Test_calculate_alpha_4) {
79
Position
vehicle_cg =
Position
(3, 3);
80
Position
vehicle_rear_wheel =
Position
(3, 5);
81
Position
lookahead_point =
Position
(3, 0);
82
double
rear_wheel_2_c_g = 2;
83
84
double
alpha = lat_controller_->calculate_alpha(vehicle_rear_wheel, vehicle_cg, lookahead_point,
85
rear_wheel_2_c_g);
86
87
EXPECT_NEAR(0, alpha, 0.001);
88
}
89
94
TEST_F
(
PurePursuitTestFixture
, Test_calculate_alpha_5) {
95
Position
vehicle_cg =
Position
(3, 3);
96
Position
vehicle_rear_wheel =
Position
(3, 5);
97
Position
lookahead_point =
Position
(3, 7);
98
double
rear_wheel_2_c_g = 2;
99
100
double
alpha = lat_controller_->calculate_alpha(vehicle_rear_wheel, vehicle_cg, lookahead_point,
101
rear_wheel_2_c_g);
102
103
EXPECT_NEAR(3.141, alpha, 0.001);
104
}
105
109
TEST_F
(
PurePursuitTestFixture
, Test_pp_steering_control_law_1) {
110
Position
cg =
Position
(5, 4.46);
111
Position
rear_axis =
Position
(6, 2);
112
Position
lookahead_point =
Position
(1, 4);
113
double
dist_cg_2_rear_axis = 2.655484889;
114
115
double
steering_cmd =
116
lat_controller_->pp_steering_control_law(rear_axis, cg, lookahead_point, dist_cg_2_rear_axis);
117
118
// Alpha: 0.804189
119
// ld_: 5.38516
120
EXPECT_NEAR(0.335, steering_cmd, 0.001);
121
}
PurePursuitTestFixture
Definition
pure_pursuit_test.cpp:14
PurePursuitTestFixture::lat_controller_
std::shared_ptr< PurePursuit > lat_controller_
Definition
pure_pursuit_test.cpp:16
PurePursuitTestFixture::params_
ControlParameters params_
Definition
pure_pursuit_test.cpp:17
PurePursuitTestFixture::SetUp
void SetUp() override
Definition
pure_pursuit_test.cpp:19
common_lib::structures
Definition
cone.hpp:10
pure_pursuit.hpp
TEST_F
TEST_F(PurePursuitTestFixture, Test_calculate_alpha_1)
Test PurePursuit - calculate_alpha() typical angle - path point left.
Definition
pure_pursuit_test.cpp:31
ros_node.hpp
common_lib::structures::Position
Definition
position.hpp:7
src
control
test
lateral_controller
pure_pursuit_test.cpp
Generated by
1.9.8