src
pid_gains_setter.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009, Willow Garage, Inc.
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* * Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* * Neither the name of the Willow Garage, Inc. nor the names of its
14
* contributors may be used to endorse or promote products derived from
15
* this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
* POSSIBILITY OF SUCH DAMAGE.
28
*/
29
30
#include "
control_toolbox/pid_gains_setter.h
"
31
32
namespace
control_toolbox
{
33
34
PidGainsSetter::~PidGainsSetter
()
35
{
36
serve_set_gains_
.
shutdown
();
37
}
38
39
PidGainsSetter
&
PidGainsSetter::add
(
Pid
*pid)
40
{
41
assert(pid);
42
pids_
.push_back(pid);
43
return
*
this
;
44
}
45
46
void
PidGainsSetter::advertise
(
const
ros::NodeHandle
&n)
47
{
48
node_
= n;
49
serve_set_gains_
=
node_
.
advertiseService
(
"set_gains"
, &
PidGainsSetter::setGains
,
this
);
50
}
51
52
bool
PidGainsSetter::setGains
(control_toolbox::SetPidGains::Request &req,
53
control_toolbox::SetPidGains::Response &resp)
54
{
55
for
(
size_t
i = 0; i <
pids_
.size(); ++i)
56
pids_
[i]->
setGains
(req.p, req.i, req.d, req.i_clamp, -req.i_clamp, req.antiwindup);
57
node_
.
setParam
(
"p"
, req.p);
58
node_
.
setParam
(
"i"
, req.i);
59
node_
.
setParam
(
"d"
, req.d);
60
node_
.
setParam
(
"i_clamp"
, req.i_clamp);
61
node_
.
setParam
(
"antiwindup"
, req.antiwindup);
62
return
true
;
63
}
64
65
}
ros::NodeHandle::setParam
void setParam(const std::string &key, bool b) const
control_toolbox::PidGainsSetter
Sets up services for quickly changing the gains for a control_toolbox::Pid Pid object.
Definition:
pid_gains_setter.h:74
control_toolbox::PidGainsSetter::serve_set_gains_
ros::ServiceServer serve_set_gains_
Definition:
pid_gains_setter.h:102
control_toolbox::PidGainsSetter::~PidGainsSetter
~PidGainsSetter()
Definition:
pid_gains_setter.cpp:34
ros::NodeHandle::advertiseService
ServiceServer advertiseService(AdvertiseServiceOptions &ops)
control_toolbox::PidGainsSetter::node_
ros::NodeHandle node_
Definition:
pid_gains_setter.h:101
control_toolbox::Pid
A basic pid class.
Definition:
pid.h:117
control_toolbox::PidGainsSetter::advertise
void advertise(const ros::NodeHandle &n)
Advertises the "set_gains" service, initializing the PidGainsSetter.
Definition:
pid_gains_setter.cpp:46
control_toolbox::PidGainsSetter::pids_
std::vector< Pid * > pids_
Definition:
pid_gains_setter.h:103
ros::ServiceServer::shutdown
void shutdown()
control_toolbox
Definition:
dither.h:46
control_toolbox::PidGainsSetter::add
PidGainsSetter & add(Pid *pid)
Adds a Pid object.
Definition:
pid_gains_setter.cpp:39
control_toolbox::PidGainsSetter::setGains
bool setGains(control_toolbox::SetPidGains::Request &req, control_toolbox::SetPidGains::Response &resp)
Definition:
pid_gains_setter.cpp:52
pid_gains_setter.h
ros::NodeHandle
control_toolbox
Author(s): Melonee Wise, Sachin Chitta, John Hsu
autogenerated on Wed May 11 2022 02:09:47