#include <dynamic_reconfigure/server.h>
#include <pcl/common/eigen.h>
#include <pcl/common/transforms.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/filters/passthrough.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/segmentation/sac_segmentation.h>
#include <pcl_conversions/pcl_conversions.h>
#include <ros/ros.h>
#include <sensor_msgs/PointCloud2.h>
#include <std_msgs/Empty.h>
#include <velo2cam_calibration/ClusterCentroids.h>
#include <velo2cam_calibration/LidarConfig.h>
#include <velo2cam_utils.h>
Go to the source code of this file.
Macros | |
#define | PCL_NO_PRECOMPILE |
Functions | |
void | callback (const PointCloud2::ConstPtr &laser_cloud) |
int | main (int argc, char **argv) |
void | param_callback (velo2cam_calibration::LidarConfig &config, uint32_t level) |
void | warmup_callback (const std_msgs::Empty::ConstPtr &msg) |
Variables | |
double | angle_threshold_ |
Eigen::Vector3f | axis_ |
ros::Publisher | centers_pub |
double | centroid_distance_max_ |
double | centroid_distance_min_ |
double | circle_radius_ |
double | circle_threshold_ |
int | clouds_proc_ = 0 |
int | clouds_used_ = 0 |
double | cluster_tolerance_ |
ros::Publisher | coeff_pub |
pcl::PointCloud< pcl::PointXYZ >::Ptr | cumulative_cloud |
ros::Publisher | cumulative_pub |
double | delta_height_circles_ |
double | delta_width_circles_ |
double | gradient_threshold_ |
int | min_centers_found_ |
double | min_cluster_factor_ |
double | passthrough_radius_max_ |
double | passthrough_radius_min_ |
ros::Publisher | pattern_pub |
double | plane_distance_inliers_ |
double | plane_threshold_ |
ros::Publisher | range_pub |
int | rings_count_ |
ros::Publisher | rotated_pattern_pub |
bool | save_to_file_ |
std::ofstream | savefile |
bool | skip_warmup_ |
double | target_radius_tolerance_ |
double | threshold_ |
bool | WARMUP_DONE = false |
#define PCL_NO_PRECOMPILE |
Definition at line 26 of file lidar_pattern.cpp.
void callback | ( | const PointCloud2::ConstPtr & | laser_cloud | ) |
Geometric consistency check At this point, circles' center candidates have been computed (found_centers). Now we need to select the set of 4 candidates that best fit the calibration target geometry. To that end, the following steps are followed: 1) Create a cloud with 4 points representing the exact geometry of the calibration target 2) For each possible set of 4 points: compute similarity score 3) Rotate back the candidates with the highest score to their original position in the cloud, and add them to cumulative cloud
Definition at line 74 of file lidar_pattern.cpp.
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 501 of file lidar_pattern.cpp.
void param_callback | ( | velo2cam_calibration::LidarConfig & | config, |
uint32_t | level | ||
) |
Definition at line 468 of file lidar_pattern.cpp.
void warmup_callback | ( | const std_msgs::Empty::ConstPtr & | msg | ) |
Definition at line 492 of file lidar_pattern.cpp.
double angle_threshold_ |
Definition at line 58 of file lidar_pattern.cpp.
Eigen::Vector3f axis_ |
Definition at line 57 of file lidar_pattern.cpp.
ros::Publisher centers_pub |
Definition at line 47 of file lidar_pattern.cpp.
double centroid_distance_max_ |
Definition at line 53 of file lidar_pattern.cpp.
double centroid_distance_min_ |
Definition at line 53 of file lidar_pattern.cpp.
double circle_radius_ |
Definition at line 53 of file lidar_pattern.cpp.
double circle_threshold_ |
Definition at line 65 of file lidar_pattern.cpp.
int clouds_proc_ = 0 |
Definition at line 60 of file lidar_pattern.cpp.
int clouds_used_ = 0 |
Definition at line 60 of file lidar_pattern.cpp.
double cluster_tolerance_ |
Definition at line 59 of file lidar_pattern.cpp.
ros::Publisher coeff_pub |
Definition at line 47 of file lidar_pattern.cpp.
pcl::PointCloud<pcl::PointXYZ>::Ptr cumulative_cloud |
Definition at line 49 of file lidar_pattern.cpp.
ros::Publisher cumulative_pub |
Definition at line 47 of file lidar_pattern.cpp.
double delta_height_circles_ |
Definition at line 55 of file lidar_pattern.cpp.
double delta_width_circles_ |
Definition at line 55 of file lidar_pattern.cpp.
double gradient_threshold_ |
Definition at line 63 of file lidar_pattern.cpp.
int min_centers_found_ |
Definition at line 61 of file lidar_pattern.cpp.
double min_cluster_factor_ |
Definition at line 67 of file lidar_pattern.cpp.
double passthrough_radius_max_ |
Definition at line 53 of file lidar_pattern.cpp.
double passthrough_radius_min_ |
Definition at line 53 of file lidar_pattern.cpp.
ros::Publisher pattern_pub |
Definition at line 47 of file lidar_pattern.cpp.
double plane_distance_inliers_ |
Definition at line 64 of file lidar_pattern.cpp.
double plane_threshold_ |
Definition at line 62 of file lidar_pattern.cpp.
ros::Publisher range_pub |
Definition at line 47 of file lidar_pattern.cpp.
int rings_count_ |
Definition at line 56 of file lidar_pattern.cpp.
ros::Publisher rotated_pattern_pub |
Definition at line 47 of file lidar_pattern.cpp.
bool save_to_file_ |
Definition at line 69 of file lidar_pattern.cpp.
std::ofstream savefile |
Definition at line 70 of file lidar_pattern.cpp.
bool skip_warmup_ |
Definition at line 68 of file lidar_pattern.cpp.
double target_radius_tolerance_ |
Definition at line 66 of file lidar_pattern.cpp.
double threshold_ |
Definition at line 52 of file lidar_pattern.cpp.
bool WARMUP_DONE = false |
Definition at line 72 of file lidar_pattern.cpp.