67 std::vector<mrpt::math::CMatrixFloat>
depth;
71 std::vector<mrpt::math::CMatrixFloat>
xx;
72 std::vector<mrpt::math::CMatrixFloat>
xx_inter;
73 std::vector<mrpt::math::CMatrixFloat>
xx_old;
75 std::vector<mrpt::math::CMatrixFloat>
yy;
76 std::vector<mrpt::math::CMatrixFloat>
yy_inter;
77 std::vector<mrpt::math::CMatrixFloat>
yy_old;
224 unsigned int& num_rows,
unsigned int& num_cols)
const 238 inline void setFOV(
float new_fovh,
float new_fovv);
241 inline void getFOV(
float& cur_fovh,
float& cur_fovv)
const 243 cur_fovh = 57.296f *
fovh;
244 cur_fovv = 57.296f *
fovv;
std::vector< mrpt::math::CMatrixFloat > xx_inter
mrpt::math::TTwist3D kai_loc
Filtered velocity in local coordinates.
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< mrpt::math::CMatrixFloat > yy_warped
mrpt::poses::CPose3D cam_oldpose
Previous camera pose.
unsigned int rows_i
Aux variables: number of rows and cols at a given level.
void getPointsCoord(mrpt::math::CMatrixFloat &x, mrpt::math::CMatrixFloat &y, mrpt::math::CMatrixFloat &z)
Get the coordinates of the points considered by the visual odometry method.
std::vector< mrpt::math::CMatrixFloat > yy_inter
std::vector< mrpt::math::CMatrixFloat > depth_warped
mrpt::math::CMatrixFloat44 f_mask
float previous_speed_eig_weight
Default 0.5.
mrpt::math::TTwist3D getLastSpeedAbs() const
Get the last camera velocity (vx, vy, vz, wx, wy, wz) expressed in the world reference frame...
void getWeights(mrpt::math::CMatrixFloat &we)
Get the matrix of weights.
mrpt::math::CMatrixFloat dv
void buildCoordinatesPyramid()
Create the gaussian image pyramid according to the number of coarse-to-fine levels.
void calculateDepthDerivatives()
Calculates the depth derivatives respect to u,v (rows and cols) and t (time)
float getSpeedFilterConstWeight() const
Get the filter constant-weight of the velocity filter.
std::vector< mrpt::math::CMatrixFloat > yy
void getCTFLevels(unsigned int &levels) const
Get the number of coarse-to-fine levels that are considered by the visual odometry method...
std::vector< mrpt::math::CMatrixFloat > xx_warped
unsigned int rows
The maximum resolution that will be considered by the visual odometry method.
virtual void loadFrame()=0
Virtual method to be implemented in derived classes.
mrpt::math::CMatrixFloat66 getCovariance() const
Get the least-square covariance matrix.
float getSpeedFilterEigWeight() const
Get the filter eigen-weight of the velocity filter.
std::vector< mrpt::math::CMatrixFloat > xx_old
bool fast_pyramid
Gaussian masks used to build the pyramid and flag to select accurate or fast pyramid.
mrpt::math::TTwist3D getSolverSolution() const
Get the camera velocity (vx, vy, vz, wx, wy, wz) expressed in local reference frame estimated by the ...
void computeWeights()
This method computes the weighting fuction associated to measurement and linearization errors...
void solveOneLevel()
The Solver.
3D twist: 3D velocity vector (vx,vy,vz) + angular velocity (wx,wy,wz)
mrpt::math::CMatrixFloat dt
float execution_time
Execution time (ms)
unsigned int m_width
Aux variables: size from which the pyramid starts to be built.
void setFOV(float new_fovh, float new_fovv)
Set the horizontal and vertical field of vision (in degrees)
void odometryCalculation()
This method performs all the necessary steps to estimate the camera velocity once the new image is re...
void calculateCoord()
Calculate the "average" coordinates of the points observed by the camera between two consecutive fram...
std::vector< mrpt::math::CMatrixFloat > xx
void getFOV(float &cur_fovh, float &cur_fovv) const
Get the horizontal and vertical field of vision (in degrees)
mrpt::math::CMatrixBool null
Matrix which indicates whether the depth of a pixel is zero (null = 1) or not (null = 00)...
void getDepthDerivatives(mrpt::math::CMatrixFloat &cur_du, mrpt::math::CMatrixFloat &cur_dv, mrpt::math::CMatrixFloat &cur_dt)
Get the depth derivatives (last level) respect to u,v and t respectively.
mrpt::math::CMatrixFloat weights
Weights for the range flow constraint equations in the least square solution.
double fps
Frames per second (Hz)
Classes for computer vision, detectors, features, etc.
This abstract class implements a method called "Difodo" to perform Visual odometry with range cameras...
unsigned int ctf_levels
Number of coarse-to-fine levels.
void filterLevelSolution()
Method to filter the velocity at each level of the pyramid.
mrpt::math::TTwist3D kai_loc_level
Solution from the solver at a given level.
void poseUpdate()
Update camera pose and the velocities for the filter.
mrpt::math::CMatrixFloat66 est_cov
Least squares covariance matrix.
mrpt::math::CMatrixFloat depth_wf
Matrix that stores the original depth frames with the image resolution.
mrpt::math::TTwist3D kai_abs
Last filtered velocity in absolute coordinates.
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.
std::vector< mrpt::math::CMatrixFloat > depth_old
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.
mrpt::math::TTwist3D kai_loc_old
float fovv
Vertical field of view (rad)
std::vector< mrpt::math::CMatrixFloat > depth
Matrices that store the point coordinates after downsampling.
unsigned int downsample
Downsample the image taken by the range camera.
This template class provides the basic functionality for a general 2D any-size, resizable container o...
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...
void buildCoordinatesPyramidFast()
mrpt::math::CMatrixFloat du
Matrices that store the depth derivatives.
std::vector< mrpt::math::CMatrixFloat > yy_old
std::vector< mrpt::math::CMatrixFloat > transformations
Transformations of the coarse-to-fine levels.
std::vector< mrpt::math::CMatrixFloat > depth_inter
unsigned int cam_mode
Resolution of the images taken by the range camera.
void performWarping()
Warp the second depth image against the first one according to the 3D transformations accumulated up ...