TVM  0.9.4
LinearizedControlProblem.h
Go to the documentation of this file.
1 /* Copyright 2017-2020 CNRS-AIST JRL and CNRS-UM LIRMM */
2 
3 #pragma once
4 
5 #include <tvm/defs.h>
6 
7 #include <tvm/ControlProblem.h>
10 
11 #include <optional>
12 
13 namespace tvm
14 {
16 {
17 public:
20  bool bound;
21 };
22 
24 {
25 public:
28 
30  template<constraint::Type T>
33  const requirements::SolvingRequirements & req = {});
34  template<constraint::Type T>
35  TaskWithRequirementsPtr add(utils::LinearProtoTask<T> proto,
36  const task_dynamics::abstract::TaskDynamics & td,
37  const requirements::SolvingRequirements & req = {});
38  template<constraint::Type T>
39  TaskWithRequirementsPtr add(utils::LinearProtoTask<T> proto, const requirements::SolvingRequirements & req = {});
41  void remove(const TaskWithRequirements & tr);
42 
43  void add(const hint::Substitution & s);
44  void remove(const hint::Substitution & s);
47 
56 
58  std::vector<LinearConstraintWithRequirements> constraints() const;
59 
65 
73 
79 
87  std::optional<std::reference_wrapper<const LinearConstraintWithRequirements>> constraintWithRequirementsNoThrow(
88  const TaskWithRequirements & t) const;
89 
92  const;
93 
94 protected:
96  void update_() override;
97 
99  void finalize_() override;
100 
101 private:
103  hint::internal::Substitutions substitutions_;
104 };
105 
106 template<constraint::Type T>
110 { return add({proto, td}, req); }
111 
112 template<constraint::Type T>
116 { return add({proto, td}, req); }
117 
118 template<constraint::Type T>
121 { return add({proto, task_dynamics::None()}, req); }
122 } // namespace tvm
#define TVM_DLLAPI
Definition: api.h:35
Definition: ControlProblem.h:33
Definition: LinearizedControlProblem.h:16
bool bound
Definition: LinearizedControlProblem.h:20
LinearConstraintPtr constraint
Definition: LinearizedControlProblem.h:18
SolvingRequirementsPtr requirements
Definition: LinearizedControlProblem.h:19
Definition: LinearizedControlProblem.h:24
void removeSubstitutionFor(const constraint::abstract::LinearConstraint &cstr)
void add(TaskWithRequirementsPtr tr)
void add(const hint::Substitution &s)
std::optional< std::reference_wrapper< const LinearConstraintWithRequirements > > constraintWithRequirementsNoThrow(const TaskWithRequirements &t) const
const hint::internal::Substitutions & substitutions() const
VariableVector variables() const
void remove(const hint::Substitution &s)
std::vector< LinearConstraintWithRequirements > constraints() const
LinearConstraintPtr constraintNoThrow(const TaskWithRequirements &t) const
TaskWithRequirementsPtr add(const Task &task, const requirements::SolvingRequirements &req={})
void remove(const TaskWithRequirements &tr)
LinearizedControlProblem(const ControlProblem &pb)
const tvm::utils::internal::map< TaskWithRequirements const *, LinearConstraintWithRequirements > & constraintMap() const
const LinearConstraintWithRequirements & constraintWithRequirements(const TaskWithRequirements &t) const
LinearConstraintPtr constraint(const TaskWithRequirements &t) const
Definition: ControlProblem.h:22
Definition: Task.h:20
Definition: VariableVector.h:41
Definition: LinearConstraint.h:56
Definition: Substitution.h:29
Definition: Substitutions.h:24
Definition: SolvingRequirements.h:103
Definition: None.h:17
Definition: TaskDynamics.h:37
Definition: ProtoTask.h:29
std::map< KeyWithId, Value, IdLess< KeyWithId >, Allocator > map
Definition: map.h:41
Definition: Clock.h:12
std::shared_ptr< TaskWithRequirements > TaskWithRequirementsPtr
Definition: ControlProblem.h:30
std::shared_ptr< constraint::abstract::LinearConstraint > LinearConstraintPtr
Definition: defs.h:59
std::shared_ptr< requirements::SolvingRequirementsWithCallbacks > SolvingRequirementsPtr
Definition: defs.h:63