Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _stereo_visual_odometry_alg_h_
00026 #define _stereo_visual_odometry_alg_h_
00027
00028 #include <iri_stereo_visual_odometry/StereoVisualOdometryConfig.h>
00029 #include "mutex.h"
00030 #include <stereo_vo.h>
00031 #include <cv_bridge/cv_bridge.h>
00032 #include <sensor_msgs/image_encodings.h>
00033 #include <tf/transform_datatypes.h>
00034
00035
00036
00037
00043 class StereoVisualOdometryAlgorithm
00044 {
00045 protected:
00052 CMutex alg_mutex_;
00053
00054
00055
00056 public:
00063 typedef iri_stereo_visual_odometry::StereoVisualOdometryConfig Config;
00064
00071 Config config_;
00072
00081 StereoVisualOdometryAlgorithm(void);
00082
00088 void lock(void) { alg_mutex_.enter(); };
00089
00095 void unlock(void) { alg_mutex_.exit(); };
00096
00104 bool try_enter(void) { return alg_mutex_.try_enter(); };
00105
00117 void config_update(Config& new_cfg, uint32_t level=0);
00118
00119
00120
00121
00128 ~StereoVisualOdometryAlgorithm(void);
00129
00130 void compute_H_Hcov(cv::Mat& img1, cv::Mat& img2, cv::Mat& img3, cv::Mat& img4, cv::Mat& H, cv::Mat& Hcov, cv::Mat& point);
00131 void extract_ypr(cv::Mat& H,double& y,double& p,double& r);
00132
00133 };
00134
00135 #endif