逐句详细解释:float TrackObjectDistance::ComputeLidarLidar( const SensorObjectConstPtr& fused_object, const SensorObjectPtr& sensor_object, const Eigen::Vector3d& ref_pos, int range) { double center_distance = (sensor_object->GetBaseObject()->center - fused_object->GetBaseObject()->center) .head(2) .norm(); if (center_distance > s_lidar2lidar_association_center_dist_threshold_) { ADEBUG << "center distance exceed lidar2lidar tight threshold: " << "center_dist@" << center_distance << ", " << "tight_threh@" << s_lidar2lidar_association_center_dist_threshold_; return (std::numeric_limits<float>::max)(); } float distance = ComputePolygonDistance3d(fused_object, sensor_object, ref_pos, range); ADEBUG << "ComputeLidarLidar distance: " << distance; return distance; }
时间: 2024-04-26 22:24:25 浏览: 128
Vue源码中要const _toStr = Object.prototype.toString的原因分析
这段代码定义了一个名为 TrackObjectDistance 的类中的 ComputeLidarLidar 函数,计算两个激光雷达传感器获取到的物体之间的距离。函数的输入参数包括一个名为 fused_object 的 SensorObjectConstPtr 类型的指针,一个名为 sensor_object 的 SensorObjectPtr 类型的指针,一个名为 ref_pos 的 Eigen::Vector3d 类型的参考位置,以及一个名为 range 的整数类型的参数。
函数首先计算两个物体中心点之间的距离,这里采用了 Eigen 库中的 head 和 norm 函数计算二维向量的欧几里得范数。如果两个中心点之间的距离大于一个预设的阈值 s_lidar2lidar_association_center_dist_threshold_,则函数会输出一条日志信息,表示两个物体之间的距离超过了阈值,函数返回 float 类型的正无穷大。
接着,函数调用 ComputePolygonDistance3d 函数计算两个物体之间的距离,该函数也是 TrackObjectDistance 类的成员函数,输入参数和 ComputeLidarLidar 函数类似。最后,函数输出一条日志信息,表示计算得到的两个物体之间的距离。函数返回一个 float 类型的数值,表示两个物体之间的距离。
阅读全文