Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
utils.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <ros/ros.h>
4
5#include <ament_index_cpp/get_package_share_directory.hpp>
6#include <chrono>
7#include <filesystem>
8#include <fstream>
9#include <regex>
10#include <set>
11#include <string>
12#include <vector>
13
16#include "gtest/gtest.h"
18#include "planning/planning.hpp"
21#include "rclcpp/rclcpp.hpp"
22#include "utils/files.hpp"
23#include "utils/splines.hpp"
24
25using testing::Eq;
26namespace fs = std::filesystem;
27
34std::ifstream open_read_file(const std::string &filename);
35
41std::vector<common_lib::structures::Cone> cone_vector_from_file(const std::string &path);
42
48std::pair<std::vector<common_lib::structures::Cone>, std::vector<common_lib::structures::Cone>>
49track_from_file(const std::string &path);
50
56std::vector<common_lib::structures::PathPoint> path_from_file(const std::string &path);
57
74void extract_info(const std::string_view &filename_view, int &size, int &n_outliers);
75
81float consecutive_max_distance(const std::vector<common_lib::structures::Cone> &cones);
82
89std::vector<std::pair<double, double>> order_vector_of_pairs(
90 const std::vector<std::pair<double, double>> &vec);
91
97
105float round_n(float num, int decimal_places);
106
108 std::size_t operator()(const common_lib::structures::PathPoint &p) const {
109 // Adjust the hash function for a bigger tolerance
110 std::size_t h1 = std::hash<long>()(static_cast<long>(std::round(p.position.x / 0.5)));
111 std::size_t h2 = std::hash<long>()(static_cast<long>(std::round(p.position.y / 0.5)));
112 return h1 ^ (h2 << 1); // Combine the hashes using bitwise shift to reduce collisions
113 }
114};
115
118 const common_lib::structures::PathPoint &p2) const {
119 // Use a bigger tolerance for equality comparison
120 bool result = std::abs(p1.position.x - p2.position.x) < 0.5 &&
121 std::abs(p1.position.y - p2.position.y) < 0.5;
122 return result;
123 }
124};
std::vector< std::pair< double, double > > order_vector_of_pairs(const std::vector< std::pair< double, double > > &vec)
orders a vector of pairs to make it easier to compare them
Definition utils.cpp:118
std::string get_current_date_time_as_string()
Get current date and time as a string.
Definition utils.cpp:125
void extract_info(const std::string_view &filename_view, int &size, int &n_outliers)
Extracts the size and number of outliers from a filename.
Definition utils.cpp:96
std::vector< common_lib::structures::Cone > cone_vector_from_file(const std::string &path)
Retrieves a cone vector from a file.
Definition utils.cpp:19
std::vector< common_lib::structures::PathPoint > path_from_file(const std::string &path)
Retrieves a path point vector from a file.
Definition utils.cpp:76
std::ifstream open_read_file(const std::string &filename)
Opens a file for reading.
Definition utils.cpp:3
float consecutive_max_distance(const std::vector< common_lib::structures::Cone > &cones)
Retrieves the max consecutive distance between adjacent cones in a vector.
Definition utils.cpp:107
std::pair< std::vector< common_lib::structures::Cone >, std::vector< common_lib::structures::Cone > > track_from_file(const std::string &path)
Retrieves a track (a pair of colored cone vectors from each side) from a file.
Definition utils.cpp:51
float round_n(float num, int decimal_places)
rounds float to n decimal places
Definition utils.cpp:136
bool operator()(const common_lib::structures::PathPoint &p1, const common_lib::structures::PathPoint &p2) const
Definition utils.hpp:117
std::size_t operator()(const common_lib::structures::PathPoint &p) const
Definition utils.hpp:108