25 double frame_timestamp,
const Eigen::Vector3d& local_to_global_offset,
26 Eigen::Affine3d& lidar2world_pose, Eigen::Affine3d& lidar2novatel_pose) {
28 if (!FLAGS_need_reserve_blind_cone || latest_object ==
nullptr) {
34 double time_diff = frame_timestamp - track_data->GetLatestObject().first;
35 if (latest_object->output_velocity.head<2>().norm() > 0.01 ||
37 || time_diff >= FLAGS_cone_reserve_time) {
42 Eigen::Vector3d world_center = Eigen::Vector3d(
43 latest_object->center(0) + local_to_global_offset(0),
44 latest_object->center(1) + local_to_global_offset(1),
45 latest_object->center(2) + local_to_global_offset(2));
48 Eigen::Vector3d lidar_center = Eigen::Vector3d(1, 0, 0);
49 lidar_center = lidar2world_pose.inverse() * world_center;
51 Eigen::Vector3d imu_center = Eigen::Vector3d(1, 0, 0);
52 imu_center = lidar2novatel_pose * lidar_center;
54 if (imu_center(0) <= FLAGS_cone_x_front &&
55 imu_center(0) >= FLAGS_cone_x_back &&
56 imu_center(1) <= FLAGS_cone_y_front &&
57 imu_center(1) >= FLAGS_cone_y_back) {
58 AINFO <<
"[JudgeBlindTrafficCone] track_id: " << track_data->track_id_
59 <<
" loc: (x) " << imu_center(0) <<
" (y) " << imu_center(1)
60 <<
" reserve. time_diff: " << time_diff;
bool JudgeBlindTrafficCone(const MlfTrackDataConstPtr &track_data, double frame_timestamp, const Eigen::Vector3d &local_to_global_offset, Eigen::Affine3d &lidar2world_pose, Eigen::Affine3d &lidar2novatel_pose)