RIT VEXU Core API
Loading...
Searching...
No Matches
pure_pursuit.h
1#pragma once
2
3#include "../core/include/utils/geometry.h"
4#include "../core/include/utils/vector2d.h"
5#include "vex.h"
6#include <vector>
7
8using namespace vex;
9
10namespace PurePursuit {
14class Path {
15public:
21 Path(std::vector<point_t> points, double radius);
22
26 std::vector<point_t> get_points();
27
31 double get_radius();
32
36 bool is_valid();
37
38private:
39 std::vector<point_t> points;
40 double radius;
41 bool valid;
42};
47struct spline {
48 double a, b, c, d, x_start, x_end;
49
50 double getY(double x) { return a * pow((x - x_start), 3) + b * pow((x - x_start), 2) + c * (x - x_start) + d; }
51};
57 double x;
58 double y;
59 double dir;
60 double mag;
61
62 point_t getPoint() const { return {x, y}; }
63
64 Vector2D getTangent() const { return Vector2D(dir, mag); }
65};
66
71extern std::vector<point_t> line_circle_intersections(point_t center, double r, point_t point1, point_t point2);
75extern point_t get_lookahead(const std::vector<point_t> &path, pose_t robot_loc, double radius);
76
80extern std::vector<point_t> inject_path(const std::vector<point_t> &path, double spacing);
81
93extern std::vector<point_t> smooth_path(const std::vector<point_t> &path, double weight_data, double weight_smooth,
94 double tolerance);
95
96extern std::vector<point_t> smooth_path_cubic(const std::vector<point_t> &path, double res);
97
106extern std::vector<point_t> smooth_path_hermite(const std::vector<hermite_point> &path, double step);
107
118extern double estimate_remaining_dist(const std::vector<point_t> &path, pose_t robot_pose, double radius);
119
120} // namespace PurePursuit
Definition pure_pursuit.h:14
bool is_valid()
Definition pure_pursuit.cpp:57
Path(std::vector< point_t > points, double radius)
Definition pure_pursuit.cpp:8
std::vector< point_t > get_points()
Definition pure_pursuit.cpp:47
double get_radius()
Definition pure_pursuit.cpp:52
Definition vector2d.h:14
Definition pure_pursuit.h:56
Definition pure_pursuit.h:47
Definition geometry.h:7
Definition geometry.h:52