62 std::vector<Eigen::MatrixXf>
depth;
66 std::vector<Eigen::MatrixXf>
xx;
70 std::vector<Eigen::MatrixXf>
yy;
84 Eigen::Matrix<bool, Eigen::Dynamic, Eigen::Dynamic>
null;
140 void buildCoordinatesPyramid();
141 void buildCoordinatesPyramidFast();
144 void performWarping();
147 void calculateCoord();
150 void calculateDepthDerivatives();
153 void computeWeights();
157 void solveOneLevel();
160 void filterLevelSolution();
191 void odometryCalculation();
197 inline void getCTFLevels(
unsigned int &levels)
const {levels = ctf_levels;}
200 inline void setFOV(
float new_fovh,
float new_fovv);
203 inline void getFOV(
float &cur_fovh,
float &cur_fovv)
const {cur_fovh = 57.296*fovh; cur_fovv = 57.296*fovv;}
218 inline void getPointsCoord(Eigen::MatrixXf &
x, Eigen::MatrixXf &
y, Eigen::MatrixXf &
z);
221 inline void getDepthDerivatives(Eigen::MatrixXf &cur_du, Eigen::MatrixXf &cur_dv, Eigen::MatrixXf &cur_dt);
233 inline void getWeights(Eigen::MatrixXf &we);
237 virtual void loadFrame() = 0;
float previous_speed_const_weight
Speed filter parameters: Previous_speed_const_weight - Directly weights the previous speed in order t...
unsigned int image_level
Aux varibles: levels of the image pyramid and the solver, respectively.
std::vector< Eigen::MatrixXf > xx
mrpt::poses::CPose3D cam_oldpose
Previous camera pose.
std::vector< Eigen::MatrixXf > depth_warped
std::vector< Eigen::MatrixXf > yy_warped
float fps
Frames per second (Hz)
unsigned int rows_i
Aux variables: number of rows and cols at a given level.
float previous_speed_eig_weight
Default 0.5.
std::vector< Eigen::MatrixXf > xx_old
std::vector< Eigen::MatrixXf > xx_warped
float getSpeedFilterConstWeight() const
Get the filter constant-weight of the velocity filter.
void getCTFLevels(unsigned int &levels) const
Get the number of coarse-to-fine levels that are considered by the visual odometry method...
mrpt::math::CMatrixFloat61 getSolverSolution() const
Get the camera velocity (vx, vy, vz, wx, wy, wz) expressed in local reference frame estimated by the ...
std::vector< Eigen::MatrixXf > transformations
Transformations of the coarse-to-fine levels.
unsigned int rows
The maximum resolution that will be considered by the visual odometry method.
Eigen::MatrixXf depth_wf
Matrix that stores the original depth frames with the image resolution.
mrpt::math::CMatrixFloat66 getCovariance() const
Get the least-square covariance matrix.
std::vector< Eigen::MatrixXf > yy_old
float getSpeedFilterEigWeight() const
Get the filter eigen-weight of the velocity filter.
bool fast_pyramid
Gaussian masks used to build the pyramid and flag to select accurate or fast pyramid.
float execution_time
Execution time (ms)
A numeric matrix of compile-time fixed size.
Eigen::MatrixXf weights
Weights for the range flow constraint equations in the least square solution.
void getFOV(float &cur_fovh, float &cur_fovv) const
Get the horizontal and vertical field of vision (in degrees)
mrpt::math::CMatrixFloat61 getLastSpeedAbs() const
Get the last camera velocity (vx, vy, vz, wx, wy, wz) expressed in the world reference frame...
std::vector< Eigen::MatrixXf > depth_inter
unsigned int width
Aux variables: size from which the pyramid starts to be built.
std::vector< Eigen::MatrixXf > depth_old
This abstract class implements a method called "Difodo" to perform Visual odometry with range cameras...
int JSAMPARRAY int int num_rows
int JSAMPARRAY int int JDIMENSION num_cols
unsigned int ctf_levels
Number of coarse-to-fine levels.
Eigen::Matrix< float, 6, 1 > kai_loc
Filtered velocity in local coordinates.
Eigen::Matrix< float, 6, 1 > kai_loc_level
Solution from the solver at a given level.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
std::vector< Eigen::MatrixXf > yy
std::vector< Eigen::MatrixXf > yy_inter
Eigen::Matrix< float, 6, 1 > kai_loc_old
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
unsigned int num_valid_points
Num of valid points after removing null pixels.
Eigen::Matrix< float, 6, 1 > kai_abs
Last filtered velocity in absolute coordinates.
float fovh
Camera properties:
void setSpeedFilterConstWeight(float new_cweight)
Set the filter constant-weight of the velocity filter.
mrpt::poses::CPose3D cam_pose
Camera poses.
void setSpeedFilterEigWeight(float new_eweight)
Set the filter eigen-weight of the velocity filter.
Eigen::Matrix< bool, Eigen::Dynamic, Eigen::Dynamic > null
Matrix which indicates whether the depth of a pixel is zero (null = 1) or not (null = 00)...
Eigen::Matrix< float, 6, 6 > est_cov
Least squares covariance matrix.
std::vector< Eigen::MatrixXf > depth
Matrices that store the point coordinates after downsampling.
float fovv
Vertical field of view (rad)
unsigned int downsample
Downsample the image taken by the range camera.
std::vector< Eigen::MatrixXf > xx_inter
void getRowsAndCols(unsigned int &num_rows, unsigned int &num_cols) const
Get the rows and cols of the depth image that are considered by the visual odometry method...
unsigned int cam_mode
Resolution of the images taken by the range camera.
Eigen::MatrixXf du
Matrices that store the depth derivatives.