Brick
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
12
/**
13
* @brief Enforces a TrajectoryConstraint only when the robot's translation
14
* falls within a specified 2D rectangular bounding box.
15
*/
16
class
RectangularRegionConstraint
:
public
TrajectoryConstraint {
17
public
:
18
/**
19
* @brief Constructs a RectangularRegionConstraint.
20
* @param bottom_left The bottom-left coordinate of the bounding box.
21
* @param top_right The top-right coordinate of the bounding box.
22
* @param constraint The child constraint to apply when inside the box.
23
*/
24
RectangularRegionConstraint
(
25
const
Translation2d& bottom_left,
const
Translation2d& top_right,
26
const
TrajectoryConstraint& constraint
27
)
28
: bottom_left_(bottom_left), top_right_(top_right), constraint_(constraint.
clone
()) {}
29
30
units::Velocity
max_velocity
(
31
const
Pose2d
& pose, units::Curvature curvature, units::Velocity velocity
32
)
const override
{
33
if
(is_in_region(pose.
translation
())) {
34
return
constraint_->max_velocity(pose, curvature, velocity);
35
}
36
return
velocity;
37
}
38
39
TrajectoryConstraint::MinMax
min_max_acceleration
(
40
const
Pose2d
& pose, units::Curvature curvature, units::Velocity velocity
41
)
const override
{
42
if
(is_in_region(pose.
translation
())) {
43
return
constraint_->min_max_acceleration(pose, curvature, velocity);
44
}
45
return
{};
46
}
47
48
std::unique_ptr<TrajectoryConstraint>
clone
()
const override
{
49
return
std::make_unique<RectangularRegionConstraint>(bottom_left_, top_right_, *constraint_);
50
}
51
52
private
:
53
Translation2d bottom_left_;
54
Translation2d top_right_;
55
std::unique_ptr<TrajectoryConstraint> constraint_;
56
57
bool
is_in_region(
const
Translation2d& point)
const
{
58
return
point.
x
() >= bottom_left_.
x
() && point.
x
() <= top_right_.
x
() &&
59
point.
y
() >= bottom_left_.
y
() && point.
y
() <= top_right_.
y
();
60
}
61
};
LinearVector2d::x
constexpr Q x() const
Gets the x component.
Definition
translation2d.h:64
LinearVector2d::y
constexpr Q y() const
Gets the y component.
Definition
translation2d.h:73
Pose2d
Definition
pose2d.h:21
Pose2d::translation
constexpr Translation2d translation() const
Gets the translation.
Definition
pose2d.h:95
RectangularRegionConstraint::clone
std::unique_ptr< TrajectoryConstraint > clone() const override
Creates an independent copy of this constraint.
Definition
rectangular_region_constraint.h:48
RectangularRegionConstraint::RectangularRegionConstraint
RectangularRegionConstraint(const Translation2d &bottom_left, const Translation2d &top_right, const TrajectoryConstraint &constraint)
Constructs a RectangularRegionConstraint.
Definition
rectangular_region_constraint.h:24
RectangularRegionConstraint::max_velocity
units::Velocity max_velocity(const Pose2d &pose, units::Curvature curvature, units::Velocity velocity) const override
Computes maximum allowed velocity at a given pose and path curvature.
Definition
rectangular_region_constraint.h:30
RectangularRegionConstraint::min_max_acceleration
TrajectoryConstraint::MinMax min_max_acceleration(const Pose2d &pose, units::Curvature curvature, units::Velocity velocity) const override
Computes minimum and maximum allowed linear accelerations at a given pose, curvature,...
Definition
rectangular_region_constraint.h:39
units::literals
Definition
units.h:691
TrajectoryConstraint::MinMax
Struct representing minimum and maximum allowed linear accelerations.
Definition
trajectory_constraint.h:29
core
math
trajectory
constraints
rectangular_region_constraint.h
Generated by
1.18.0