Ignition Gazebo

API Reference

3.7.0
SpeedLimiter.hh
Go to the documentation of this file.
1 /*********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2013, PAL Robotics, S.L.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of the PAL Robotics nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *********************************************************************/
34 
35 /*
36  * Author: Enrique Fernández
37  * Modified: Carlos Agüero
38  */
39 
40 #ifndef IGNITION_GAZEBO_SYSTEMS_SPEEDLIMITER_HH_
41 #define IGNITION_GAZEBO_SYSTEMS_SPEEDLIMITER_HH_
42 
43 #include <memory>
44 
46 
47 namespace ignition
48 {
49 namespace gazebo
50 {
51 // Inline bracket to help doxygen filtering.
52 inline namespace IGNITION_GAZEBO_VERSION_NAMESPACE {
53 namespace systems
54 {
55  // Forward declaration.
56  class SpeedLimiterPrivate;
57 
61  {
72  public: SpeedLimiter(bool _hasVelocityLimits = false,
73  bool _hasAccelerationLimits = false,
74  bool _hasJerkLimits = false,
75  double _minVelocity = 0.0,
76  double _maxVelocity = 0.0,
77  double _minAcceleration = 0.0,
78  double _maxAcceleration = 0.0,
79  double _minJerk = 0.0,
80  double _maxJerk = 0.0);
81 
83  public: ~SpeedLimiter();
84 
91  public: double Limit(double &_v,
92  double _v0,
93  double _v1,
94  double _dt) const;
95 
99  public: double LimitVelocity(double &_v) const;
100 
106  public: double LimitAcceleration(double &_v,
107  double _v0,
108  double _dt) const;
109 
117  public: double LimitJerk(double &_v,
118  double _v0,
119  double _v1,
120  double _dt) const;
121 
123  private: std::unique_ptr<SpeedLimiterPrivate> dataPtr;
124  };
125  }
126 }
127 }
128 }
129 
130 #endif
This library is part of the Ignition Robotics project.
Class to limit velocity, acceleration and jerk. https://github.com/ros-controls/ros_controllers/tree/...
Definition: SpeedLimiter.hh:60