Skip to content

Commit 08392db

Browse files
committed
fix(tracking_object_merger): fix quaternion implementation
Signed-off-by: Taekjin LEE <taekjin.lee@tier4.jp>
1 parent a959d33 commit 08392db

File tree

1 file changed

+9
-7
lines changed
  • perception/tracking_object_merger/src/utils

1 file changed

+9
-7
lines changed

perception/tracking_object_merger/src/utils/utils.cpp

+9-7
Original file line numberDiff line numberDiff line change
@@ -323,22 +323,24 @@ autoware_auto_perception_msgs::msg::TrackedObjectKinematics objectKinematicsVXMe
323323
autoware_auto_perception_msgs::msg::TrackedObjectKinematics output_kinematics;
324324
// copy main object at first
325325
output_kinematics = main_obj.kinematics;
326-
// if the main object is run opposite direction, flip the main object
326+
327+
// if the main object is run opposite direction, flip the main object
327328
if (output_kinematics.twist_with_covariance.twist.linear.x < 0.0) {
328329
// flip velocity
329330
output_kinematics.twist_with_covariance.twist.linear.x *= -1.0;
330331
output_kinematics.twist_with_covariance.twist.linear.y *= -1.0;
331-
// flip orientation, convert quaternion to have the opposite direction
332+
// flip orientation, rotate 180 deg
332333
const auto q = tf2::Quaternion(
333334
output_kinematics.pose_with_covariance.pose.orientation.x,
334335
output_kinematics.pose_with_covariance.pose.orientation.y,
335336
output_kinematics.pose_with_covariance.pose.orientation.z,
336337
output_kinematics.pose_with_covariance.pose.orientation.w);
337-
const auto q_flip = q * tf2::Quaternion(0, 0, 1, 0);
338-
output_kinematics.pose_with_covariance.pose.orientation.x = q_flip.x();
339-
output_kinematics.pose_with_covariance.pose.orientation.y = q_flip.y();
340-
output_kinematics.pose_with_covariance.pose.orientation.z = q_flip.z();
341-
output_kinematics.pose_with_covariance.pose.orientation.w = q_flip.w();
338+
const auto q_rot = tf2::Quaternion(tf2::Vector3(0, 0, 1), M_PI);
339+
const auto q_rotated = q * q_rot;
340+
output_kinematics.pose_with_covariance.pose.orientation.x = q_rotated.x();
341+
output_kinematics.pose_with_covariance.pose.orientation.y = q_rotated.y();
342+
output_kinematics.pose_with_covariance.pose.orientation.z = q_rotated.z();
343+
output_kinematics.pose_with_covariance.pose.orientation.w = q_rotated.w();
342344
}
343345

344346
auto sub_obj_ = sub_obj;

0 commit comments

Comments
 (0)