Skip to content

Commit 7b83ce3

Browse files
committed
chore(intensity_based_validator): refactor
Signed-off-by: badai-nguyen <dai.nguyen@tier4.jp>
1 parent 220b34c commit 7b83ce3

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

perception/detected_object_validation/src/pointcloud_intensity_based_validator.cpp

+20-16
Original file line numberDiff line numberDiff line change
@@ -70,26 +70,30 @@ void IntensityBasedValidator::objectCallback(
7070
geometry_msgs::msg::TransformStamped transform_stamp;
7171
try {
7272
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));
7674
} catch (tf2::TransformException & ex) {
7775
RCLCPP_ERROR(get_logger(), "Failed to lookup transform: %s", ex.what());
7876
return;
7977
}
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);
8286
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;
9397
if (
9498
filter_target_.isTarget(label) && is_inside_validation_range &&
9599
!isValidatedCluster(cluster) && existance_probability < existence_probability_threshold_) {
@@ -112,7 +116,7 @@ bool IntensityBasedValidator::isValidatedCluster(const sensor_msgs::msg::PointCl
112116
double mean_intensity = 0.0;
113117
if (cluster.point_step < 16) {
114118
RCLCPP_WARN(get_logger(), "Invalid point cloud data. point_step is less than 16.");
115-
return false;
119+
return true;
116120
}
117121
for (sensor_msgs::PointCloud2ConstIterator<float> iter(cluster, "intensity"); iter != iter.end();
118122
++iter) {

0 commit comments

Comments
 (0)