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
* @date 2021
18
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19
* GNU General Public License
20
*/
21
22
#pragma once
23
24
#include <Eigen/Core>
25
26
namespace
armarx
27
{
28
29
namespace
detail
30
{
31
struct
ChainApproximationParams
32
{
33
float
distanceTh
;
// [mm]
34
35
int
maxIterations
{-1};
36
};
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
int
a
;
77
int
b;
78
int
c
;
79
};
80
81
using
Triplets = std::vector<Triplet>;
82
83
Triplets getTriplets()
const
;
84
85
std::vector<float> computeDistances(
const
Triplets& triplets);
86
float
computeDistance(
const
Triplet& triplet)
const
;
87
88
bool
approximateStep();
89
90
Points
points;
91
92
std::vector<int> indices;
93
94
const
Params
params;
95
};
96
97
}
// namespace armarx
armarx::ChainApproximation::Points
std::vector< Point > Points
Definition:
ChainApproximation.h:60
str
std::string str(const T &t)
Definition:
UserAssistedSegmenterGuiWidgetController.cpp:42
armarx::detail::ChainApproximationParams
Definition:
ChainApproximation.h:31
armarx::detail::ApproximationResult::iterations
int iterations
Definition:
ChainApproximation.h:48
armarx::detail::ChainApproximationParams::distanceTh
float distanceTh
Definition:
ChainApproximation.h:33
armarx::detail::ApproximationResult::reductionFactor
float reductionFactor
Definition:
ChainApproximation.h:50
armarx::detail::ApproximationResult::TerminationCondition
TerminationCondition
Definition:
ChainApproximation.h:41
detail
Definition:
OpenCVUtil.cpp:127
armarx::ChainApproximation::approximatedChain
Points approximatedChain() const
Definition:
ChainApproximation.cpp:171
c
constexpr T c
Definition:
UnscentedKalmanFilterTest.cpp:43
armarx::ChainApproximation
Definition:
ChainApproximation.h:56
armarx::ChainApproximation::Params
detail::ChainApproximationParams Params
Definition:
ChainApproximation.h:62
armarx::ctrlutil::a
double a(double t, double a0, double j)
Definition:
CtrlUtil.h:45
armarx::detail::ChainApproximationParams::maxIterations
int maxIterations
Definition:
ChainApproximation.h:35
Point
Definition:
PointCloud.h:21
armarx::ChainApproximation::approximate
ApproximationResult approximate()
Definition:
ChainApproximation.cpp:22
armarx::detail::ApproximationResult
Definition:
ChainApproximation.h:39
armarx::detail::ApproximationResult::TerminationCondition::IterationLimit
@ IterationLimit
armarx::detail::ApproximationResult::TerminationCondition::Converged
@ Converged
armarx::detail::ApproximationResult::condition
TerminationCondition condition
Definition:
ChainApproximation.h:46
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition:
ArmarXTimeserver.cpp:28
armarx::detail::operator<<
std::ostream & operator<<(std::ostream &out, const LocationProvider::Location &l)
Definition:
trace.cpp:147
armarx::ChainApproximation::ChainApproximation
ChainApproximation(const Points &points, const Params ¶ms)
Definition:
ChainApproximation.cpp:14
armarx
navigation
components
laser_scanner_feature_extraction
ChainApproximation.h
Generated on Sat Oct 12 2024 09:14:15 for armarx_documentation by
1.8.17