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.
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
12using namespace common_lib::structures;
13
14class PurePursuitTestFixture : public ::testing::Test {
15protected:
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
31TEST_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
46TEST_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
62TEST_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
78TEST_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
94TEST_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
109TEST_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}
std::shared_ptr< PurePursuit > lat_controller_
TEST_F(PurePursuitTestFixture, Test_calculate_alpha_1)
Test PurePursuit - calculate_alpha() typical angle - path point left.