Thunderbots Project
Loading...
Searching...
No Matches
ball.h
1#pragma once
2
3#include <memory>
4#include <optional>
5
6#include "proto/world.pb.h"
7#include "software/time/timestamp.h"
8#include "software/world/ball_state.h"
9
10class Ball final
11{
12 public:
13 Ball() = delete;
14
24 explicit Ball(const Point &position, const Vector &velocity,
25 const Timestamp &timestamp, const Vector &acceleration = Vector(0, 0));
26
34 explicit Ball(const BallState &initial_state, const Timestamp &timestamp,
35 const Vector &acceleration = Vector(0, 0));
36
42 explicit Ball(const TbotsProto::Ball &ball_proto);
43
49 BallState currentState() const;
50
58 void updateState(const BallState &new_state, const Timestamp &new_timestamp,
59 const Vector &new_acceleration = Vector(0, 0));
60
66 Timestamp timestamp() const;
67
73 Point position() const;
74
80 Vector velocity() const;
81
87 Vector acceleration() const;
88
98 BallState estimateFutureState(const Duration &duration_in_future) const;
99
115 const Angle &expected_kick_direction, double min_kick_speed = 0.5,
116 const Angle &max_angle_difference = Angle::fromDegrees(20)) const;
117
125 bool operator==(const Ball &other) const;
126
133 bool operator!=(const Ball &other) const;
134
135 private:
136 BallState current_state_;
137 Timestamp timestamp_;
138 Vector acceleration_; // used to predict future states
139};
Definition angle.h:15
static constexpr Angle fromDegrees(double deg)
Definition angle.h:408
Definition ball_state.h:11
Definition ball.h:11
bool operator!=(const Ball &other) const
Definition ball.cpp:88
Vector velocity() const
Definition ball.cpp:52
void updateState(const BallState &new_state, const Timestamp &new_timestamp, const Vector &new_acceleration=Vector(0, 0))
Definition ball.cpp:29
BallState currentState() const
Definition ball.cpp:24
Vector acceleration() const
Definition ball.cpp:57
bool hasBallBeenKicked(const Angle &expected_kick_direction, double min_kick_speed=0.5, const Angle &max_angle_difference=Angle::fromDegrees(20)) const
Definition ball.cpp:73
Timestamp timestamp() const
Definition ball.cpp:42
Point position() const
Definition ball.cpp:47
BallState estimateFutureState(const Duration &duration_in_future) const
Definition ball.cpp:62
bool operator==(const Ball &other) const
Definition ball.cpp:83
Definition duration.h:12
Definition point.h:14
Definition timestamp.h:21
Definition vector.h:12