diff --git a/calibrators/docs/images/tag_based_pnp_calibrator/lidarscan_on_tag.jpg b/calibrators/docs/images/tag_based_pnp_calibrator/lidar_scan_on_tag.jpg similarity index 100% rename from calibrators/docs/images/tag_based_pnp_calibrator/lidarscan_on_tag.jpg rename to calibrators/docs/images/tag_based_pnp_calibrator/lidar_scan_on_tag.jpg diff --git a/calibrators/docs/tutorials/marker_radar_lidar_calibrator.md b/calibrators/docs/tutorials/marker_radar_lidar_calibrator.md index f989e8f4..cb816617 100644 --- a/calibrators/docs/tutorials/marker_radar_lidar_calibrator.md +++ b/calibrators/docs/tutorials/marker_radar_lidar_calibrator.md @@ -13,7 +13,7 @@ Installation instructions can be found [here](../../../README.md). Please download the data (rosbag) from [here](https://drive.google.com/drive/folders/1G1n2AV47gbQFKQtlzbHJPeV10m5_uMMk). -The rosabg includes three different topics: `objects_raw`, `pointcloud_raw`, and `tf_static`. +The rosbag includes three different topics: `objects_raw`, `pointcloud_raw`, and `tf_static`. ## Environment preparation diff --git a/calibrators/mapping_based_calibrator/README.md b/calibrators/mapping_based_calibrator/README.md index bc9fc626..e4e4b836 100644 --- a/calibrators/mapping_based_calibrator/README.md +++ b/calibrators/mapping_based_calibrator/README.md @@ -104,28 +104,28 @@ The transformation between the lidar and the ground pose is calculated by utiliz ### Core Parameters -| Name | Type | Default Value | Description | -| ---------------------------------------- | --------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `calibrate_base_frame` | `bool` | `false` | Flag to optionally calibrate the base frame. (base_link). | -| `base_frame` | `std::string` | | Frame name of the base frame used in base-lidar calibration. | -| `map_frame` | `std::string` | | Frame name of the `map`. | -| `calibration_camera_optical_link_frames` | `std::vector` | | List of frame names for `calibration camera` . (currently not used) | -| `calibration_lidar_frames` | `std::vector` | | List of frame names for `calibration lidars`. | -| `calibration_camera_info_topics` | `std::vector` | | List of camera info topics for `calibration camera`. (currently not used) | -| `calibration_image_topics` | `std::vector` | | List of camera image topics for `calibration camera`. (currently not used) | -| `calibration_pointcloud_topics` | `std::vector` | | List of pointcloud topics for `calibration lidars`. | -| `mapping_lidar_frame` | `std::string` | | Frame name of the `mapping_lidar`. | -| `mapping_registrator` | `std::string` | | Name of the PCL registration algorithm used for mapping processes (NDT/GICP). | -| `mapping_verbose` | `bool` | `false` | Verbose output flag for mapping processes. | -| `use_rosbag` | `bool` | `true` | Flag to determine if data should be read from a rosbag file. | -| `mapping_max_frames` | `int` | `500` | Maximum number of frames to use for mapping, if the number of frames is larger than this value, the mapper stops and the calibration starts. | -| `local_map_num_keyframes` | `int` | `15` | Number of keyframes in the local map. | -| `dense_pointcloud_num_keyframes` | `int` | `10` | Dense poincloud for calibration is generated by integrating the pointcloud in the range of [keyframe_id - `dense_pointcloud_num_keyframes`, keyframe_id + `dense_pointcloud_num_keyframes`]. | -| `mapping_min_range` | `double` | `0.5` | Minimum range in meters of each lidar pointcloud for mapping. | -| `mapping_max_range` | `double` | `60.0` | Maximum range in meters of each lidar pointcloud for mapping. | -| `min_mapping_pointcloud_size` | `int` | `10000` | Minimum size of pointcloud required for mapping. | -| `min_calibration_pointcloud_size` | `int` | `500` | Minimum size of pointcloud that is necessary for estimating transformation. | -| `mapping_lost_timeout` | `double` | `1.0` | Sensor's timeout in seconds to consider the mapping process is failed. | +| Name | Type | Default Value | Description | +| ---------------------------------------- | --------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `calibrate_base_frame` | `bool` | `false` | Flag to optionally calibrate the base frame. (base_link). | +| `base_frame` | `std::string` | | Frame name of the base frame used in base-lidar calibration. | +| `map_frame` | `std::string` | | Frame name of the `map`. | +| `calibration_camera_optical_link_frames` | `std::vector` | | List of frame names for `calibration camera` . (currently not used) | +| `calibration_lidar_frames` | `std::vector` | | List of frame names for `calibration lidars`. | +| `calibration_camera_info_topics` | `std::vector` | | List of camera info topics for `calibration camera`. (currently not used) | +| `calibration_image_topics` | `std::vector` | | List of camera image topics for `calibration camera`. (currently not used) | +| `calibration_pointcloud_topics` | `std::vector` | | List of pointcloud topics for `calibration lidars`. | +| `mapping_lidar_frame` | `std::string` | | Frame name of the `mapping_lidar`. | +| `mapping_registrator` | `std::string` | | Name of the PCL registration algorithm used for mapping processes (NDT/GICP). | +| `mapping_verbose` | `bool` | `false` | Verbose output flag for mapping processes. | +| `use_rosbag` | `bool` | `true` | Flag to determine if data should be read from a rosbag file. | +| `mapping_max_frames` | `int` | `500` | Maximum number of frames to use for mapping, if the number of frames is larger than this value, the mapper stops and the calibration starts. | +| `local_map_num_keyframes` | `int` | `15` | Number of keyframes in the local map. | +| `dense_pointcloud_num_keyframes` | `int` | `10` | Dense pointcloud for calibration is generated by integrating the pointcloud in the range of [keyframe_id - `dense_pointcloud_num_keyframes`, keyframe_id + `dense_pointcloud_num_keyframes`]. | +| `mapping_min_range` | `double` | `0.5` | Minimum range in meters of each lidar pointcloud for mapping. | +| `mapping_max_range` | `double` | `60.0` | Maximum range in meters of each lidar pointcloud for mapping. | +| `min_mapping_pointcloud_size` | `int` | `10000` | Minimum size of pointcloud required for mapping. | +| `min_calibration_pointcloud_size` | `int` | `500` | Minimum size of pointcloud that is necessary for estimating transformation. | +| `mapping_lost_timeout` | `double` | `1.0` | Sensor's timeout in seconds to consider the mapping process is failed. | ### Mapping Parameters @@ -136,7 +136,7 @@ The transformation between the lidar and the ground pose is calculated by utiliz | `mapper_max_iterations` | `int` | `35` | Maximum number of iterations for `pclomp::NormalDistributionsTransform` and `pcl::GeneralizedIterativeClosestPoint` algorithm. | | `mapper_epsilon` | `double` | `0.01` | Epsilon value for `pclomp::NormalDistributionsTransform` and `pcl::GeneralizedIterativeClosestPoint` algorithm. | | `mapper_num_threads` | `int` | `8` | Number of threads to use for `pclomp::NormalDistributionsTransform` algorithm. | -| `mapper_max_correspondence_distance` | `double` | `0.1` | Maximum correspondence istance for `pcl::GeneralizedIterativeClosestPoint` algorithm. | +| `mapper_max_correspondence_distance` | `double` | `0.1` | Maximum correspondence distance for `pcl::GeneralizedIterativeClosestPoint` algorithm. | | `mapping_viz_leaf_size` | `double` | `0.15` | Leaf size in meters for `pcl::VoxelGrid` for voxelize the mapping pointcloud. | | `calibration_viz_leaf_size` | `double` | `0.15` | Leaf size in meters for `pcl::VoxelGridTriplets` for voxelize the calibration pointcloud. | | `leaf_size_input` | `double` | `0.1` | Leaf size in meters for `pcl::VoxelGrid` for voxelize the input pointcloud. | diff --git a/calibrators/tag_based_pnp_calibrator/README.md b/calibrators/tag_based_pnp_calibrator/README.md index 5eb37bc9..a6b291fa 100644 --- a/calibrators/tag_based_pnp_calibrator/README.md +++ b/calibrators/tag_based_pnp_calibrator/README.md @@ -98,9 +98,9 @@ Note that the lidartags we used have a size of 0.8 meters (edge size). This mean ## References -[1] Jiunn-Kai (Bruce) Huang, Shoutian Wang, Maani Ghaffari, and Jessy W. Grizzle, "LiDARTag: A Real-Time Fiducial Tag System for Point Clouds," in IEEE Robotics and Automation Letters. Volume: 6, Issue: 3, July 2021. +[1] Jiunn-Kai (Bruce) Huang, Shoutian Wang, Maani Ghaffari, and Jessy W. Grizzle, "LiDARTag: A Real-Time Fiducial Tag System for Point Clouds," in IEEE Robotics and Automation Letters. Volume: 6, Issue: 3, July 2021. -[2] G. Terzakis and M. Lourakis, "A Consistently Fast and Globally Optimal Solution to the Perspective-n-Point Problem" in ECCV 2020. Lecture Notes in Computer Science, vol 12346. +[2] G. Terzakis and M. Lourakis, "A Consistently Fast and Globally Optimal Solution to the Perspective-n-Point Problem" in ECCV 2020. Lecture Notes in Computer Science, vol 12346. ## Known issues/limitations @@ -114,7 +114,7 @@ Note that the lidartags we used have a size of 0.8 meters (edge size). This mean - During calibration, ensure that the lidar scan covers the tag, similar to the first example shown in the image below. However, if the tag resolution is low, as in the second example, and the lidar still detects the tag, it may still be acceptable but should be avoided when possible. The third example demonstrates a scenario where the lidar scan fails to cover the tag, resulting in the inability to detect the lidartag.

- lidarscan_on_tag + lidar_scan_on_tag

- It is highly recommended to place the tag perpendicular to the lidar as shown in the following image: