Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
position.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <functional>
4#include <rclcpp/rclcpp.hpp>
5
7struct Position {
8 double x = 0;
9 double y = 0;
10 double x_noise = 0;
11 double y_noise = 0;
12 rclcpp::Time timestamp = rclcpp::Time(0); //< Last time the position was updated
13
17 Position() = default;
18
22 Position(double x, double y, double x_noise = 0.0, double y_noise = 0.0,
23 rclcpp::Time timestamp = rclcpp::Time(0));
24 double euclidean_distance(const Position &other) const;
25
26 friend bool operator==(const Position &p1, const Position &p2) {
27 return std::abs(p1.x - p2.x) < 1e-10 && std::abs(p1.y - p2.y) < 1e-10;
28 }
29};
30
40double cross_product(const Position &p1, const Position &p2, const Position &p3);
41
42double euclidean_distance(const Position &p1, const Position &p2);
43
44bool operator<(const Position &lhs, const Position &rhs);
45
46} // namespace common_lib::structures
47
52namespace std {
53template <>
54struct hash<common_lib::structures::Position> {
55 std::size_t operator()(const common_lib::structures::Position &position) const noexcept {
56 std::size_t x_hash = std::hash<double>()(position.x);
57 std::size_t y_hash = std::hash<double>()(position.y);
58 return x_hash ^ (y_hash << 1);
59 }
60};
61} // namespace std
bool operator<(const Position &lhs, const Position &rhs)
Definition position.cpp:14
double cross_product(const Position &p1, const Position &p2, const Position &p3)
Calculate the cross product of two vectors.
Definition position.cpp:18
double euclidean_distance(const Position &p1, const Position &p2)
Definition position.cpp:22
Hash function for cones.
Definition cone.hpp:36
Position()=default
Construct a new Position object with default values.
double euclidean_distance(const Position &other) const
Definition position.cpp:10
friend bool operator==(const Position &p1, const Position &p2)
Definition position.hpp:26
std::size_t operator()(const common_lib::structures::Position &position) const noexcept
Definition position.hpp:55