RIT VEXU Core API
Toggle main menu visibility
Loading...
Searching...
No Matches
rectangular_region_constraint.h
1
#pragma once
2
3
#include <memory>
4
5
#include "core/math/geometry/pose2d.h"
6
#include "core/math/geometry/translation2d.h"
7
#include "core/math/trajectory/constraints/trajectory_constraint.h"
8
#include "core/math/units.h"
9
10
using namespace
units::literals;
11
16
class
RectangularRegionConstraint
:
public
TrajectoryConstraint {
17
public
:
24
RectangularRegionConstraint
(
const
Translation2d& bottom_left,
const
Translation2d& top_right,
25
const
TrajectoryConstraint& constraint)
26
: bottom_left_(bottom_left), top_right_(top_right), constraint_(constraint.clone()) {}
27
28
units::Velocity max_velocity(
const
Pose2d
& pose, units::Curvature curvature,
29
units::Velocity velocity)
const override
{
30
if
(is_in_region(pose.
translation
())) {
31
return
constraint_->
max_velocity
(pose, curvature, velocity);
32
}
33
return
velocity;
34
}
35
36
TrajectoryConstraint::MinMax min_max_acceleration(
const
Pose2d& pose, units::Curvature curvature,
37
units::Velocity velocity)
const override
{
38
if
(is_in_region(pose.
translation
())) {
39
return
constraint_->min_max_acceleration(pose, curvature, velocity);
40
}
41
return
{};
42
}
43
44
std::unique_ptr<TrajectoryConstraint> clone()
const override
{
45
return
std::make_unique<RectangularRegionConstraint>(bottom_left_, top_right_, *constraint_);
46
}
47
48
private
:
49
Translation2d bottom_left_;
50
Translation2d top_right_;
51
std::unique_ptr<TrajectoryConstraint> constraint_;
52
53
bool
is_in_region(
const
Translation2d& point)
const
{
54
return
point.
x
() >= bottom_left_.x() && point.
x
() <= top_right_.x() &&
55
point.
y
() >= bottom_left_.y() && point.
y
() <= top_right_.y();
56
}
57
};
LinearVector2d::x
constexpr Q x() const
Gets the x component.
Definition
translation2d.h:65
LinearVector2d::y
constexpr Q y() const
Gets the y component.
Definition
translation2d.h:74
Pose2d
Definition
pose2d.h:21
Pose2d::translation
constexpr Translation2d translation() const
Gets the translation.
Definition
pose2d.h:96
RectangularRegionConstraint::RectangularRegionConstraint
RectangularRegionConstraint(const Translation2d &bottom_left, const Translation2d &top_right, const TrajectoryConstraint &constraint)
Constructs a RectangularRegionConstraint.
Definition
rectangular_region_constraint.h:24
TrajectoryConstraint::max_velocity
virtual units::Velocity max_velocity(const Pose2d &pose, units::Curvature curvature, units::Velocity velocity) const =0
Computes maximum allowed velocity at a given pose and path curvature.
include
core
math
trajectory
constraints
rectangular_region_constraint.h
Generated by
1.18.0