@@ -70,26 +70,30 @@ void IntensityBasedValidator::objectCallback(
70
70
geometry_msgs::msg::TransformStamped transform_stamp;
71
71
try {
72
72
transform_stamp = tf_buffer_.lookupTransform (
73
- base_link_frame_id_, input_msg->header .frame_id , tf2_ros::fromMsg (input_msg->header .stamp ));
74
- // Eigen::Matrix4f affine_matrix =
75
- // tf2::transformToEigen(transform_stamp.transform).matrix().cast<float>();
73
+ input_msg->header .frame_id , base_link_frame_id_, tf2_ros::fromMsg (input_msg->header .stamp ));
76
74
} catch (tf2::TransformException & ex) {
77
75
RCLCPP_ERROR (get_logger (), " Failed to lookup transform: %s" , ex.what ());
78
76
return ;
79
77
}
80
- // TODO(badai-nguyen): transform validation range to map frame and use it to validate object
81
-
78
+ geometry_msgs::msg::Pose min_range;
79
+ min_range.position .x = min_x_;
80
+ min_range.position .y = min_y_;
81
+ geometry_msgs::msg::Pose max_pose;
82
+ max_pose.position .x = max_x_;
83
+ max_pose.position .y = max_y_;
84
+ auto min_ranged_transformed = tier4_autoware_utils::transformPose (min_range, transform_stamp);
85
+ auto max_range_transformed = tier4_autoware_utils::transformPose (max_pose, transform_stamp);
82
86
for (const auto & feature_object : input_msg->feature_objects ) {
83
- auto const & object = feature_object.object ;
84
- auto const & label = object.classification .front ().label ;
85
- auto const & feature = feature_object.feature ;
86
- auto const & cluster = feature.cluster ;
87
- auto existance_probability = object.existence_probability ;
88
- auto pose = object.kinematics .pose_with_covariance .pose ;
89
- auto pose_transformed = tier4_autoware_utils::transformPose (pose, transform_stamp);
90
- bool is_inside_validation_range =
91
- (min_x_ < pose_transformed. position . x && pose_transformed .position .x < max_x_) &&
92
- (min_y_ < pose_transformed. position .y && pose_transformed .position .y < max_y_) ;
87
+ const auto & object = feature_object.object ;
88
+ const auto & label = object.classification .front ().label ;
89
+ const auto & feature = feature_object.feature ;
90
+ const auto & cluster = feature.cluster ;
91
+ const auto existance_probability = object.existence_probability ;
92
+ const auto & position = object.kinematics .pose_with_covariance .pose . position ;
93
+ bool is_inside_validation_range = min_ranged_transformed. position . x < position. x &&
94
+ position. x < max_range_transformed. position . x &&
95
+ min_ranged_transformed .position .y < position. x &&
96
+ position.y < max_range_transformed .position .y ;
93
97
if (
94
98
filter_target_.isTarget (label) && is_inside_validation_range &&
95
99
!isValidatedCluster (cluster) && existance_probability < existence_probability_threshold_) {
@@ -112,7 +116,7 @@ bool IntensityBasedValidator::isValidatedCluster(const sensor_msgs::msg::PointCl
112
116
double mean_intensity = 0.0 ;
113
117
if (cluster.point_step < 16 ) {
114
118
RCLCPP_WARN (get_logger (), " Invalid point cloud data. point_step is less than 16." );
115
- return false ;
119
+ return true ;
116
120
}
117
121
for (sensor_msgs::PointCloud2ConstIterator<float > iter (cluster, " intensity" ); iter != iter.end ();
118
122
++iter) {
0 commit comments