Thunderbots Project
Loading...
Searching...
No Matches
const_velocity_obstacle.hpp
1#pragma once
2
3#include "software/ai/navigator/obstacle/geom_obstacle.hpp"
4#include "software/ai/navigator/trajectory/trajectory_path.h"
5#include "software/geom/algorithms/contains.h"
6#include "software/geom/algorithms/distance.h"
7#include "software/geom/algorithms/intersects.h"
8
9template <typename GEOM_TYPE>
10class ConstVelocityObstacle : public GeomObstacle<GEOM_TYPE>
11{
12 public:
13 ConstVelocityObstacle() = delete;
14
24 explicit ConstVelocityObstacle(const GEOM_TYPE& geom, Vector velocity,
25 double max_time_horizon_sec);
26
27 bool contains(const Point& p, const double t_sec = 0) const override;
28 double distance(const Point& p, const double t_sec = 0) const override;
29 double signedDistance(const Point& p, const double t_sec = 0) const override;
30 bool intersects(const Segment& segment, const double t_sec = 0) const override;
31
32 private:
33 const Vector velocity_;
34 const double max_time_horizon_sec_;
35};
36
37
38template <typename GEOM_TYPE>
40 Vector velocity,
41 double max_time_horizon_sec)
42 : GeomObstacle<GEOM_TYPE>(geom),
43 velocity_(std::move(velocity)),
44 max_time_horizon_sec_(max_time_horizon_sec)
45{
46}
47
53template <typename GEOM_TYPE>
54bool ConstVelocityObstacle<GEOM_TYPE>::contains(const Point& p, const double t_sec) const
55{
56 return ::contains(this->geom_,
57 p - velocity_ * std::min(t_sec, max_time_horizon_sec_));
58}
59
60template <typename GEOM_TYPE>
62 const double t_sec) const
63{
64 return ::distance(this->geom_,
65 p - velocity_ * std::min(t_sec, max_time_horizon_sec_));
66}
67
68template <typename GEOM_TYPE>
70 const double t_sec) const
71{
72 return ::signedDistance(this->geom_,
73 p - velocity_ * std::min(t_sec, max_time_horizon_sec_));
74}
75
76template <typename GEOM_TYPE>
78 const double t_sec) const
79{
80 return ::intersects(this->geom_,
81 segment - velocity_ * std::min(t_sec, max_time_horizon_sec_));
82}
Definition const_velocity_obstacle.hpp:11
bool contains(const Point &p, const double t_sec=0) const override
Definition const_velocity_obstacle.hpp:54
double signedDistance(const Point &p, const double t_sec=0) const override
Definition const_velocity_obstacle.hpp:69
bool intersects(const Segment &segment, const double t_sec=0) const override
Definition const_velocity_obstacle.hpp:77
double distance(const Point &p, const double t_sec=0) const override
Definition const_velocity_obstacle.hpp:61
Definition geom_obstacle.hpp:12
Definition point.h:14
Definition segment.h:7
Definition vector.h:12