Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
firmware
include
controller.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017, James Jackson and Daniel Koch, BYU MAGICC Lab
3
*
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions are met:
8
*
9
* * Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
11
*
12
* * Redistributions in binary form must reproduce the above copyright notice,
13
* this list of conditions and the following disclaimer in the documentation
14
* and/or other materials provided with the distribution.
15
*
16
* * Neither the name of the copyright holder nor the names of its
17
* contributors may be used to endorse or promote products derived from
18
* this software without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
32
#ifndef ROSFLIGHT_FIRMWARE_CONTROLLER_H
33
#define ROSFLIGHT_FIRMWARE_CONTROLLER_H
34
35
#include <stdint.h>
36
#include <stdbool.h>
37
38
#include <
turbomath/turbomath.h
>
39
40
#include "
command_manager.h
"
41
#include "
estimator.h
"
42
43
namespace
rosflight_firmware
44
{
45
46
class
ROSflight;
47
48
class
Controller
49
{
50
public
:
51
struct
Output
52
{
53
float
F
;
54
float
x
;
55
float
y
;
56
float
z
;
57
};
58
59
Controller
(
ROSflight
&rf);
60
61
inline
const
Output
&
output
()
const
62
{
63
return
output_
;
64
}
65
66
void
init
();
67
void
run
();
68
69
void
calculate_equilbrium_torque_from_rc
();
70
void
param_change_callback
(uint16_t param_id);
71
72
private
:
73
class
PID
74
{
75
public
:
76
PID
();
77
void
init
(
float
kp,
float
ki,
float
kd,
float
max,
float
min,
float
tau);
78
float
run
(
float
dt,
float
x
,
float
x_c,
bool
update_integrator);
79
float
run
(
float
dt,
float
x,
float
x_c,
bool
update_integrator,
float
xdot);
80
81
private
:
82
float
kp_
;
83
float
ki_
;
84
float
kd_
;
85
86
float
max_
;
87
float
min_
;
88
89
float
integrator_
;
90
float
differentiator_
;
91
float
prev_x_
;
92
float
tau_
;
93
};
94
95
ROSflight
&
RF_
;
96
97
turbomath::Vector
run_pid_loops
(uint32_t dt,
const
Estimator::State
&state,
const
control_t
&command,
98
bool
update_integrators);
99
100
Output
output_
;
101
102
PID
roll_
;
103
PID
roll_rate_
;
104
PID
pitch_
;
105
PID
pitch_rate_
;
106
PID
yaw_rate_
;
107
108
uint64_t
prev_time_us_
;
109
};
110
111
}
// namespace rosflight_firmware
112
113
#endif // ROSFLIGHT_FIRMWARE_CONTROLLER_H
rosflight_firmware::Controller::run
void run()
Definition:
controller.cpp:147
rosflight_firmware::control_t
Definition:
command_manager.h:60
rosflight_firmware::Controller::param_change_callback
void param_change_callback(uint16_t param_id)
Definition:
controller.cpp:224
rosflight_firmware::Controller::Controller
Controller(ROSflight &rf)
Definition:
controller.cpp:44
rosflight_firmware::Controller
Definition:
controller.h:48
rosflight_firmware::Controller::prev_time_us_
uint64_t prev_time_us_
Definition:
controller.h:108
rosflight_firmware::Controller::PID::min_
float min_
Definition:
controller.h:87
rosflight_firmware::Controller::PID
Definition:
controller.h:73
rosflight_firmware
Definition:
airbourne_board.cpp:34
rosflight_firmware::Controller::PID::kd_
float kd_
Definition:
controller.h:84
rosflight_firmware::Controller::roll_
PID roll_
Definition:
controller.h:102
rosflight_firmware::Controller::init
void init()
Definition:
controller.cpp:117
rosflight_firmware::Controller::PID::tau_
float tau_
Definition:
controller.h:92
rosflight_firmware::Controller::run_pid_loops
turbomath::Vector run_pid_loops(uint32_t dt, const Estimator::State &state, const control_t &command, bool update_integrators)
Definition:
controller.cpp:230
rosflight_firmware::Controller::Output::y
float y
Definition:
controller.h:55
rosflight_firmware::Controller::pitch_
PID pitch_
Definition:
controller.h:104
rosflight_firmware::Controller::RF_
ROSflight & RF_
Definition:
controller.h:95
rosflight_firmware::Controller::PID::integrator_
float integrator_
Definition:
controller.h:89
rosflight_firmware::Controller::Output::x
float x
Definition:
controller.h:54
rosflight_firmware::Controller::yaw_rate_
PID yaw_rate_
Definition:
controller.h:106
rosflight_firmware::Controller::roll_rate_
PID roll_rate_
Definition:
controller.h:103
rosflight_firmware::ROSflight
Definition:
include/rosflight.h:50
turbomath.h
rosflight_firmware::Controller::pitch_rate_
PID pitch_rate_
Definition:
controller.h:105
rosflight_firmware::Controller::PID::max_
float max_
Definition:
controller.h:86
rosflight_firmware::Controller::output
const Output & output() const
Definition:
controller.h:61
rosflight_firmware::Controller::Output::z
float z
Definition:
controller.h:56
rosflight_firmware::Controller::PID::ki_
float ki_
Definition:
controller.h:83
turbomath::Vector
Definition:
turbomath.h:63
rosflight_firmware::Controller::output_
Output output_
Definition:
controller.h:100
estimator.h
rosflight_firmware::Controller::Output::F
float F
Definition:
controller.h:53
rosflight_firmware::Controller::PID::prev_x_
float prev_x_
Definition:
controller.h:91
rosflight_firmware::Controller::calculate_equilbrium_torque_from_rc
void calculate_equilbrium_torque_from_rc()
Definition:
controller.cpp:180
rosflight_firmware::Controller::PID::kp_
float kp_
Definition:
controller.h:82
rosflight_firmware::Estimator::State
Definition:
estimator.h:50
rosflight_firmware::Controller::PID::differentiator_
float differentiator_
Definition:
controller.h:90
rosflight_firmware::Controller::Output
Definition:
controller.h:51
command_manager.h
rosflight_firmware
Author(s): Daniel Koch
, James Jackson
autogenerated on Wed Jul 3 2019 19:59:24