codac  1.5.7
codac2_CtcLinobs.h
Go to the documentation of this file.
1 
12 #ifndef __CODAC2_CTCLINOBS_H__
13 #define __CODAC2_CTCLINOBS_H__
14 
15 #include <map>
16 #include <vector>
17 #include <functional>
18 #include "codac_DynCtc.h"
19 #include "codac2_Tube.h"
20 #include "codac_ConvexPolygon.h"
21 #include "codac_IntervalMatrix.h"
22 
23 namespace codac2
24 {
28  class CtcLinobs : public codac::DynCtc
29  {
30  public:
31 
32  CtcLinobs(const codac::Matrix& A, const codac::Vector& b); // /!\ auto evaluation of e^At not reliable
33  ~CtcLinobs();
34 
35  // to be removed:
36  void contract(codac::TubeVector& x, const codac::Tube& u, codac::TimePropag t_propa);
37 
38  void contract(std::vector<codac::Domain*>& v_domains);
39  void contract(Tube<codac::ConvexPolygon>& x, const Tube<Interval>& u, codac::TimePropag t_propa = codac::TimePropag::FORWARD | codac::TimePropag::BACKWARD, bool compute_envelopes = true);
40  void contract(Slice<codac::ConvexPolygon>& x, const Slice<codac::Interval>& u, codac::TimePropag t_propa = codac::TimePropag::FORWARD | codac::TimePropag::BACKWARD, bool compute_envelope = true);
41 
42 
43  protected:
44 
45  void ctc_fwd_gate(codac::ConvexPolygon& p_k, const codac::ConvexPolygon& p_km1, double dt_km1_k, const codac::Interval& u_km1);
46  void ctc_bwd_gate(codac::ConvexPolygon& p_k, const codac::ConvexPolygon& p_kp1, double dt_k_kp1, const codac::Interval& u_k);
47  codac::ConvexPolygon polygon_envelope(const codac::ConvexPolygon& p_k, double dt_k_kp1, const codac::Interval& u_k);
48 
49 
50  protected:
51 
52  const codac::Matrix _A;
53  const codac::Vector _b;
54 
55  const int m_polygon_max_edges = 15;
56 
57  static const std::string m_ctc_name;
58  static std::vector<std::string> m_str_expected_doms;
59  friend class ContractorNetwork;
60  };
61 }
62 
63 #endif
Contractor interface.
Definition: codac_DynCtc.h:61
One dimensional tube , defined as an interval of scalar trajectories.
Definition: codac_Tube.h:48
n-dimensional tube , defined as an interval of n-dimensional trajectories
Definition: codac_TubeVector.h:39
TimePropag
Specifies the temporal propagation way (forward or backward in time)
Definition: codac_DynCtc.h:27
@ BACKWARD
backward in time (from to )
@ FORWARD
forward in time (from to )