include
tuw_global_router
heuristic.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017, <copyright holder> <email>
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
* * Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* * Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
* * Neither the name of the <organization> nor the
13
* names of its contributors may be used to endorse or promote products
14
* derived from this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY <copyright holder> <email> ''AS IS'' AND ANY
17
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
* DISCLAIMED. IN NO EVENT SHALL <copyright holder> <email> BE LIABLE FOR ANY
20
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
*
27
*/
28
29
#ifndef HEURISTIC_H
30
#define HEURISTIC_H
31
32
#include <
tuw_global_router/srr_utils.h
>
33
34
namespace
multi_robot_router
35
{
36
class
Heuristic
37
{
38
public
:
45
float
calcHeuristic
(
const
Vertex
&_next,
const
Vertex
&_end)
const
46
{
47
float
nx = (_next.
getSegment
().
getStart
()[0] + _next.
getSegment
().
getEnd
()[0]) / 2;
48
float
ny = (_next.
getSegment
().
getStart
()[1] + _next.
getSegment
().
getEnd
()[1]) / 2;
49
50
float
ex = (_end.
getSegment
().
getStart
()[0] + _end.
getSegment
().
getEnd
()[0]) / 2;
51
float
ey = (_end.
getSegment
().
getStart
()[1] + _end.
getSegment
().
getEnd
()[1]) / 2;
52
53
float
dx = (nx - ex);
54
float
dy = (ny - ey);
55
56
return
std::sqrt(dx * dx + dy * dy);
57
58
//return 0; //Dijkstra expansion
59
}
60
};
61
}
// namespace multi_robot_router
62
63
#endif // HEURISTIC_H
multi_robot_router::Vertex::getSegment
const Segment & getSegment() const
Definition:
srr_utils.cpp:88
multi_robot_router::Segment::getEnd
const Eigen::Vector2d & getEnd() const
Definition:
srr_utils.cpp:45
multi_robot_router::Heuristic
Definition:
heuristic.h:36
srr_utils.h
multi_robot_router::Segment::getStart
const Eigen::Vector2d & getStart() const
Definition:
srr_utils.cpp:64
multi_robot_router::Heuristic::calcHeuristic
float calcHeuristic(const Vertex &_next, const Vertex &_end) const
calculates the euclidean distance to the end vertex
Definition:
heuristic.h:45
multi_robot_router::Vertex
Definition:
srr_utils.h:65
multi_robot_router
Definition:
avoidance_resolution.h:37
tuw_multi_robot_router
Author(s): Benjamin Binder
autogenerated on Wed Mar 2 2022 01:10:16