ChainApproximation.h
Go to the documentation of this file.
1
/**
2
* This file is part of ArmarX.
3
*
4
* ArmarX is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation.
7
*
8
* ArmarX is distributed in the hope that it will be useful, but
9
* WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15
*
16
* @author Fabian Reister ( fabian dot reister at kit dot edu )
17
* @author Christian R. G. Dreher ( c dot dreher at kit dot edu )
18
* @date 2021
19
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20
* GNU General Public License
21
*/
22
23
#pragma once
24
25
#include <Eigen/Core>
26
27
namespace
armarx::navigation::algorithm
28
{
29
30
namespace
detail
31
{
32
struct
ChainApproximationParams
33
{
34
float
distanceTh
;
// [mm]
35
36
int
maxIterations
{-1};
37
};
38
39
struct
ApproximationResult
40
{
41
enum class
TerminationCondition
42
{
43
Converged
,
44
IterationLimit
45
};
46
TerminationCondition
condition
;
47
48
int
iterations
;
49
50
float
reductionFactor
{0.F};
51
};
52
53
std::ostream&
operator<<
(std::ostream&
str
,
const
ApproximationResult& res);
54
}
// namespace detail
55
56
class
ChainApproximation
57
{
58
public
:
59
using
Point
= Eigen::Vector2f;
60
using
Points
= std::vector<Point>;
61
62
using
Params
=
detail::ChainApproximationParams
;
63
using
ApproximationResult
=
detail::ApproximationResult
;
64
65
ChainApproximation
(
const
Points
& points,
const
Params
& params);
66
67
ApproximationResult
approximate
();
68
69
[[nodiscard]]
Points
approximatedChain
()
const
;
70
71
private
:
72
struct
Triplet
73
{
74
Triplet(
const
int
&
a
,
const
int
& b,
const
int
&
c
) :
a
(
a
), b(b),
c
(
c
)
75
{
76
}
77
78
int
a
;
79
int
b;
80
int
c
;
81
};
82
83
using
Triplets = std::vector<Triplet>;
84
85
Triplets getTriplets()
const
;
86
87
std::vector<float> computeDistances(
const
Triplets& triplets);
88
float
computeDistance(
const
Triplet& triplet)
const
;
89
90
bool
approximateStep();
91
92
Points
points;
93
94
std::vector<int> indices;
95
96
const
Params
params;
97
};
98
99
}
// namespace armarx::navigation::algorithm
str
std::string str(const T &t)
Definition:
UserAssistedSegmenterGuiWidgetController.cpp:42
armarx::navigation::algorithm::detail::ChainApproximationParams::maxIterations
int maxIterations
Definition:
ChainApproximation.h:36
armarx::navigation::algorithm::detail::ChainApproximationParams
Definition:
ChainApproximation.h:32
armarx::navigation::algorithm::ChainApproximation::approximate
ApproximationResult approximate()
Definition:
ChainApproximation.cpp:27
armarx::navigation::algorithm::detail::ApproximationResult::condition
TerminationCondition condition
Definition:
ChainApproximation.h:46
detail
Definition:
OpenCVUtil.cpp:127
c
constexpr T c
Definition:
UnscentedKalmanFilterTest.cpp:43
armarx::navigation::algorithm::ChainApproximation::approximatedChain
Points approximatedChain() const
Definition:
ChainApproximation.cpp:172
armarx::navigation::algorithm::detail::ApproximationResult::TerminationCondition::IterationLimit
@ IterationLimit
armarx::ctrlutil::a
double a(double t, double a0, double j)
Definition:
CtrlUtil.h:45
armarx::navigation::algorithm::detail::ApproximationResult::iterations
int iterations
Definition:
ChainApproximation.h:48
armarx::navigation::algorithm::ChainApproximation::Points
std::vector< Point > Points
Definition:
ChainApproximation.h:60
Point
Definition:
PointCloud.h:21
armarx::navigation::algorithm
This file is part of ArmarX.
Definition:
AStarPlanner.cpp:29
armarx::navigation::algorithm::ChainApproximation
Definition:
ChainApproximation.h:56
armarx::navigation::algorithm::detail::operator<<
std::ostream & operator<<(std::ostream &str, const ApproximationResult &res)
Definition:
ChainApproximation.cpp:178
armarx::navigation::algorithm::ChainApproximation::ChainApproximation
ChainApproximation(const Points &points, const Params ¶ms)
Definition:
ChainApproximation.cpp:18
armarx::navigation::algorithm::detail::ChainApproximationParams::distanceTh
float distanceTh
Definition:
ChainApproximation.h:34
armarx::navigation::algorithm::detail::ApproximationResult::TerminationCondition::Converged
@ Converged
armarx::navigation::algorithm::detail::ApproximationResult::reductionFactor
float reductionFactor
Definition:
ChainApproximation.h:50
armarx::navigation::algorithm::detail::ApproximationResult::TerminationCondition
TerminationCondition
Definition:
ChainApproximation.h:41
armarx::navigation::algorithm::detail::ApproximationResult
Definition:
ChainApproximation.h:39
armarx::navigation::algorithm::ChainApproximation::Params
detail::ChainApproximationParams Params
Definition:
ChainApproximation.h:62
armarx
navigation
algorithms
smoothing
ChainApproximation.h
Generated on Sat Oct 12 2024 09:14:15 for armarx_documentation by
1.8.17