NASA Astrobee Robot Software  0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
marker_detector.h
Go to the documentation of this file.
1 /* Copyright (c) 2017, United States Government, as represented by the
2  * Administrator of the National Aeronautics and Space Administration.
3  *
4  * All rights reserved.
5  *
6  * The Astrobee platform is licensed under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with the
8  * License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15  * License for the specific language governing permissions and limitations
16  * under the License.
17  */
18 
19 #ifndef MARKER_TRACKING_MARKER_DETECTOR_H_
20 #define MARKER_TRACKING_MARKER_DETECTOR_H_
21 
22 // Needed by ALVAR headers
23 #ifndef CV__ENABLE_C_API_CTORS
24 #define CV__ENABLE_C_API_CTORS
25 #endif
26 #include <opencv2/imgproc.hpp>
27 
28 // A simplified version of the marker detector that doesn't calculate
29 // C_T_AR.
30 //
31 // This also saves us from exposure to all the ALVAR headers inside
32 // marker_tracking_node.
34 
35 #include <Eigen/Core>
36 
37 #include <opencv2/core/core_c.h> // I don't need all of OpenCV
38 #include <ar_track_alvar/Marker.h>
39 
40 #include <vector>
41 
42 namespace alvar {
43  class Camera;
44 }
45 
46 namespace marker_tracking {
48  protected:
49  std::vector<alvar::MarkerData> *markers_, *markers_old_;
52 
53  public:
56 
57  void Detect(std::shared_ptr<cv::Mat> image,
58  float max_new_marker_error,
59  float max_track_error);
60 
61  size_t NumMarkers() const;
62  alvar::MarkerData& GetMarker(size_t i) const;
63 
64  public:
66  };
67 
68 } // end namespace marker_tracking
69 
70 #endif // MARKER_TRACKING_MARKER_DETECTOR_H_
alvar
Definition: marker_detector.h:42
marker_tracking::MarkerCornerDetector::EIGEN_MAKE_ALIGNED_OPERATOR_NEW
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: marker_detector.h:65
camera
Definition: camera_model.h:26
marker_tracking::MarkerCornerDetector::Detect
void Detect(std::shared_ptr< cv::Mat > image, float max_new_marker_error, float max_track_error)
Definition: marker_detector.cc:47
camera::CameraParameters
Definition: camera_params.h:58
marker_tracking::MarkerCornerDetector::~MarkerCornerDetector
~MarkerCornerDetector()
Definition: marker_detector.cc:41
marker_tracking::MarkerCornerDetector::labeling_
marker_tracking::LabelingCvSeq labeling_
Definition: marker_detector.h:50
marker_tracking::MarkerCornerDetector::alvar_cam_
alvar::Camera * alvar_cam_
Definition: marker_detector.h:51
marker_tracking
Definition: arconfigio.h:27
marker_tracking::MarkerCornerDetector::markers_
std::vector< alvar::MarkerData > * markers_
Definition: marker_detector.h:49
localization_rviz_plugins::Camera
gtsam::PinholePose< Calibration > Camera
Definition: localization_graph_display.h:55
marker_tracking::MarkerCornerDetector::NumMarkers
size_t NumMarkers() const
Definition: marker_detector.cc:121
labelling_method.h
marker_tracking::LabelingCvSeq
Labeling class that uses OpenCV routines to find connected components.
Definition: labelling_method.h:85
marker_tracking::MarkerCornerDetector
Definition: marker_detector.h:47
marker_tracking::MarkerCornerDetector::GetMarker
alvar::MarkerData & GetMarker(size_t i) const
Definition: marker_detector.cc:125
marker_tracking::MarkerCornerDetector::MarkerCornerDetector
MarkerCornerDetector(camera::CameraParameters const &camera)
Definition: marker_detector.cc:32
marker_tracking::MarkerCornerDetector::markers_old_
std::vector< alvar::MarkerData > * markers_old_
Definition: marker_detector.h:49