TrajoptLib
Library for generating time-optimal trajectories for FRC robots.
Loading...
Searching...
No Matches
constraint.hpp
1// Copyright (c) TrajoptLib contributors
2
3#pragma once
4
5#include <concepts>
6#include <variant>
7
8#include <sleipnir/autodiff/variable.hpp>
9#include <sleipnir/optimization/problem.hpp>
10
11#include "trajopt/constraint/angular_velocity_max_magnitude_constraint.hpp"
12#include "trajopt/constraint/lane_constraint.hpp"
13#include "trajopt/constraint/line_point_constraint.hpp"
14#include "trajopt/constraint/linear_acceleration_max_magnitude_constraint.hpp"
15#include "trajopt/constraint/linear_velocity_direction_constraint.hpp"
16#include "trajopt/constraint/linear_velocity_max_magnitude_constraint.hpp"
17#include "trajopt/constraint/point_at_constraint.hpp"
18#include "trajopt/constraint/point_line_constraint.hpp"
19#include "trajopt/constraint/point_line_region_constraint.hpp"
20#include "trajopt/constraint/point_point_max_constraint.hpp"
21#include "trajopt/constraint/point_point_min_constraint.hpp"
22#include "trajopt/constraint/pose_equality_constraint.hpp"
23#include "trajopt/constraint/translation_equality_constraint.hpp"
24#include "trajopt/geometry/pose2.hpp"
25#include "trajopt/geometry/translation2.hpp"
26
27namespace trajopt {
28
30template <typename T>
32 requires(T self, slp::Problem<double>& problem, const Pose2v<double>& pose,
33 const Translation2v<double>& linear_velocity,
34 const slp::Variable<double>& angular_velocity,
35 const Translation2v<double>& linear_acceleration,
36 const slp::Variable<double>& angular_acceleration) {
37 {
38 self.apply(problem, pose, linear_velocity, angular_velocity,
39 linear_acceleration, angular_acceleration)
40 } -> std::same_as<void>;
41 };
42
44using Constraint = std::variant<
45 // clang-format off
59 // clang-format on
60 >;
61
62template <typename>
64
66template <typename... Ts>
67struct HoldsConstraintTypes<std::variant<Ts...>> {
69 static constexpr bool value = (ConstraintLike<Ts> && ...);
70};
71
73
74} // namespace trajopt
Angular velocity max magnitude inequality constraint.
Definition angular_velocity_max_magnitude_constraint.hpp:17
Definition lane_constraint.hpp:22
Definition line_point_constraint.hpp:22
Linear acceleration max magnitude inequality constraint.
Definition linear_acceleration_max_magnitude_constraint.hpp:17
Linear velocity direction equality constraint.
Definition linear_velocity_direction_constraint.hpp:15
Linear velocity max magnitude inequality constraint.
Definition linear_velocity_max_magnitude_constraint.hpp:17
Definition point_at_constraint.hpp:21
Definition point_line_constraint.hpp:22
Definition point_line_region_constraint.hpp:32
Definition point_point_max_constraint.hpp:21
Definition point_point_min_constraint.hpp:21
Pose equality constraint.
Definition pose_equality_constraint.hpp:15
Translation equality constraint.
Definition translation_equality_constraint.hpp:15
ConstraintLike concept.
Definition constraint.hpp:31
static constexpr bool value
True if variant only holds constraint types.
Definition constraint.hpp:69
Definition constraint.hpp:63