7 template<
typename MessageRefType,
typename FloatFieldType,
typename BoolFieldType,
typename FloatEnumType,
11 #ifndef DOXYGEN_OMIT_INTERNAL
12 Gains(MessageRefType&
internal, FloatEnumType kp_gain, BoolEnumType d_on_error_gain)
13 :
kp_(internal, kp_gain),
14 ki_(internal, static_cast<FloatEnumType>(kp_gain + 1)),
15 kd_(internal, static_cast<FloatEnumType>(kp_gain + 2)),
16 feed_forward_(internal, static_cast<FloatEnumType>(kp_gain + 3)),
17 dead_zone_(internal, static_cast<FloatEnumType>(kp_gain + 4)),
18 i_clamp_(internal, static_cast<FloatEnumType>(kp_gain + 5)),
19 punch_(internal, static_cast<FloatEnumType>(kp_gain + 6)),
20 min_target_(internal, static_cast<FloatEnumType>(kp_gain + 7)),
21 max_target_(internal, static_cast<FloatEnumType>(kp_gain + 8)),
23 min_output_(internal, static_cast<FloatEnumType>(kp_gain + 10)),
24 max_output_(internal, static_cast<FloatEnumType>(kp_gain + 11)),
27 Gains(
const MessageRefType&
internal, FloatEnumType kp_gain, BoolEnumType d_on_error_gain)
28 :
kp_(internal, kp_gain),
29 ki_(internal, static_cast<FloatEnumType>(kp_gain + 1)),
30 kd_(internal, static_cast<FloatEnumType>(kp_gain + 2)),
31 feed_forward_(internal, static_cast<FloatEnumType>(kp_gain + 3)),
32 dead_zone_(internal, static_cast<FloatEnumType>(kp_gain + 4)),
33 i_clamp_(internal, static_cast<FloatEnumType>(kp_gain + 5)),
34 punch_(internal, static_cast<FloatEnumType>(kp_gain + 6)),
35 min_target_(internal, static_cast<FloatEnumType>(kp_gain + 7)),
36 max_target_(internal, static_cast<FloatEnumType>(kp_gain + 8)),
38 min_output_(internal, static_cast<FloatEnumType>(kp_gain + 10)),
39 max_output_(internal, static_cast<FloatEnumType>(kp_gain + 11)),
42 #endif // DOXYGEN_OMIT_INTERNAL
50 FloatFieldType&
kP() {
return kp_; }
52 const FloatFieldType&
kP()
const {
return kp_; }
54 FloatFieldType&
kI() {
return ki_; }
56 const FloatFieldType&
kI()
const {
return ki_; }
58 FloatFieldType&
kD() {
return kd_; }
60 const FloatFieldType&
kD()
const {
return kd_; }