Go to the documentation of this file.00001 #ifndef RGBD_SLAM_MISC2_H_
00002 #define RGBD_SLAM_MISC2_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "parameter_server.h"
00019
00020 inline double depth_std_dev(double depth)
00021 {
00022
00023 static double depth_std_dev = ParameterServer::instance()->get<double>("sigma_depth");
00024
00025
00026
00027 return depth_std_dev * depth * depth;
00028 }
00029
00030 inline double depth_covariance(double depth)
00031 {
00032 static double stddev = depth_std_dev(depth);
00033 static double cov = stddev * stddev;
00034 return cov;
00035 }
00036
00037 inline Eigen::Matrix3d point_information_matrix(double distance)
00038 {
00039 Eigen::Matrix3d inf_mat = Eigen::Matrix3d::Identity();
00040
00041
00042
00043
00044 inf_mat(2,2) = 1.0/depth_covariance(distance);
00045
00046 return inf_mat;
00047 }
00048
00049 inline void backProject(const float& fxinv, const float& fyinv,
00050 const float& cx, const float& cy,
00051 const float& u, const float& v, const float& z,
00052 float& out_x, float& out_y, float& out_z)
00053 {
00054
00055
00056
00057
00058
00059
00060
00061
00062 out_x = (u - cx) * z * fxinv;
00063 out_y = (v - cy) * z * fyinv;
00064 out_z = z;
00065 }
00066 #endif