Autoware.Auto
reference_tracking_controller.hpp
Go to the documentation of this file.
1 // Copyright 2020 the Autoware Foundation
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //    http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
15 // Co-developed by Tier IV, Inc. and Apex.AI, Inc.
18 #ifndef REFERENCE_TRACKING_CONTROLLER__REFERENCE_TRACKING_CONTROLLER_HPP_
19 #define REFERENCE_TRACKING_CONTROLLER__REFERENCE_TRACKING_CONTROLLER_HPP_
20 
22 
23 #include <type_traits>
24 
25 namespace autoware
26 {
27 namespace common
28 {
29 namespace reference_tracking_controller
30 {
33 template<typename T>
35 {
36  static_assert(
37  std::is_floating_point<T>::value,
38  "Reference trackers only work for floating point types");
39 
40 public:
43  {
44  T value;
46  }; // struct SignalWithDerivative
48  virtual ~ReferenceTrackerBase() = default;
55  virtual T feedback(SignalWithDerivative reference, SignalWithDerivative observation) = 0;
56 
63  T feedback(T reference, SignalWithDerivative observation)
64  {
65  return feedback({reference, T{}}, observation);
66  }
67 
74  T feedback(SignalWithDerivative reference, T observation)
75  {
76  return feedback(reference, {observation, T{}});
77  }
78 
85  T feedback(T reference, T observation)
86  {
87  return feedback({reference, T{}}, {observation, T{}});
88  }
89 }; // ReferenceTrackerBase
90 } // namespace reference_tracking_controller
91 } // namespace common
92 } // namespace autoware
93 
94 #endif // REFERENCE_TRACKING_CONTROLLER__REFERENCE_TRACKING_CONTROLLER_HPP_
autoware::common::reference_tracking_controller::ReferenceTrackerBase::SignalWithDerivative::derivative
T derivative
Derivative or rate of signal at current time step.
Definition: reference_tracking_controller.hpp:45
autoware::common::reference_tracking_controller::ReferenceTrackerBase::SignalWithDerivative
A Pack of both the signal and it's derivative at some time step.
Definition: reference_tracking_controller.hpp:42
autoware::common::reference_tracking_controller::ReferenceTrackerBase::feedback
T feedback(T reference, SignalWithDerivative observation)
Definition: reference_tracking_controller.hpp:63
autoware
This file defines the lanelet2_map_provider_node class.
Definition: quick_sort.hpp:24
autoware::common::reference_tracking_controller::ReferenceTrackerBase
Definition: reference_tracking_controller.hpp:34
autoware::common::reference_tracking_controller::ReferenceTrackerBase::feedback
T feedback(SignalWithDerivative reference, T observation)
Definition: reference_tracking_controller.hpp:74
visibility_control.hpp
autoware::common::reference_tracking_controller::ReferenceTrackerBase::feedback
T feedback(T reference, T observation)
Definition: reference_tracking_controller.hpp:85
REFERENCE_TRACKING_CONTROLLER_PUBLIC
#define REFERENCE_TRACKING_CONTROLLER_PUBLIC
Definition: common/reference_tracking_controller/include/reference_tracking_controller/visibility_control.hpp:44
autoware::common::reference_tracking_controller::ReferenceTrackerBase::SignalWithDerivative::value
T value
Value of signal at current time step.
Definition: reference_tracking_controller.hpp:44