Class
List
Hierarchy
Modules
Common
Events
Math
Messages
Physics
Rendering
Sensors
Transport
Links
Gazebo Website
Wiki
Tutorials
Download
Report Documentation Issues
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
gazebo
common
PID.hh
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012-2014 Open Source Robotics Foundation
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*
16
*/
17
18
#ifndef _GAZEBO_PID_HH_
19
#define _GAZEBO_PID_HH_
20
21
#include "
gazebo/common/Time.hh
"
22
23
namespace
gazebo
24
{
25
namespace
common
26
{
29
35
class
PID
36
{
46
public
:
PID
(
double
_p = 0.0,
double
_i = 0.0,
double
_d = 0.0,
47
double
_imax = 0.0,
double
_imin = 0.0,
48
double
_cmdMax = 0.0,
double
_cmdMin = 0.0);
49
51
public
:
virtual
~PID
();
52
62
public
:
void
Init
(
double
_p = 0.0,
double
_i = 0.0,
double
_d = 0.0,
63
double
_imax = 0.0,
double
_imin = 0.0,
64
double
_cmdMax = 0.0,
double
_cmdMin = 0.0);
65
68
public
:
void
SetPGain
(
double
_p);
69
72
public
:
void
SetIGain
(
double
_i);
73
76
public
:
void
SetDGain
(
double
_d);
77
80
public
:
void
SetIMax
(
double
_i);
81
84
public
:
void
SetIMin
(
double
_i);
85
88
public
:
void
SetCmdMax
(
double
_c);
89
92
public
:
void
SetCmdMin
(
double
_c);
93
101
public
:
double
Update
(
double
_error,
common::Time
_dt);
102
105
public
:
void
SetCmd
(
double
_cmd);
106
109
public
:
double
GetCmd
();
110
115
public
:
void
GetErrors
(
double
&_pe,
double
&_ie,
double
&_de);
116
120
public
:
PID
&
operator=
(
const
PID
&_p)
121
{
122
if
(
this
== &_p)
123
return
*
this
;
124
125
this->pGain = _p.pGain;
126
this->iGain = _p.iGain;
127
this->dGain = _p.dGain;
128
this->iMax = _p.iMax;
129
this->iMin = _p.iMin;
130
this->cmdMax = _p.cmdMax;
131
132
this->
Reset
();
133
return
*
this
;
134
}
135
137
public
:
void
Reset
();
138
140
private
:
double
pErrLast;
141
143
private
:
double
pErr;
144
146
private
:
double
iErr;
147
149
private
:
double
dErr;
150
152
private
:
double
pGain;
153
155
private
:
double
iGain;
156
158
private
:
double
dGain;
159
161
private
:
double
iMax;
162
164
private
:
double
iMin;
165
167
private
:
double
cmd;
168
170
private
:
double
cmdMax;
171
173
private
:
double
cmdMin;
174
};
176
}
177
}
178
#endif