codac
codac_CtcLinobs.h
Go to the documentation of this file.
1 
12 #ifndef __CODAC_CTCLINOBS_H__
13 #define __CODAC_CTCLINOBS_H__
14 
15 #include <map>
16 #include <vector>
17 #include <functional>
18 #include "codac_DynCtc.h"
19 #include "codac_ConvexPolygon.h"
20 #include "codac_IntervalMatrix.h"
21 
22 namespace codac
23 {
27  class CtcLinobs : public DynCtc
28  {
29  public:
30 
34  CtcLinobs(const Matrix& A, const Vector& b); // /!\ auto evaluation of e^At not reliable
35  ~CtcLinobs();
36 
37  void contract(std::vector<Domain*>& v_domains);
38  void contract(Tube& x1, Tube& x2, const Tube& u, TimePropag t_propa = TimePropag::FORWARD | TimePropag::BACKWARD);
39  void contract(TubeVector& x, const Tube& u, TimePropag t_propa = TimePropag::FORWARD | TimePropag::BACKWARD);
40  void contract(TubeVector& x, const Tube& u, std::vector<ConvexPolygon>& v_p_k, TimePropag t_propa = TimePropag::FORWARD | TimePropag::BACKWARD);
41 
42  // todo: contraction of the observations
43  void contract(double& t, IntervalVector& y, TubeVector& x, const Tube& u, TimePropag t_propa = TimePropag::FORWARD | TimePropag::BACKWARD);
44  void contract(double& t, IntervalVector& y, TubeVector& x, const Tube& u, std::vector<ConvexPolygon>& v_p_k, TimePropag t_propa = TimePropag::FORWARD | TimePropag::BACKWARD);
45 
46  // todo: contraction of the observations
47  void contract(std::vector<double>& v_t, std::vector<IntervalVector>& v_y, TubeVector& x, const Tube& u, TimePropag t_propa = TimePropag::FORWARD | TimePropag::BACKWARD);
48  void contract(std::vector<double>& v_t, std::vector<IntervalVector>& v_y, TubeVector& x, const Tube& u, std::vector<ConvexPolygon>& v_p_k, TimePropag t_propa = TimePropag::FORWARD | TimePropag::BACKWARD);
49  void contract(std::vector<double>& v_t, std::vector<IntervalVector>& v_y, Tube& x1, Tube& x2, const Tube& u, std::vector<ConvexPolygon>& v_p_k, TimePropag t_propa = TimePropag::FORWARD | TimePropag::BACKWARD);
50 
51  ConvexPolygon polygon_envelope(const ConvexPolygon& p_k, double dt_k_kp1, const Matrix& A, const Vector& b, const Interval& u_k);
52 
53 
54  protected:
55 
56  void ctc_fwd_gate(ConvexPolygon& p_k, const ConvexPolygon& p_km1, double dt_km1_k, const Matrix& A, const Vector& b, const Interval& u_km1);
57  void ctc_bwd_gate(ConvexPolygon& p_k, const ConvexPolygon& p_kp1, double dt_k_kp1, const Matrix& A, const Vector& b, const Interval& u_k);
58 
59 
60  protected:
61 
62  const Matrix* m_A;
63  const Vector* m_b;
64 
65  const int m_polygon_max_edges = 15;
66 
67  static const std::string m_ctc_name;
68  static std::vector<std::string> m_str_expected_doms;
69  friend class ContractorNetwork;
70  };
71 }
72 
73 #endif
FixPoint of a separator The fixpoint of a separator is computed by calling the "::"separate function ...
Definition: codac_capd_helpers.h:9
backward in time (from to )
forward in time (from to )
TimePropag
Specifies the temporal propagation way (forward or backward in time)
Definition: codac_DynCtc.h:26