This commit is contained in:
Your Name 2025-01-14 09:30:25 +01:00
parent 14c43a5567
commit 5dd8b2c27b

View File

@ -3,17 +3,27 @@
import rospy import rospy
from nav_msgs.msg import Odometry from nav_msgs.msg import Odometry
import tf import tf
import math
def normalize_quaternion(x, y, z, w):
norm = math.sqrt(x**2 + y**2 + z**2 + w**2)
return x / norm, y / norm, z / norm, w / norm
def odom_callback(msg): def odom_callback(msg):
# Extract position and orientation from the odometry message # Extract position and orientation from the odometry message
position = msg.pose.pose.position position = msg.pose.pose.position
orientation = msg.pose.pose.orientation orientation = msg.pose.pose.orientation
# Normalize the quaternion
qx, qy, qz, qw = normalize_quaternion(
orientation.x, orientation.y, orientation.z, orientation.w
)
# Broadcast the transformation # Broadcast the transformation
br = tf.TransformBroadcaster() br = tf.TransformBroadcaster()
br.sendTransform( br.sendTransform(
(position.x, position.y, position.z), # Translation (position.x, position.y, position.z), # Translation
(orientation.x, orientation.y, orientation.z, orientation.w), # Rotation (quaternion) (qx, qy, qz, qw), # Normalized rotation (quaternion)
rospy.Time.now(), # Timestamp rospy.Time.now(), # Timestamp
msg.child_frame_id if msg.child_frame_id else "base_link", # Child frame ID msg.child_frame_id if msg.child_frame_id else "base_link", # Child frame ID
msg.header.frame_id if msg.header.frame_id else "odom" # Parent frame ID msg.header.frame_id if msg.header.frame_id else "odom" # Parent frame ID