- 3.0.2 core module.
Observer-impl.h
Go to the documentation of this file.
1 /**********************************************************************************************************************
2 This file is part of the Control Toolbox (https://github.com/ethz-adrl/control-toolbox), copyright by ETH Zurich.
3 Licensed under the BSD-2 license (see LICENSE file in main directory)
4 **********************************************************************************************************************/
5 
6 #pragma once
7 
8 namespace ct {
9 namespace core {
10 
11 template <size_t STATE_DIM, typename SCALAR>
13  : observeWrap([this](const StateVector<STATE_DIM, SCALAR>& x, const SCALAR& t) { this->observe(x, t); }),
14  observeWrapWithLogging([this](const StateVector<STATE_DIM, SCALAR>& x, const SCALAR& t) {
15  this->log(x, t);
16  this->observe(x, t);
17  })
18 {
19  // fixme: somehow works if using assignment operator, but not if using constructing
20  eventHandlers_ = eventHandlers;
21 }
22 
23 template <size_t STATE_DIM, typename SCALAR>
25 {
26  for (size_t i = 0; i < eventHandlers_.size(); i++)
27  eventHandlers_[i]->reset();
28 
29  states_.clear();
30  times_.clear();
31 }
32 
33 template <size_t STATE_DIM, typename SCALAR>
35 {
36  for (size_t i = 0; i < eventHandlers_.size(); i++)
37  {
38  if (!eventHandlers_[i]->callOnSubsteps() && eventHandlers_[i]->checkEvent(x, t))
39  eventHandlers_[i]->handleEvent(x, t);
40  }
41 }
42 
43 template <size_t STATE_DIM, typename SCALAR>
45 {
46  states_.push_back(x);
47  times_.push_back(t);
48 }
49 
50 template <size_t STATE_DIM, typename SCALAR>
52 {
53  for (size_t i = 0; i < eventHandlers_.size(); i++)
54  {
55  if (eventHandlers_[i]->callOnSubsteps() && eventHandlers_[i]->checkEvent(x, t))
56  eventHandlers_[i]->handleEvent(x, t);
57  }
58 }
59 }
60 }
Observer(const EventHandlerPtrVector &eventHandlers)
default constructor
Definition: Observer-impl.h:12
Observer for Integrator.
Definition: Observer.h:27
clear all close all load ct GNMSLog0 mat reformat t
CppAD::AD< CppAD::cg::CG< double > > SCALAR
Definition: StateVector.h:12
for i
ct::core::StateVector< state_dim > x
std::vector< std::shared_ptr< EventHandler< STATE_DIM, SCALAR > >, Eigen::aligned_allocator< std::shared_ptr< EventHandler< STATE_DIM, SCALAR > > > > EventHandlerPtrVector
Definition: Observer.h:36