Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
track_loader_test.cpp
Go to the documentation of this file.
2
3#include <gtest/gtest.h>
4#include <yaml-cpp/yaml.h>
5
6#include <Eigen/Dense>
7#include <fstream>
8
9TEST(AddLandmarksTest, EmptyList) {
10 Eigen::VectorXd track(0);
11 YAML::Node list = YAML::Load("[]");
12 add_landmarks(track, list);
13 EXPECT_EQ(track.size(), 0);
14}
15
16TEST(AddLandmarksTest, SingleLandmark) {
17 Eigen::VectorXd track(0);
18 YAML::Node list = YAML::Load("[{position: [1.0, 2.0]}]");
19 add_landmarks(track, list);
20 ASSERT_EQ(track.size(), 2);
21 EXPECT_DOUBLE_EQ(track[0], 1.0);
22 EXPECT_DOUBLE_EQ(track[1], 2.0);
23}
24
25TEST(AddLandmarksTest, MultipleLandmarks) {
26 Eigen::VectorXd track(0);
27 YAML::Node list =
28 YAML::Load("[{position: [1.0, 2.0]}, {position: [3.0, 4.0]}, {position: [5.0, 6.0]}]");
29 add_landmarks(track, list);
30 ASSERT_EQ(track.size(), 6);
31 EXPECT_DOUBLE_EQ(track[0], 1.0);
32 EXPECT_DOUBLE_EQ(track[1], 2.0);
33 EXPECT_DOUBLE_EQ(track[2], 3.0);
34 EXPECT_DOUBLE_EQ(track[3], 4.0);
35 EXPECT_DOUBLE_EQ(track[4], 5.0);
36 EXPECT_DOUBLE_EQ(track[5], 6.0);
37}
38
39TEST(AddLandmarksTest, AppendsToExistingTrack) {
40 Eigen::VectorXd track(2);
41 track << 9.0, 8.0;
42 YAML::Node list = YAML::Load("[{position: [1.0, 2.0]}, {position: [3.0, 4.0]}]");
43 add_landmarks(track, list);
44 ASSERT_EQ(track.size(), 6);
45 EXPECT_DOUBLE_EQ(track[0], 9.0);
46 EXPECT_DOUBLE_EQ(track[1], 8.0);
47 EXPECT_DOUBLE_EQ(track[2], 1.0);
48 EXPECT_DOUBLE_EQ(track[3], 2.0);
49 EXPECT_DOUBLE_EQ(track[4], 3.0);
50 EXPECT_DOUBLE_EQ(track[5], 4.0);
51}
52
53TEST(AddLandmarksTest, HandlesNegativeCoordinates) {
54 Eigen::VectorXd track(0);
55 YAML::Node list = YAML::Load("[{position: [-1.5, -2.5]}]");
56 add_landmarks(track, list);
57 ASSERT_EQ(track.size(), 2);
58 EXPECT_DOUBLE_EQ(track[0], -1.5);
59 EXPECT_DOUBLE_EQ(track[1], -2.5);
60}
61
62TEST(LoadMapTest, LoadsAccelerationYamlWithoutFailure) {
63 Eigen::Vector3d start_position;
64 Eigen::VectorXd track;
65 std::string package_prefix = ament_index_cpp::get_package_prefix("slam");
66 std::string mapPath = package_prefix + "/../../src/slam/test/track_loader/skidpad.yaml";
67 load_initial_state(mapPath, start_position, track);
68 std::string track_string = "";
69 for (int i = 0; i < track.size() / 2; ++i) {
70 track_string +=
71 "(" + std::to_string(track[2 * i]) + ", " + std::to_string(track[2 * i + 1]) + "), ";
72 }
73 RCLCPP_INFO(rclcpp::get_logger("slam"), "Track: %s", track_string.c_str());
74}
void load_initial_state(std::string mapPath, Eigen::Vector3d &start_pose, Eigen::VectorXd &track)
loads the map from the specified path and fills the start pose and track.
void add_landmarks(Eigen::VectorXd &track, const Node &list)
adds the landmarks in the list to the track.
TEST(AddLandmarksTest, EmptyList)