| 141 | } |
| 142 | |
| 143 | void cloudHandler(const faster_lio_sam::merge_cloud::ConstPtr& mergeLaserCloudMsg) |
| 144 | { |
| 145 | std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now(); |
| 146 | |
| 147 | if (!cachePointCloud(mergeLaserCloudMsg)) |
| 148 | return; |
| 149 | |
| 150 | // 获取当前点云持续时间的旋转平移 |
| 151 | // 旋转的角速度由imu积分得到,平移量由里程计得到 |
| 152 | if (!deskewInfo()) |
| 153 | return; |
| 154 | |
| 155 | // 点云整理索引、矫正畸变 |
| 156 | projectPointCloud(); |
| 157 | |
| 158 | // 发布预处理后的点云 |
| 159 | publishClouds(); |
| 160 | |
| 161 | resetParameters(); |
| 162 | |
| 163 | std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now(); |
| 164 | std::chrono::duration<double> time_used = std::chrono::duration_cast<std::chrono::duration<double>>(t2 - t1); |
| 165 | ROS_DEBUG("solve time cost = %f seconds.", time_used.count()); |
| 166 | } |
| 167 | |
| 168 | // 缓存点云消息,转换成pcl类型点云,记录时间戳,去除无效点 |
| 169 | bool cachePointCloud(const faster_lio_sam::merge_cloud::ConstPtr& laserCloudMsg) |
nothing calls this directly
no outgoing calls
no test coverage detected