Roomba Controller Dashboard 1
A GUI and TCP client application that is used to control a Roomba for Computer Engineering 2880 @ Iowa State
Loading...
Searching...
No Matches
Hole.hpp
Go to the documentation of this file.
1
5#ifndef HOLE_H
6#define HOLE_H
7
8#include "vector"
9#include <memory>
10#include "Pose2D.hpp"
11#include <cmath>
12#include <ostream>
13
14#define HOLE_SIZE 69.06 // centimeters
15
20class Hole {
21 private:
22 Pose2D cornerOne;
23 Pose2D cornerTwo;
24 double threshold = -1;
25 double phi = -1;
26 double x_translation_one = -1;
27 double y_translation_one = -1;
28 double x_translation_two = -1;
29 double y_translation_two = -1;
30 double holeSize = -1;
31
32 bool foundHole = false;
33
34 std::unique_ptr<std::vector<Pose2D>> points;
35 std::unique_ptr<std::vector<Hole>> pointHoles;
36 public:
37
45 Hole(double X1, double Y1, double X2, double Y2, double holeSize);
46
50 Hole(const Pose2D& positionOne, const Pose2D& positionTwo, bool foundHole, const std::vector<Pose2D>& points, double holeSize);
51
59 Hole(double x1, double y1, double x2, double y2);
60
64 Hole(const Pose2D& positionOne, const Pose2D& positionTwo, double holeSize);
65
71 std::vector<Pose2D> getSuggestedNodePlacements();
72
78 void registerPointsToHole(const Pose2D& positionOne, const Pose2D& positionTwo);
79
86 friend std::ostream &operator<<(std::ostream &os, const Hole &hole);
87
93 [[nodiscard]] Pose2D copyDoOperation(const Pose2D& position) const;
94
99
104
109 bool pointCouldBeMemberOfHole(const Pose2D& measurment);
110
115 bool isFoundHole() const {return foundHole;}
116
121 [[nodiscard]] std::vector<Hole> getSubHolesCopy() const;
122
126 Hole();
127
131 Hole(const Hole& hole);
132
137 explicit Hole(const Pose2D& initialPoint, double holeSize);
138
144 void addPoint(const Pose2D& position);
145
151 bool isInSquare(Pose2D& position) const;
152
157 void offset(const Pose2D& offset);
158
164 bool lineIntersectsHole(const Pose2D& posOne, const Pose2D& posTwo) const;
165};
166
167#endif // HOLE_H
Definition Hole.hpp:20
Pose2D getOneSquareCorner()
Definition Hole.cpp:35
friend std::ostream & operator<<(std::ostream &os, const Hole &hole)
Definition Hole.cpp:373
void addPoint(const Pose2D &position)
Definition Hole.cpp:170
std::vector< Pose2D > getSuggestedNodePlacements()
Definition Hole.cpp:56
void offset(const Pose2D &offset)
Definition Hole.cpp:381
std::vector< Hole > getSubHolesCopy() const
Definition Hole.cpp:458
Hole()
Definition Hole.cpp:121
Pose2D copyDoOperation(const Pose2D &position) const
Definition Hole.cpp:43
void registerPointsToHole(const Pose2D &positionOne, const Pose2D &positionTwo)
Definition Hole.cpp:306
Pose2D getSecondSquareCorner()
Definition Hole.cpp:39
bool lineIntersectsHole(const Pose2D &posOne, const Pose2D &posTwo) const
Definition Hole.cpp:393
bool isFoundHole() const
Definition Hole.hpp:115
bool pointCouldBeMemberOfHole(const Pose2D &measurment)
Definition Hole.cpp:138
bool isInSquare(Pose2D &position) const
Definition Hole.cpp:83