velocity_iterator.h
Go to the documentation of this file.
1 /*********************************************************************
2 *
3 * Software License Agreement (BSD License)
4 *
5 * Copyright (c) 2009, Willow Garage, Inc.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * * Redistributions in binary form must reproduce the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer in the documentation and/or other materials provided
17 * with the distribution.
18 * * Neither the name of Willow Garage, Inc. nor the names of its
19 * contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 * POSSIBILITY OF SUCH DAMAGE.
34 *
35 * Author: Eitan Marder-Eppstein
36 *********************************************************************/
37 #ifndef DWA_LOCAL_PLANNER_VELOCITY_ITERATOR_H_
38 #define DWA_LOCAL_PLANNER_VELOCITY_ITERATOR_H_
39 #include <algorithm>
40 #include <cmath>
41 #include <vector>
42 
43 namespace base_local_planner {
44 
48  class VelocityIterator {
49  public:
50  VelocityIterator(double min, double max, int num_samples):
51  current_index(0)
52  {
53  if (min == max) {
54  samples_.push_back(min);
55  } else {
56  num_samples = std::max(2, num_samples);
57 
58  // e.g. for 4 samples, split distance in 3 even parts
59  double step_size = (max - min) / double(std::max(1, (num_samples - 1)));
60 
61  // we make sure to avoid rounding errors around min and max.
62  double current;
63  double next = min;
64  for (int j = 0; j < num_samples - 1; ++j) {
65  current = next;
66  next += step_size;
67  samples_.push_back(current);
68  // if 0 is among samples, this is never true. Else it inserts a 0 between the positive and negative samples
69  if ((current < 0) && (next > 0)) {
70  samples_.push_back(0.0);
71  }
72  }
73  samples_.push_back(max);
74  }
75  }
76 
77  double getVelocity(){
78  return samples_.at(current_index);
79  }
80 
82  current_index++;
83  return *this;
84  }
85 
86  void reset(){
87  current_index = 0;
88  }
89 
90  bool isFinished(){
91  return current_index >= samples_.size();
92  }
93 
94  private:
95  std::vector<double> samples_;
96  unsigned int current_index;
97  };
98 };
99 #endif
min
int min(int a, int b)
base_local_planner::VelocityIterator::getVelocity
double getVelocity()
Definition: velocity_iterator.h:147
base_local_planner::VelocityIterator::reset
void reset()
Definition: velocity_iterator.h:156
base_local_planner::VelocityIterator::current_index
unsigned int current_index
Definition: velocity_iterator.h:166
base_local_planner::VelocityIterator::samples_
std::vector< double > samples_
Definition: velocity_iterator.h:165
base_local_planner::VelocityIterator::isFinished
bool isFinished()
Definition: velocity_iterator.h:160
base_local_planner::VelocityIterator::VelocityIterator
VelocityIterator(double min, double max, int num_samples)
Definition: velocity_iterator.h:120
base_local_planner::VelocityIterator::operator++
VelocityIterator & operator++(int)
Definition: velocity_iterator.h:151
base_local_planner
Definition: costmap_model.h:44


base_local_planner
Author(s): Eitan Marder-Eppstein, Eric Perko, contradict@gmail.com
autogenerated on Mon Mar 6 2023 03:50:24