TrackingError.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 * @package VisionX::ArmarXObjects::TrackingError
17 * @author David Sippel ( uddoe at student dot kit dot edu )
18 * @date 2016
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22
23#pragma once
24
25
26#include <mutex>
27
28#include <Eigen/Core>
29#include <Eigen/Geometry>
30
31#include <opencv2/opencv.hpp>
32
35
37#include <VisionX/interface/components/TrackingErrorInterface.h>
40
41#include <Image/IplImageAdaptor.h>
42
43namespace armarx
44{
45 /**
46 * @class TrackingErrorPropertyDefinitions
47 * @brief
48 */
50 {
51 public:
54 {
55 //defineRequiredProperty<std::string>("PropertyName", "Description");
56 //defineOptionalProperty<std::string>("PropertyName", "DefaultValue", "Description");
57 defineOptionalProperty<float>("Framerate", 0.0, "the framerate");
59 "providerName", "Armar3ImageProvider", "ImageProvider name");
61 "UseChessBoard", true, "use chessboard for feature tracking");
63 "TrackingErrorTopicName", "TrackingErrorTopic", "TrackingErrorTopicName name");
64 defineOptionalProperty<int>("Chessboard.Width", 7, "Chessboard width");
65 defineOptionalProperty<int>("Chessboard.Height", 5, "Chessboard height");
66
67 defineOptionalProperty<std::string>("DebugObserverName",
68 "DebugObserver",
69 "Name of the topic the DebugObserver listens on");
70 }
71 };
72
73 /**
74 * @defgroup Component-TrackingError TrackingError
75 * @ingroup VisionX-Components
76 * A description of the component TrackingError.
77 *
78 * @class TrackingError
79 * @ingroup Component-TrackingError
80 * @brief Brief description of class TrackingError.
81 *
82 * Detailed description of class TrackingError.
83 */
85 {
86 public:
87 /**
88 * @see armarx::ManagedIceObject::getDefaultName()
89 */
90 static std::string
92 {
93 return "TrackingError";
94 }
95
96 std::string
97 getDefaultName() const override
98 {
99 return GetDefaultName();
100 }
101
102 /**
103 * @see PropertyUser::createPropertyDefinitions()
104 */
106
107 // ImageProcessor interface
108 protected:
109 void onInitImageProcessor() override;
110 void onConnectImageProcessor() override;
111 void onExitImageProcessor() override;
112 void process() override;
113
114 private:
115 CByteImage** cameraImages;
116 std::string providerName;
117 std::mutex imageMutex;
118 cv::Mat previousImage, old2;
119 std::vector<cv::Point2f> previousFeatures, features2_prev;
120 bool useChessboard;
121
122 int chessboardWidth, chessboardHeight, imageWidth, imageHeight;
123
124 visionx::ImageProviderInterfacePrx imageProviderPrx;
125 TrackingErrorListenerPrx prx;
126
127 DebugObserverInterfacePrx debugObserver;
128
129 visionx::FPSCounter fpsCounter;
130 float frameRate;
131 };
132} // namespace armarx
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
PropertyDefinition< PropertyType > & defineOptionalProperty(const std::string &name, PropertyType defaultValue, const std::string &description="", PropertyDefinitionBase::PropertyConstness constness=PropertyDefinitionBase::eConstant)
TrackingErrorPropertyDefinitions(std::string prefix)
Brief description of class TrackingError.
void onConnectImageProcessor() override
Implement this method in the ImageProcessor in order execute parts when the component is fully initia...
void onExitImageProcessor() override
Exit the ImapeProcessor component.
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void process() override
Process the vision component.
void onInitImageProcessor() override
Setup the vision component.
static std::string GetDefaultName()
std::string getDefaultName() const override
Retrieve default name of component.
The FPSCounter class provides methods for calculating the frames per second (FPS) count in periodic t...
Definition FPSCounter.h:37
ImageProcessorPropertyDefinitions(std::string prefix)
The ImageProcessor class provides an interface for access to ImageProviders via Ice and shared memory...
This file offers overloads of toIce() and fromIce() functions for STL container types.
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface > DebugObserverInterfacePrx
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
ArmarX headers.