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 <iosfwd>
25
#include <vector>
26
27
#include <Eigen/Core>
28
29
namespace
armarx
30
{
31
32
namespace
detail
33
{
34
struct
ChainApproximationParams
35
{
36
float
distanceTh
;
// [mm]
37
38
int
maxIterations
{-1};
39
};
40
41
struct
ApproximationResult
42
{
43
enum class
TerminationCondition
44
{
45
Converged
,
46
IterationLimit
47
};
48
TerminationCondition
condition
;
49
50
int
iterations
;
51
52
float
reductionFactor
{0.F};
53
};
54
55
std::ostream&
operator<<
(std::ostream&
str
,
const
ApproximationResult& res);
56
}
// namespace detail
57
58
class
ChainApproximation
59
{
60
public
:
61
using
Point
= Eigen::Vector2f;
62
using
Points
= std::vector<Point>;
63
64
using
Params
=
detail::ChainApproximationParams
;
65
using
ApproximationResult
=
detail::ApproximationResult
;
66
67
ChainApproximation
(
const
Points
& points,
const
Params
& params);
68
69
ApproximationResult
approximate
();
70
71
[[nodiscard]]
Points
approximatedChain
()
const
;
72
73
private
:
74
struct
Triplet
75
{
76
Triplet(
const
int
&
a
,
const
int
& b,
const
int
&
c
) :
a
(
a
), b(b),
c
(
c
)
77
{
78
}
79
80
int
a
;
81
int
b;
82
int
c
;
83
};
84
85
using
Triplets = std::vector<Triplet>;
86
87
Triplets getTriplets()
const
;
88
89
std::vector<float> computeDistances(
const
Triplets& triplets);
90
float
computeDistance(
const
Triplet& triplet)
const
;
91
92
bool
approximateStep();
93
94
Points
points;
95
96
std::vector<int> indices;
97
98
const
Params
params;
99
};
100
101
}
// namespace armarx
armarx::ChainApproximation::Points
std::vector< Point > Points
Definition:
ChainApproximation.h:62
str
std::string str(const T &t)
Definition:
UserAssistedSegmenterGuiWidgetController.cpp:43
armarx::detail::ChainApproximationParams
Definition:
ChainApproximation.h:34
armarx::detail::ApproximationResult::iterations
int iterations
Definition:
ChainApproximation.h:50
armarx::detail::ChainApproximationParams::distanceTh
float distanceTh
Definition:
ChainApproximation.h:36
armarx::detail::ApproximationResult::reductionFactor
float reductionFactor
Definition:
ChainApproximation.h:52
armarx::detail::ApproximationResult::TerminationCondition
TerminationCondition
Definition:
ChainApproximation.h:43
detail
Definition:
OpenCVUtil.cpp:128
armarx::ChainApproximation::approximatedChain
Points approximatedChain() const
Definition:
ChainApproximation.cpp:177
c
constexpr T c
Definition:
UnscentedKalmanFilterTest.cpp:46
armarx::ChainApproximation
Definition:
ChainApproximation.h:58
armarx::ChainApproximation::Params
detail::ChainApproximationParams Params
Definition:
ChainApproximation.h:64
armarx::ctrlutil::a
double a(double t, double a0, double j)
Definition:
CtrlUtil.h:45
armarx::detail::ChainApproximationParams::maxIterations
int maxIterations
Definition:
ChainApproximation.h:38
Point
Definition:
PointCloud.h:21
armarx::ChainApproximation::approximate
ApproximationResult approximate()
Definition:
ChainApproximation.cpp:27
armarx::detail::ApproximationResult
Definition:
ChainApproximation.h:41
armarx::detail::ApproximationResult::TerminationCondition::IterationLimit
@ IterationLimit
armarx::detail::ApproximationResult::TerminationCondition::Converged
@ Converged
armarx::detail::ApproximationResult::condition
TerminationCondition condition
Definition:
ChainApproximation.h:48
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition:
ArmarXTimeserver.cpp:27
armarx::detail::operator<<
std::ostream & operator<<(std::ostream &out, const LocationProvider::Location &l)
Definition:
trace.cpp:164
armarx::ChainApproximation::ChainApproximation
ChainApproximation(const Points &points, const Params ¶ms)
Definition:
ChainApproximation.cpp:18
armarx
navigation
components
laser_scanner_feature_extraction
ChainApproximation.h
Generated on Sat Mar 29 2025 09:17:35 for armarx_documentation by
1.8.17