Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
cone.hpp
Go to the documentation of this file.
1
#pragma once
2
#include <cmath>
3
#include <functional>
4
#include <iostream>
5
#include <string>
6
7
#include "
common_lib/competition_logic/color.hpp
"
8
#include "
common_lib/structures/position.hpp
"
9
10
namespace
common_lib::structures
{
11
12
struct
Cone
{
13
Position
position
;
14
common_lib::competition_logic::Color
color
;
15
double
certainty
= 1.0;
16
static
constexpr
double
equality_tolerance
= 0.1;
17
bool
is_large
=
false
;
18
rclcpp::Time
timestamp
= rclcpp::Time(0);
//< Last time the cone was updated
19
Cone
() =
default
;
20
Cone
(
Position
position
,
common_lib::competition_logic::Color
cone_color,
double
certainty
,
21
rclcpp::Time
timestamp
= rclcpp::Time(0));
22
Cone
(
double
x,
double
y,
const
std::string&
color
=
"unknown"
,
double
certainty
= 1.0,
23
rclcpp::Time
timestamp
= rclcpp::Time(0));
24
friend
bool
operator==
(
const
Cone
& c1,
const
Cone
& c2) {
25
return
c1.
position
.
euclidean_distance
(c2.
position
) <
26
common_lib::structures::Cone::equality_tolerance
;
27
}
28
};
29
30
}
// namespace common_lib::structures
31
36
namespace
std
{
37
template
<>
38
struct
hash<
common_lib
::structures::Cone> {
39
std::size_t
operator()
(
const
common_lib::structures::Cone
& cone)
const
noexcept
{
40
// Quantize position to improve compatibility with equality_tolerance
41
auto
quantize = [](
double
value,
double
tolerance) {
return
std::round(value / tolerance); };
42
std::size_t x_hash = std::hash<double>()(
43
quantize(cone.position.x,
common_lib::structures::Cone::equality_tolerance
));
44
std::size_t y_hash = std::hash<double>()(
45
quantize(cone.position.y,
common_lib::structures::Cone::equality_tolerance
));
46
return
x_hash ^ (y_hash << 1);
47
}
48
};
49
}
// namespace std
color.hpp
common_lib::competition_logic::Color
Color
Definition
color.hpp:11
common_lib::structures
Definition
cone.hpp:10
common_lib
Definition
weight_transfer.hpp:7
std
Hash function for cones.
Definition
cone.hpp:36
position.hpp
common_lib::structures::Cone
Definition
cone.hpp:12
common_lib::structures::Cone::certainty
double certainty
Definition
cone.hpp:15
common_lib::structures::Cone::operator==
friend bool operator==(const Cone &c1, const Cone &c2)
Definition
cone.hpp:24
common_lib::structures::Cone::color
common_lib::competition_logic::Color color
Definition
cone.hpp:14
common_lib::structures::Cone::position
Position position
Definition
cone.hpp:13
common_lib::structures::Cone::is_large
bool is_large
Definition
cone.hpp:17
common_lib::structures::Cone::timestamp
rclcpp::Time timestamp
Definition
cone.hpp:18
common_lib::structures::Cone::equality_tolerance
static constexpr double equality_tolerance
Definition
cone.hpp:16
common_lib::structures::Cone::Cone
Cone()=default
common_lib::structures::Position
Definition
position.hpp:7
common_lib::structures::Position::euclidean_distance
double euclidean_distance(const Position &other) const
Definition
position.cpp:10
std::hash< common_lib::structures::Cone >::operator()
std::size_t operator()(const common_lib::structures::Cone &cone) const noexcept
Definition
cone.hpp:39
src
common_lib
include
common_lib
structures
cone.hpp
Generated by
1.9.8