src
illegal_trajectory_tracker.cpp
Go to the documentation of this file.
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2017, Locus Robotics
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 copyright holder 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 HOLDER 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
#include <
dwb_local_planner/illegal_trajectory_tracker.h
>
36
#include <map>
37
#include <utility>
38
#include <string>
39
#include <sstream>
40
41
namespace
dwb_local_planner
42
{
43
void
IllegalTrajectoryTracker::addIllegalTrajectory
(
const
nav_core2::IllegalTrajectoryException
& e)
44
{
45
counts_
[std::make_pair(e.
getCriticName
(), e.what())]++;
46
illegal_count_
++;
47
}
48
49
void
IllegalTrajectoryTracker::addLegalTrajectory
()
50
{
51
legal_count_
++;
52
}
53
54
std::map< std::pair<std::string, std::string>,
double
>
IllegalTrajectoryTracker::getPercentages
()
const
55
{
56
std::map< std::pair<std::string, std::string>,
double
> percents;
57
double
denominator =
static_cast<
double
>
(
legal_count_
+
illegal_count_
);
58
for
(
auto
const
& x :
counts_
)
59
{
60
percents[x.first] =
static_cast<
double
>
(x.second) / denominator;
61
}
62
return
percents;
63
}
64
65
std::string
IllegalTrajectoryTracker::getMessage
()
const
66
{
67
std::ostringstream msg;
68
if
(
legal_count_
== 0)
69
{
70
msg <<
"No valid trajectories out of "
<<
illegal_count_
<<
"! "
;
71
}
72
else
73
{
74
unsigned
int
total =
legal_count_
+
illegal_count_
;
75
msg <<
legal_count_
<<
" valid trajectories found ("
;
76
msg << static_cast<double>(100 *
legal_count_
) /
static_cast<
double
>
(total);
77
msg <<
"% of "
<< total <<
"). "
;
78
}
79
return
msg.str();
80
}
81
82
}
// namespace dwb_local_planner
dwb_local_planner::IllegalTrajectoryTracker::addIllegalTrajectory
void addIllegalTrajectory(const nav_core2::IllegalTrajectoryException &e)
Definition:
illegal_trajectory_tracker.cpp:43
nav_core2::IllegalTrajectoryException
dwb_local_planner::IllegalTrajectoryTracker::getMessage
std::string getMessage() const
Definition:
illegal_trajectory_tracker.cpp:65
dwb_local_planner
Definition:
backwards_compatibility.h:40
dwb_local_planner::IllegalTrajectoryTracker::getPercentages
std::map< std::pair< std::string, std::string >, double > getPercentages() const
Definition:
illegal_trajectory_tracker.cpp:54
illegal_trajectory_tracker.h
nav_core2::IllegalTrajectoryException::getCriticName
std::string getCriticName() const
dwb_local_planner::IllegalTrajectoryTracker::counts_
std::map< std::pair< std::string, std::string >, unsigned int > counts_
Definition:
illegal_trajectory_tracker.h:57
dwb_local_planner::IllegalTrajectoryTracker::illegal_count_
unsigned int illegal_count_
Definition:
illegal_trajectory_tracker.h:58
dwb_local_planner::IllegalTrajectoryTracker::addLegalTrajectory
void addLegalTrajectory()
Definition:
illegal_trajectory_tracker.cpp:49
dwb_local_planner::IllegalTrajectoryTracker::legal_count_
unsigned int legal_count_
Definition:
illegal_trajectory_tracker.h:58
dwb_local_planner
Author(s): David V. Lu!!
autogenerated on Sun May 18 2025 02:47:25