Thunderbots Project
Loading...
Searching...
No Matches
pass.h
1#pragma once
2
3#include <array>
4#include <cstdlib>
5#include <iostream>
6
7#include "proto/parameters.pb.h"
8#include "shared/constants.h"
9#include "software/geom/point.h"
10#include "software/time/timestamp.h"
11
12// The number of parameters (representing a pass) that we optimize
13// (receive_location_x, receive_location_y)
14static const int NUM_PARAMS_TO_OPTIMIZE = 2;
15
19class Pass
20{
21 public:
22 Pass() = delete;
23
31 Pass(Point passer_point, Point receiver_point, double pass_speed_m_per_s);
32
41 static Pass fromPassArray(
42 Point passer_point, const std::array<double, NUM_PARAMS_TO_OPTIMIZE>& pass_array,
43 double pass_speed_m_per_s);
44
45
57 static Pass fromDestReceiveSpeed(const Point& ball_position,
58 const Point& pass_destination,
59 double dest_speed_m_per_s,
60 double min_pass_speed_m_per_s,
61 double max_pass_speed_m_per_s);
71 static Pass fromDestReceiveSpeed(const Point& ball_position,
72 const Point& pass_destination,
73 const TbotsProto::PassingConfig& passing_config);
74
87 static double getPassSpeed(const Point& ball_position, const Point& pass_destination,
88 double receive_speed_m_per_s,
89 double min_pass_speed_m_per_s,
90 double max_pass_speed_m_per_s);
91
97 std::array<double, NUM_PARAMS_TO_OPTIMIZE> toPassArray() const;
98
104 Point passerPoint() const;
105
111 Point receiverPoint() const;
112
120
127 Angle passerOrientation() const;
128
134 double speed() const;
135
144
152 friend std::ostream& operator<<(std::ostream& output_stream, const Pass& pass);
153
162 bool operator==(const Pass& other) const;
163
164 private:
165 // The location of the passer
166 Point passer_point;
167
168 // The location of the receiver
169 Point receiver_point;
170
171 // The speed of the pass in meters/second
172 double pass_speed_m_per_s;
173};
Definition angle.h:15
Definition duration.h:12
Definition pass.h:20
friend std::ostream & operator<<(std::ostream &output_stream, const Pass &pass)
Definition pass.cpp:133
Angle receiverOrientation() const
Definition pass.cpp:20
bool operator==(const Pass &other) const
Definition pass.cpp:141
double speed() const
Definition pass.cpp:36
std::array< double, NUM_PARAMS_TO_OPTIMIZE > toPassArray() const
Definition pass.cpp:122
Point receiverPoint() const
Definition pass.cpp:15
Duration estimatePassDuration() const
Definition pass.cpp:127
static double getPassSpeed(const Point &ball_position, const Point &pass_destination, double receive_speed_m_per_s, double min_pass_speed_m_per_s, double max_pass_speed_m_per_s)
Definition pass.cpp:68
Point passerPoint() const
Definition pass.cpp:31
Angle passerOrientation() const
Definition pass.cpp:25
static Pass fromDestReceiveSpeed(const Point &ball_position, const Point &pass_destination, double dest_speed_m_per_s, double min_pass_speed_m_per_s, double max_pass_speed_m_per_s)
Definition pass.cpp:48
static Pass fromPassArray(Point passer_point, const std::array< double, NUM_PARAMS_TO_OPTIMIZE > &pass_array, double pass_speed_m_per_s)
Definition pass.cpp:41
Definition point.h:14