Go to the documentation of this file.
70 std::vector<Eigen::MatrixXf>
depth;
74 std::vector<Eigen::MatrixXf>
xx;
78 std::vector<Eigen::MatrixXf>
yy;
94 Eigen::Matrix<bool, Eigen::Dynamic, Eigen::Dynamic>
null;
227 unsigned int& num_rows,
unsigned int& num_cols)
const
241 inline void setFOV(
float new_fovh,
float new_fovv);
244 inline void getFOV(
float& cur_fovh,
float& cur_fovv)
const
246 cur_fovh = 57.296 *
fovh;
247 cur_fovv = 57.296 *
fovv;
277 Eigen::MatrixXf&
x, Eigen::MatrixXf&
y, Eigen::MatrixXf&
z);
282 Eigen::MatrixXf& cur_du, Eigen::MatrixXf& cur_dv,
283 Eigen::MatrixXf& cur_dt);
unsigned int rows_i
Aux variables: number of rows and cols at a given level.
void solveOneLevel()
The Solver.
unsigned int width
Aux variables: size from which the pyramid starts to be built.
void filterLevelSolution()
Method to filter the velocity at each level of the pyramid.
Eigen::Matrix< float, 6, 1 > kai_loc_level
Solution from the solver at a given level.
void getDepthDerivatives(Eigen::MatrixXf &cur_du, Eigen::MatrixXf &cur_dv, Eigen::MatrixXf &cur_dt)
Get the depth derivatives (last level) respect to u,v and t respectively.
mrpt::poses::CPose3D cam_oldpose
Previous camera pose.
void getWeights(Eigen::MatrixXf &we)
Get the matrix of weights.
float fovv
Vertical field of view (rad)
virtual void loadFrame()=0
Virtual method to be implemented in derived classes.
std::vector< Eigen::MatrixXf > yy_old
float fovh
Camera properties:
unsigned int image_level
Aux varibles: levels of the image pyramid and the solver, respectively.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void setSpeedFilterEigWeight(float new_eweight)
Set the filter eigen-weight of the velocity filter.
std::vector< Eigen::MatrixXf > depth
Matrices that store the point coordinates after downsampling.
std::vector< Eigen::MatrixXf > depth_warped
std::vector< Eigen::MatrixXf > xx_inter
void setSpeedFilterConstWeight(float new_cweight)
Set the filter constant-weight of the velocity filter.
mrpt::poses::CPose3D cam_pose
Camera poses.
float getSpeedFilterEigWeight() const
Get the filter eigen-weight of the velocity filter.
void poseUpdate()
Update camera pose and the velocities for the filter.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Eigen::Matrix< float, 6, 1 > kai_abs
Last filtered velocity in absolute coordinates.
float fps
Frames per second (Hz)
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 num_valid_points
Num of valid points after removing null pixels.
unsigned int ctf_levels
Number of coarse-to-fine levels.
std::vector< Eigen::MatrixXf > xx_old
A numeric matrix of compile-time fixed size.
unsigned int cam_mode
Resolution of the images taken by the range camera.
void calculateDepthDerivatives()
Calculates the depth derivatives respect to u,v (rows and cols) and t (time)
void odometryCalculation()
This method performs all the necessary steps to estimate the camera velocity once the new image is re...
Eigen::MatrixXf weights
Weights for the range flow constraint equations in the least square solution.
This abstract class implements a method called "Difodo" to perform Visual odometry with range cameras...
Eigen::Matrix< float, 6, 1 > kai_loc_old
mrpt::math::CMatrixFloat61 getSolverSolution() const
Get the camera velocity (vx, vy, vz, wx, wy, wz) expressed in local reference frame estimated by the ...
void performWarping()
Warp the second depth image against the first one according to the 3D transformations accumulated up ...
std::vector< Eigen::MatrixXf > transformations
Transformations of the coarse-to-fine levels.
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_inter
mrpt::math::CMatrixFloat61 getLastSpeedAbs() const
Get the last camera velocity (vx, vy, vz, wx, wy, wz) expressed in the world reference frame,...
float previous_speed_const_weight
Speed filter parameters: Previous_speed_const_weight - Directly weights the previous speed in order t...
unsigned int downsample
Downsample the image taken by the range camera.
bool fast_pyramid
Gaussian masks used to build the pyramid and flag to select accurate or fast pyramid.
std::vector< Eigen::MatrixXf > yy_warped
void computeWeights()
This method computes the weighting fuction associated to measurement and linearization errors.
float previous_speed_eig_weight
Default 0.5.
std::vector< Eigen::MatrixXf > depth_old
Eigen::Matrix< float, 6, 1 > kai_loc
Filtered velocity in local coordinates.
float execution_time
Execution time (ms)
std::vector< Eigen::MatrixXf > xx_warped
void buildCoordinatesPyramidFast()
void setFOV(float new_fovh, float new_fovv)
Set the horizontal and vertical field of vision (in degrees)
void calculateCoord()
Calculate the "average" coordinates of the points observed by the camera between two consecutive fram...
Eigen::Matrix< float, 6, 6 > est_cov
Least squares covariance matrix.
void buildCoordinatesPyramid()
Create the gaussian image pyramid according to the number of coarse-to-fine levels.
Eigen::MatrixXf du
Matrices that store the depth derivatives.
std::vector< Eigen::MatrixXf > yy
float getSpeedFilterConstWeight() const
Get the filter constant-weight of the velocity filter.
void getFOV(float &cur_fovh, float &cur_fovv) const
Get the horizontal and vertical field of vision (in degrees)
unsigned int rows
The maximum resolution that will be considered by the visual odometry method.
void getPointsCoord(Eigen::MatrixXf &x, Eigen::MatrixXf &y, Eigen::MatrixXf &z)
Get the coordinates of the points considered by the visual odometry method.
void getCTFLevels(unsigned int &levels) const
Get the number of coarse-to-fine levels that are considered by the visual odometry method.
std::vector< Eigen::MatrixXf > xx
std::vector< Eigen::MatrixXf > depth_inter
Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST | |