| 12 | using namespace std; |
| 13 | |
| 14 | struct SensorConfig { |
| 15 | vector<vector<int>> num_laser_channels_per_zone_; |
| 16 | vector<int> num_rings_for_each_zone_; |
| 17 | vector<int> num_sectors_for_each_zone_; |
| 18 | // Please refer to setPriorIdxesOfPatches |
| 19 | |
| 20 | int num_channels_; |
| 21 | float lower_fov_boundary_; |
| 22 | float vertical_angular_resolution_; |
| 23 | int horizontal_resolution_; |
| 24 | |
| 25 | /** |
| 26 | * Note: Only use-defined parameters are `num_laser_channels_per_zone_` and |
| 27 | * `num_sectors_for_each_zone_` |
| 28 | */ |
| 29 | explicit SensorConfig(const string &sensor_name) { |
| 30 | cout << "\033[1;32mTarget Sensor: " << sensor_name << "\033[0m" << endl; |
| 31 | if (sensor_name == "VLP-16") { // For Kimera-Multi dataset |
| 32 | // https://www.amtechs.co.jp/product/VLP-16-Puck.pdf |
| 33 | num_laser_channels_per_zone_ = {{2, 1}, {1, 1}, {1, 1}, {1}}; |
| 34 | num_sectors_for_each_zone_ = {16, 32, 56, 32}; |
| 35 | lower_fov_boundary_ = -15; |
| 36 | vertical_angular_resolution_ = 2.0; |
| 37 | // https://github.com/TixiaoShan/LIO-SAM/blob/master/config/params.yaml |
| 38 | horizontal_resolution_ = 1800; |
| 39 | num_channels_ = 16; |
| 40 | } else if (sensor_name == "HDL-32E") { |
| 41 | // https://velodynelidar.com/wp-content/uploads/2019/12/97-0038-Rev-N-97-0038-DATASHEETWEBHDL32E_Web.pdf |
| 42 | num_laser_channels_per_zone_ = {{10, 5}, {3, 2, 1, 1}, {1, 1, 1}, {1, 1, 1}}; |
| 43 | num_sectors_for_each_zone_ = {16, 32, 56, 32}; |
| 44 | lower_fov_boundary_ = -30.67; |
| 45 | vertical_angular_resolution_ = 1.33; |
| 46 | horizontal_resolution_ = 1080; |
| 47 | num_channels_ = 32; |
| 48 | } else if (sensor_name == "HDL-64E") { |
| 49 | num_laser_channels_per_zone_ = {{24, 12}, {4, 3, 2, 2}, {2, 2, 2, 1}, {1, 1, 1, 1, 1}}; |
| 50 | num_sectors_for_each_zone_ = {16, 32, 56, 32}; |
| 51 | lower_fov_boundary_ = -24.8; |
| 52 | vertical_angular_resolution_ = 0.4; |
| 53 | // https://github.com/TixiaoShan/LIO-SAM/blob/master/config/params.yaml |
| 54 | horizontal_resolution_ = 1800; |
| 55 | num_channels_ = 64; |
| 56 | } else if (sensor_name == "OS1-16") { // For NTU_VIRAL dataset |
| 57 | // https://www.dataspeedinc.com/app/uploads/2019/10/Ouster-OS1-Datasheet.pdf |
| 58 | // But not work in NTU-VIRAL dataset, haha |
| 59 | num_laser_channels_per_zone_ = {{2, 1}, {1, 1}, {1}, {1}}; |
| 60 | num_sectors_for_each_zone_ = {16, 32, 56, 32}; |
| 61 | lower_fov_boundary_ = -16.6; |
| 62 | vertical_angular_resolution_ = 2.075; |
| 63 | // There are three main options: 512, 1024, 2048 |
| 64 | // https://github.com/TixiaoShan/LIO-SAM/blob/master/config/params.yaml |
| 65 | horizontal_resolution_ = 1024; |
| 66 | num_channels_ = 16; |
| 67 | // It's not thorough, yet once the cloud points are sufficiently dense, |
| 68 | // then it's fine |
| 69 | } else if (sensor_name == "OS1-64" || sensor_name == "OS1-128") { |
| 70 | num_laser_channels_per_zone_ = {{12, 6}, {3, 2, 1, 1}, {1, 1, 1}, {1, 1, 1}}; |
| 71 | num_sectors_for_each_zone_ = {16, 32, 56, 32}; |