15
15
#include " object_association_merger/node.hpp"
16
16
17
17
#include " object_association_merger/utils/utils.hpp"
18
+ #include " perception_utils/perception_utils.hpp"
18
19
#include " tier4_autoware_utils/tier4_autoware_utils.hpp"
19
20
20
21
#include < boost/optional.hpp>
@@ -30,53 +31,6 @@ using Label = autoware_auto_perception_msgs::msg::ObjectClassification;
30
31
31
32
namespace
32
33
{
33
- boost::optional<geometry_msgs::msg::Transform> getTransform (
34
- const tf2_ros::Buffer & tf_buffer, const std::string & source_frame_id,
35
- const std::string & target_frame_id, const rclcpp::Time & time)
36
- {
37
- try {
38
- geometry_msgs::msg::TransformStamped self_transform_stamped;
39
- self_transform_stamped = tf_buffer.lookupTransform (
40
- /* target*/ target_frame_id, /* src*/ source_frame_id, time ,
41
- rclcpp::Duration::from_seconds (0.5 ));
42
- return self_transform_stamped.transform ;
43
- } catch (tf2::TransformException & ex) {
44
- RCLCPP_WARN_STREAM (rclcpp::get_logger (" object_association_merger" ), ex.what ());
45
- return boost::none;
46
- }
47
- }
48
-
49
- bool transformDetectedObjects (
50
- const autoware_auto_perception_msgs::msg::DetectedObjects & input_msg,
51
- const std::string & target_frame_id, const tf2_ros::Buffer & tf_buffer,
52
- autoware_auto_perception_msgs::msg::DetectedObjects & output_msg)
53
- {
54
- output_msg = input_msg;
55
-
56
- /* transform to world coordinate */
57
- if (input_msg.header .frame_id != target_frame_id) {
58
- output_msg.header .frame_id = target_frame_id;
59
- tf2::Transform tf_target2objects_world;
60
- tf2::Transform tf_target2objects;
61
- tf2::Transform tf_objects_world2objects;
62
- {
63
- const auto ros_target2objects_world =
64
- getTransform (tf_buffer, input_msg.header .frame_id , target_frame_id, input_msg.header .stamp );
65
- if (!ros_target2objects_world) {
66
- return false ;
67
- }
68
- tf2::fromMsg (*ros_target2objects_world, tf_target2objects_world);
69
- }
70
- for (auto & object : output_msg.objects ) {
71
- tf2::fromMsg (object.kinematics .pose_with_covariance .pose , tf_objects_world2objects);
72
- tf_target2objects = tf_target2objects_world * tf_objects_world2objects;
73
- tf2::toMsg (tf_target2objects, object.kinematics .pose_with_covariance .pose );
74
- // TODO(yukkysaito) transform covariance
75
- }
76
- }
77
- return true ;
78
- }
79
-
80
34
bool isUnknownObjectOverlapped (
81
35
const autoware_auto_perception_msgs::msg::DetectedObject & unknown_object,
82
36
const autoware_auto_perception_msgs::msg::DetectedObject & known_object,
@@ -87,8 +41,8 @@ bool isUnknownObjectOverlapped(
87
41
unknown_object.kinematics .pose_with_covariance .pose ,
88
42
known_object.kinematics .pose_with_covariance .pose );
89
43
if (sq_distance_threshold < sq_distance) return false ;
90
- const auto precision = utils ::get2dPrecision (unknown_object, known_object);
91
- const auto recall = utils ::get2dRecall (unknown_object, known_object);
44
+ const auto precision = perception_utils ::get2dPrecision (unknown_object, known_object);
45
+ const auto recall = perception_utils ::get2dRecall (unknown_object, known_object);
92
46
return precision > precision_threshold || recall > recall_threshold;
93
47
}
94
48
} // namespace
@@ -140,9 +94,9 @@ void ObjectAssociationMergerNode::objectsCallback(
140
94
/* transform to base_link coordinate */
141
95
autoware_auto_perception_msgs::msg::DetectedObjects transformed_objects0, transformed_objects1;
142
96
if (
143
- !transformDetectedObjects (
97
+ !perception_utils::transformObjects (
144
98
*input_objects0_msg, base_link_frame_id_, tf_buffer_, transformed_objects0) ||
145
- !transformDetectedObjects (
99
+ !perception_utils::transformObjects (
146
100
*input_objects1_msg, base_link_frame_id_, tf_buffer_, transformed_objects1)) {
147
101
return ;
148
102
}
@@ -185,7 +139,7 @@ void ObjectAssociationMergerNode::objectsCallback(
185
139
unknown_objects.reserve (output_msg.objects .size ());
186
140
known_objects.reserve (output_msg.objects .size ());
187
141
for (const auto & object : output_msg.objects ) {
188
- if (utils ::getHighestProbLabel (object.classification ) == Label::UNKNOWN) {
142
+ if (perception_utils ::getHighestProbLabel (object.classification ) == Label::UNKNOWN) {
189
143
unknown_objects.push_back (object);
190
144
} else {
191
145
known_objects.push_back (object);
0 commit comments