|
template<typename T > |
using | Isometry3 = Eigen::Transform< T, 3, Eigen::Isometry > |
|
template<typename T > |
using | Quaternion = Eigen::Quaternion< T > |
|
template<typename T > |
using | AngleAxis = Eigen::AngleAxis< T > |
|
template<typename T > |
using | Vector4 = Eigen::Matrix< T, 4, 1 > |
|
template<typename T > |
using | Vector3 = Eigen::Matrix< T, 3, 1 > |
|
template<typename T > |
using | Vector2 = Eigen::Matrix< T, 2, 1 > |
|
template<Eigen::Index DIM> |
using | VectorEigenVector = std::vector< Eigen::Matrix< double, DIM, 1 >, Eigen::aligned_allocator< Eigen::Matrix< double, DIM, 1 > > > |
| Typedef for an STL vector of Eigen vector objects. Use a specialized allocator in the case that types divisible by 16 bytes are used, specifically Eigen::Vector2d.
|
|
template<Eigen::Index DIM> |
using | TargetFeatures = std::map< unsigned, VectorEigenVector< DIM > > |
| Typedef for a container of target features from a calibration target. This definition allows for multiple features to be associated with a single unique identifier (such as the corners of an ArUco tag)
|
|
using | TargetFeatures2D = TargetFeatures< 2 > |
| Typedef for target features that exist in 2 dimensions (e.g., pixels from a 2D image)
|
|
using | TargetFeatures3D = TargetFeatures< 3 > |
| Typedef for target features that exist in 3 dimensions (e.g., points from a point cloud)
|
|
using | Target2D3D = Target< 2, 3 > |
| Target mapping 2-dimensional sensor measurements (e.g., from a 2D camera) to a 3-dimensional world space.
|
|
using | Target3D3D = Target< 3, 3 > |
| Target mapping 3-dimensional sensor measurements (e.g., from a 3D sensor) to a 3-dimensional world space.
|
|
using | Correspondence2D3D = Correspondence< 2, 3 > |
| Typedef for correspondence between 2D feature in image coordinates and 3D feature in target coordinates.
|
|
using | Correspondence3D3D = Correspondence< 3, 3 > |
| Typedef for correspondence between 3D feature in sensor coordinates and 3D feature in target coordinates.
|
|
using | CorrespondenceSet = Correspondence2D3D::Set |
|
using | Correspondence3DSet = Correspondence3D3D::Set |
|
using | Observation2D3D = Observation< 2, 3 > |
| Typedef for observations of 2D image to 3D target correspondences.
|
|
using | Observation3D3D = Observation< 3, 3 > |
| Typedef for observations of 3D sensor to 3D target correspondences.
|
|
using | KinObservation2D3D = KinematicObservation< 2, 3 > |
| Typedef for kinematic observations of 2D image to 3D target correspondences.
|
|
using | KinObservation3D3D = KinematicObservation< 3, 3 > |
| Typedef for kinematic observations of 3D sensor to 3D target correspondences.
|
|
template<typename T > |
using | VectorVector2 = std::vector< Eigen::Matrix< T, 2, 1 >, Eigen::aligned_allocator< Eigen::Matrix< T, 2, 1 > > > |
|
template<typename T > |
using | VectorVector3 = std::vector< Eigen::Matrix< T, 3, 1 >, Eigen::aligned_allocator< Eigen::Matrix< T, 3, 1 > > > |
|
using | TargetFinderOpenCV = TargetFinder< 2, 3, cv::Mat > |
| Typedef for a target finder based on OpenCV that finds 2D targets in an RGB image.
|
|
using | VectorVector2d = std::vector< Eigen::Vector2d, Eigen::aligned_allocator< Eigen::Vector2d > > |
|
|
VirtualCorrespondenceResult | measureVirtualTargetDiff (const Correspondence2D3D::Set &correspondences, const CameraIntrinsics &intr, const Eigen::Isometry3d &camera_to_target_guess=Eigen::Isometry3d::Identity(), const double pnp_sq_error_threshold=1.0) |
| Divides a set of correspondences into two halves and measures the difference in position of one half to the other Method:
|
|
IntrinsicCalibrationAccuracyResult | measureIntrinsicCalibrationAccuracy (const Observation2D3D::Set &observations, const CameraIntrinsics &intr, const Eigen::Isometry3d &camera_mount_to_camera, const Eigen::Isometry3d &target_mount_to_target, const Eigen::Isometry3d &camera_base_to_target_base, const double pnp_sq_error_threshold=1.0) |
| Calculates the mean and variance of the transform between two virtual correspondence sets (extracted from a single correspondence set) for a set of calibration observations Method:
|
|
std::ostream & | operator<< (std::ostream &stream, const ExtrinsicHandEyeAnalysisStats &stats) |
|
ExtrinsicHandEyeAnalysisStats | analyzeResults (const ExtrinsicHandEyeProblem2D3D &problem, const ExtrinsicHandEyeResult &opt_result) |
| Analyzes the results of the hand eye calibration by measuring the difference between the calibrated camera to target transform and a PnP optimization estimation of the same transform.
|
|
std::ostream & | operator<< (std::ostream &stream, const ExtrinsicHandEye3dProjectionStats &stats) |
|
ExtrinsicHandEye3dProjectionStats | analyze3dProjectionError (const ExtrinsicHandEyeProblem2D3D &problem, const ExtrinsicHandEyeResult &opt_result) |
|
Eigen::VectorXd | calculateHomographyError (const Correspondence2D3D::Set &correspondences, const CorrespondenceSampler &correspondence_sampler) |
| Computes the error between a set of corresponding planar data points (points on a planar target and their corresponding locations in the image plane) This function creates a homography matrix which transforms data from one plane onto another plane (i.e. from the target plane to the image plane). This matrix is created using only a subset of the correspondences. The matrix is then used to estimate the location of all target points in the image plane. The error between these estimates and the actual values is a good measurement of how accurately a set of 2D camera measurements represent a calbration target with known geometry.
|
|
PnPNoiseStat | qualifyNoise2D (const std::vector< PnPProblem > ¶ms) |
| This function qualifies 2D sensor noise by comparing PnP results from images taken at same pose. Sensor noise can be understood by inspecting the returned standard deviations.
|
|
PnPNoiseStat | qualifyNoise3D (const std::vector< PnPProblem3D > ¶ms) |
| This function qualifies 3D sensor noise by comparing PnP results from scans taken at the same pose. Sensor noise can be understood by inspecting the returned standard deviations.
|
|
Eigen::Vector3d | computeLinePlaneIntersection (const Eigen::Vector3d &plane_normal, const Eigen::Vector3d &plane_pt, const Eigen::Vector3d &line, const Eigen::Vector3d &line_pt, const double epsilon=1.0e-6) |
| Computes the vector from an input point on a line to the point where the line intersects with the input plane See this link for more information.
|
|
Eigen::MatrixX3d | project3D (const Eigen::MatrixX2d &source, const Eigen::Isometry3d &source_to_plane, const Eigen::Matrix3d &k) |
| Projects a set of 2D source points (e.g., from an image observation) onto a 3D plane (e.g., a flat calibration target)
|
|
Eigen::ArrayXd | compute3DProjectionError (const Observation2D3D &obs, const CameraIntrinsics &intr, const Eigen::Isometry3d &camera_mount_to_camera, const Eigen::Isometry3d &target_mount_to_target) |
| Projects the 2D target features from an observation onto the 3D plane of the calibrated target and computes the difference between the projections and the known target features.
|
|
Eigen::ArrayXd | compute3DProjectionError (const Observation2D3D::Set &obs, const CameraIntrinsics &intr, const Eigen::Isometry3d &camera_mount_to_camera, const Eigen::Isometry3d &target_mount_to_target) |
| Projects the 2D target features from a set of observations onto the 3D plane of the calibrated target and computes the difference between the projections and the known target features.
|
|
std::tuple< double, double > | computeStats (const std::vector< double > &values) |
| Computes the mean and sample standard deviation statistics of a set of values.
|
|
QuaternionStats | computeQuaternionStats (const std::vector< Eigen::Quaterniond > &quaternions) |
| Computes the mean and standard deviation of a set of quaternions.
|
|
Eigen::Quaterniond | computeQuaternionMean (const std::vector< Eigen::Quaterniond > &orientations) |
| Computes the mean of a set of quaternions.
|
|
std::ostream & | operator<< (std::ostream &stream, const CameraIntrinsics &intr) |
|
template<typename FloatT > |
Eigen::Transform< FloatT, 3, Eigen::Isometry > | toIsometry (const Eigen::Vector3d &trans, const Eigen::Vector3d &euler_zyx) |
|
template<typename T > |
T | getMember (const YAML::Node &n, const std::string &key) |
|
void | writeTransform (std::stringstream &stream, const Eigen::Isometry3d &transform) |
|
std::ostream & | operator<< (std::ostream &stream, const CameraIntrinsicResult &result) |
|
CameraIntrinsicResult | optimize (const CameraIntrinsicProblem ¶ms) |
| Performs the camera intrinsic calibration.
|
|
template<typename T > |
void | transformPoint (const T angle_axis[3], const T tx[3], const T point[3], T t_point[3]) |
|
template<typename T > |
void | poseTransformPoint (const Pose6d &pose, const T point[3], T t_point[3]) |
|
template<typename T > |
void | projectPoint (const CameraIntrinsics &intr, const T point[3], T xy_image[2]) |
|
template<typename T > |
Eigen::Matrix< T, 2, 1 > | projectPoint (const CameraIntrinsics &intr, const Eigen::Matrix< T, 3, 1 > &point) |
|
template<typename T > |
VectorVector2< T > | projectPoints (const Eigen::Transform< T, 3, Eigen::Isometry > &camera_to_target, const CameraIntrinsics &intr, const VectorVector3< T > &target_points) |
|
template<typename T > |
void | projectPoints2 (const T *const camera_intr, const T *const pt_in_camera, T *pt_in_image) |
|
template<typename T > |
Eigen::Transform< T, 3, Eigen::Isometry > | toIsometry (const T *angle_axis_ptr, const T *translation_ptr) |
|
Pose6d | poseEigenToCal (const Eigen::Isometry3d &pose) |
|
Eigen::Isometry3d | poseCalToEigen (const Pose6d &pose) |
|
CovarianceResult | computeCovarianceResults (const Eigen::MatrixXd &cov_matrix, const std::vector< std::string > ¶meter_names) |
| Get the covariance results provided covariance matrix and parameter names.
|
|
Eigen::MatrixXd | computeCorrelationsFromCovariance (const Eigen::MatrixXd &covariance_matrix) |
| Given a covariance matrix, calculate the matrix of standard deviations and correlation coefficients.
|
|
CovarianceResult | computeCovariance (ceres::Problem &problem, const std::map< const double *, std::vector< int > > ¶m_masks=std::map< const double *, std::vector< int > >(), const ceres::Covariance::Options &options=DefaultCovarianceOptions()) |
| Compute all covariance results for a Ceres optimization problem. Labels results with generic names.
|
|
CovarianceResult | computeCovariance (ceres::Problem &problem, const std::vector< const double * > ¶meter_blocks, const std::map< const double *, std::vector< int > > ¶m_masks=std::map< const double *, std::vector< int > >(), const ceres::Covariance::Options &options=DefaultCovarianceOptions()) |
| Compute covariance results for the specified parameter blocks in a Ceres optimization problem. Labels results with generic names.
|
|
CovarianceResult | computeCovariance (ceres::Problem &problem, const std::map< const double *, std::vector< std::string > > ¶m_names, const std::map< const double *, std::vector< int > > ¶m_masks=std::map< const double *, std::vector< int > >(), const ceres::Covariance::Options &options=DefaultCovarianceOptions()) |
| Compute all covariance results for a Ceres optimization problem and label them with the provided names.
|
|
CovarianceResult | computeCovariance (ceres::Problem &problem, const std::vector< const double * > ¶meter_blocks, const std::map< const double *, std::vector< std::string > > ¶m_names, const std::map< const double *, std::vector< int > > ¶m_masks=std::map< const double *, std::vector< int > >(), const ceres::Covariance::Options &options=DefaultCovarianceOptions()) |
| Compute covariance results for specified parameter blocks in a Ceres optimization problem and label them with the provided names.
|
|
std::vector< int > | createDHMask (const Eigen::Array< bool, Eigen::Dynamic, 4 > &mask) |
| Create a mask of parameter indices from a matrix of boolean values The indices are calculated in column-wise order because Eigen stores it's values internally in column-wise order by default.
|
|
KinematicCalibrationResult | optimize (const KinematicCalibrationProblem2D3D &problem) |
| Performs the kinematic calibration optimization with 2D-3D correspondences.
|
|
KinematicCalibrationResult | optimize (const KinematicCalibrationProblemPose6D &problem, const double orientation_weight=100.0, const ceres::Solver::Options &options=ceres::Solver::Options()) |
| Performs the kinematic calibration optimization with 6D pose measurements.
|
|
std::ostream & | operator<< (std::ostream &stream, const ExtrinsicHandEyeResult &result) |
|
ExtrinsicHandEyeResult | optimize (const ExtrinsicHandEyeProblem2D3D ¶ms) |
|
ExtrinsicHandEyeResult | optimize (const ExtrinsicHandEyeProblem3D3D ¶ms) |
|
ExtrinsicMultiStaticCameraMovingTargetResult | optimize (const ExtrinsicMultiStaticCameraMovingTargetProblem ¶ms) |
|
ExtrinsicMultiStaticCameraOnlyResult | optimize (const ExtrinsicMultiStaticCameraOnlyProblem ¶ms) |
|
ExtrinsicMultiStaticCameraMovingTargetWristOnlyResult | optimize (const ExtrinsicMultiStaticCameraMovingTargetWristOnlyProblem ¶ms) |
|
void | addSubsetParameterization (ceres::Problem &problem, const std::map< const double *, std::vector< int > > ¶m_masks) |
| Adds subset parameterization for all parameter blocks for a given problem.
|
|
MultiCameraPnPResult | optimize (const MultiCameraPnPProblem ¶ms) |
|
std::ostream & | operator<< (std::ostream &stream, const PnPResult &result) |
|
PnPResult | optimize (const PnPProblem ¶ms) |
| Performs the PnP optimization.
|
|
PnPResult | optimize (const PnPProblem3D ¶ms) |
| Performs the PnP 3D optimization.
|
|
Eigen::Isometry3d | createTransform (const Eigen::Vector3d &t, const Eigen::Vector3d &aa) |
|
void | printLabels (const std::string &block_name, const std::vector< std::string > ¶m_labels) |
|
void | printOptimizationLabels (ceres::Problem &problem, const std::map< const double *, std::string > &names, const std::map< const double *, std::vector< std::string > > &labels, const std::map< const double *, std::vector< int > > &masks) |
|
bool | isPointVisible (const Pose6d &camera_to_camera_mount, const Pose6d &target_mount_to_target, const ExtrinsicHandEye2D3DCost *cost_fn) |
|
void | drawReprojections (const VectorVector2d &reprojections, int size, cv::Scalar color, cv::Mat &image) |
| Draws reprojected points onto an image.
|
|
cv::Mat | readImageOpenCV (const std::string &path) |
| Reads and image from file into an OpenCV matrix.
|
|
DetectionResult | findCircles (const cv::Mat &image, const double threshold, const CircleDetectorParams ¶ms) |
| Helper function for finding circles within an image This function thresholds the input image at the input intensity, applies filtering, and attempts to find circles from contours in the image.
|
|
std::vector< DetectionResult > | applyThresholds (const cv::Mat &image, const CircleDetectorParams ¶ms) |
| Applies various thresholds to the input image and attempts to find all circles within the images.
|
|
std::vector< cv::KeyPoint > | detectKeyPoints (const std::vector< std::vector< CircleDetector::Center > > &all_centers, const CircleDetectorParams ¶ms) |
| Given a list of potential circle centers acquired from differently threshold-ed images, this function matches circle centers that are close in position and radius, and performs a weighted average of their position and radius to create keypoints.
|
|
template<typename T > |
bool | isEqual (const T &a, const T &b, const T &tol=std::numeric_limits< T >::epsilon()) |
|
CircleFitResult | optimize (const CircleFitProblem ¶ms) |
| Function that solves the circle fit problem.
|
|